材质入门前置知识

色彩

我们每天都在接触颜色,但你有没有想过,为什么太阳光是白色的,而树叶是绿色的? 今天,我们就从光的传播到屏幕成像,来揭开色彩的奥秘,同时介绍sRGB、PBR、纹理贴图、着色器等游戏和图形渲染中常见的重要概念。


光的奥秘:太阳光是一个“调色盘”

太阳光,或者说我们日常看到的光,其实是由不同颜色的光组成的“混合光”,这种光在物理学上被称为 可见光

通常指的是人类眼睛可以见到的电磁波(可见光),视觉就是对于可见光的知觉。可见光只是电磁波谱上的某一段频谱,一般是定义为波长介于400至700纳米(nm)之间的电磁波,即波长比紫外线长,比红外线短的电磁波。有些资料来源定义的可见光的波长范围也有不同,较窄的有介于420至680nm,较宽的有介于380至800nm

sun

光的颜色取决于波长:

  • 红光的波长最长,所以它能穿透雾气(比如红色的日落)。
  • 蓝光的波长最短,容易被散射,所以天空是蓝色的。
  • 绿光的波长介于两者之间

为什么树叶是绿色的?

我们看到的颜色,其实是物体对光的“筛选”结果! 以树叶为例:

🌿 树叶吸收了红光和蓝光,只反射了绿光,所以我们看到的就是绿色。

如果一个物体看起来是红色的,那就是因为它吸收了蓝光和绿光,只反射了红光。

如果它是黑色的,那说明它几乎吸收了所有的光;如果是白色的,那说明它几乎把所有光都反射了!


大脑是如何感知颜色的?

我们的眼睛就像一个光感应摄像头,它内部有三种“颜色传感器”(视锥细胞),分别对红、绿、蓝三种颜色敏感。

📡 眼睛接收到光信号后,会把它转化为电信号,传给大脑,大脑再把这些信息“翻译”成颜色,这就是我们看到色彩的原理!


sRGB

现实中的光是连续变化的,那么屏幕上的颜色是如何显示的?

屏幕上的颜色是通过像素点的数值表示的。为了让不同设备显示一致的颜色,人们引入了 sRGB(标准红绿蓝色彩空间)

sRGB 是一种色彩标准,它定义了颜色在屏幕上的显示方式,确保相同的数值在不同的显示设备上能产生一致的视觉效果。

🖥 如果没有 sRGB 这样的标准,不同的显示器可能会因为色彩校准问题而显示出不同的颜色!


RGB

如果你用过 Photoshop 或者其他绘图软件,一定见过RGB 这个概念。那么,电脑又是如何表示颜色的呢?

rgb

🟥 R(Red)红色 + 🟩 G(Green)绿色 + 🟦 B(Blue)蓝色 = 组成所有颜色

电脑通过调整红、绿、蓝三种颜色的亮度,就能混合出各种色彩。

🎨 每种颜色的亮度范围是 0 到 255,比如:

  • (255, 0, 0) → 纯红色
  • (0, 255, 0) → 纯绿色
  • (0, 0, 255) → 纯蓝色
  • (255, 255, 255) → 纯白色
  • (0, 0, 0) → 纯黑色

通道:拆解颜色的“单色照片”

在图像处理中,每个颜色通道(R、G、B)都可以单独拆出来,如果你只看红色通道,画面就会变成一张灰度图,亮度越高,表示该部分的红色越强。

简而言之,比如你在 R 通道下,看到显示纯白的地方,就表示这个地方的红色是最红的、最鲜艳、最亮的、如果是纯黑的地方,表示这个地方红色不红,不亮,因为没有红色的信息。同理另外两个通道也是一样。

红色通道

Alpha通道

在图像编辑软件中,每个像素不仅包含红、绿、蓝(RGB)颜色信息,还可能包含一个额外的 Alpha 通道信息。

Alpha 通道是一种特殊的通道,用于存储图像中的透明度信息。也是用一个值表示,这个值表示该像素的透明程度。

Alpha 值范围通常从0到1(或0%到100%),其中0表示完全透明,1表示完全不透明。

Alpha 通道可以用来创建复杂的透明效果,尤其是在处理半透明物体如烟雾、玻璃时非常有用。

游戏中的玻璃材质、烟雾效果,甚至是人物的头发,都离不开 Alpha 通道。

虚幻引擎中的 RGB

在虚幻引擎中,RGB通道的范围是(0.0 ~ 1.0)。这个范围表示的是颜色的线性强度,其中0.0代表黑色,1.0代表白色,中间的值对应不同强度的颜色。这种表示方法用于确保在渲染过程中进行精确的线性颜色计算,这对于光照和颜色混合至关重要。

虚幻引擎中的 RGB

值得注意的是,虽然在虚幻引擎内部处理时使用的是(0.0 ~ 1.0)的浮点范围,但在处理图像文件或与外部应用交互时,常见的RGB值范围是(0~255),这通常指的是8位色深的色彩表示,其中每个通道的整数值从0到255变化。在导入纹理到虚幻引擎时,如果纹理是基于sRGB标准的,虚幻会通过sRGB到线性空间的转换来处理这些值,确保在引擎内部以线性方式正确地表示颜色,从而得到准确的视觉效果。


纹理贴图:让 3D 模型拥有细节

在 3D 游戏或渲染中,光滑的几何模型本身是没有任何颜色或细节的,所有的表面纹理、细节都是通过 纹理贴图(Texture Maps) 赋予的。

纹理贴图

🎭 纹理贴图就像是给 3D 物体穿上“皮肤”,让它看起来像石头、木头、金属或布料。

📜 常见的纹理贴图类型

  • 颜色贴图(Base Color / Albedo) → 物体表面的颜色信息。
  • 法线贴图(Normal Map) → 用来模拟物体表面的凹凸细节。
  • 粗糙度贴图(Roughness Map) → 控制物体表面的光滑程度。
  • 金属度贴图(Metallic Map) → 决定表面是否具有金属光泽。

PBR

现代 3D 游戏和影视特效之所以越来越真实,是因为使用了 PBR(基于物理渲染,Physically Based Rendering)

PBR 的专业概念

PBR,全称 Physically Based Rendering,即基于物理的渲染,是一种先进的计算机图形渲染技术。它模拟光线与物体表面交互的物理过程,以创建更加逼真、统一且符合现实世界物理法则的视觉效果。PBR考虑了材质的物理属性,如表面粗糙度、金属度、反射率等,来决定光线如何被吸收、散射或反射,从而在不同光照条件下都能保持一致和真实的外观。

PBR 主要基于能量守恒原理和微表面理论,简单来说,就是光照在物体表面时,会被吸收、反射或散射,而这些光学行为是可以用公式计算的。

PBR 依赖多个核心贴图:

  • Base Color / Albedo(基础颜色贴图) —— 物体的颜色信息。
  • Metallic(金属度贴图) —— 控制物体是金属还是非金属。
  • Roughness(粗糙度贴图) —— 控制表面的光滑程度。
  • Normal Map(法线贴图) —— 让平面物体看起来有凹凸细节。
  • AO(环境光遮蔽) —— 提供阴影信息,增强立体感。

这些贴图结合光照计算,使得 PBR 在不同光线环境下都能保持真实感,无论是白天、黑夜、室内还是户外,都能自适应光线变化!


着色器 & 渲染:让 3D 画面最终呈现

PBR 材质最终会经过 着色器(Shader) 进行计算,决定物体在屏幕上如何呈现。

着色器是什么?

想象一下你在画画,你需要给一幅画添加光影效果,让画面看起来更有立体感和真实感。在计算机图形学里,有一个类似的概念叫做“着色器”。着色器就像是一套特殊的颜料和刷子,专门用来给数字图像添加光照、亮度、颜色等各种效果。 最初,着色器主要用于处理这些基本的效果,但现在它的应用范围越来越广。你可以用它来做电脑动画里的特效,做电影后期的各种滤镜效果,甚至是做一些跟绘画完全没有关系的事情!

为什么要用着色器?

使用着色器的好处是可以让你有更多的创作自由。以前的计算机只能按照固定的规则来处理图像,现在有了着色器,程序员可以用自己写的代码告诉计算机怎么去处理每一个细节。 大部分时候,我们会在一种叫 GPU(显卡)的小机器上来运行这些着色器程序。这是因为GPU特别擅长同时处理许多小任务,非常适合这种精细的操作。 通过着色器,我们可以改变图像中的每一个像素的颜色、位置和其他属性。例如,可以让某个地方变得更亮或更暗,增加阴影效果,或者把一个场景变成黑白照片等等。

着色器能做什么?

着色器不仅限于简单的光照效果,在很多领域都非常有用。

以下是一些例子:

  • 电影后期处理:可以在电影上映前调整每一帧的画面,让它看起来更好看。
  • 电脑游戏:在游戏中创造各种酷炫的特效,比如爆炸、火焰、水波纹等。
  • 电视节目:在拍摄过程中使用绿色背景(绿幕)或蓝色背景(蓝幕),然后用着色器去掉不需要的部分,只保留演员或其他主体。

具体来说,着色器可以帮助你做到以下事情:

  • 调整图片的颜色、明暗、鲜艳度。
  • 创建模糊效果,让人物变得虚化。
  • 增加高光部分,突出亮点。
  • 模拟灯光照射下的物体,使其显得更有质感。
  • 实现焦点外景深效果,让前景清晰而背景模糊。
  • 制作卡通风格的渲染,让角色线条分明。
  • 分离色调,创造出独特的视觉效果。
  • 引入镜头畸变,模仿实际摄影机的效果。
  • 使用凹凸贴图,让平面看起来像是有起伏的。
  • 进行色键操作,去除特定颜色的背景,留下其他元素。

简而言之,着色器是一段运行在 GPU 上的程序,用于在图像中添加光照、颜色和其他特殊效果,使数字图像看起来更加真实和美观。

🎥 渲染(Rendering) 就是计算这些着色器的过程,把 3D 场景转换成 2D 画面,最终显示在屏幕上。


总结

从光的本质到 3D 渲染,色彩的表现经历了多个关键步骤
1️⃣ 光线包含各种颜色,不同波长对应不同的颜色
2️⃣ 物体会“筛选”光,反射特定颜色,让我们看到不同的色彩
3️⃣ 电脑用 sRGB 确保色彩一致性,用 RGB 颜色模型混合显示色彩
4️⃣ PBR 通过纹理贴图和物理光照计算,让 3D 物体在不同环境下都保持真实感
5️⃣ 最终,着色器在 GPU 上运行,渲染出屏幕上的画面


材质入门前置知识
https://god23bin.github.io/unreal-engine-blog/2025/03/16/unreal-engine/初学者/材质入门前置知识/
作者
god23bin
发布于
2025年3月16日
许可协议