材质入门前置知识
色彩
我们每天都在接触颜色,但你有没有想过,为什么太阳光是白色的,而树叶是绿色的? 今天,我们就从光的传播到屏幕成像,来揭开色彩的奥秘,同时介绍sRGB、PBR、纹理贴图、着色器等游戏和图形渲染中常见的重要概念。
光的奥秘:太阳光是一个“调色盘”
太阳光,或者说我们日常看到的光,其实是由不同颜色的光组成的“混合光”,这种光在物理学上被称为 可见光。
光通常指的是人类眼睛可以见到的电磁波(可见光),视觉就是对于可见光的知觉。可见光只是电磁波谱上的某一段频谱,一般是定义为波长介于400至700纳米(nm)之间的电磁波,即波长比紫外线长,比红外线短的电磁波。有些资料来源定义的可见光的波长范围也有不同,较窄的有介于420至680nm,较宽的有介于380至800nm

光的颜色取决于波长:
- 红光的波长最长,所以它能穿透雾气(比如红色的日落)。
- 蓝光的波长最短,容易被散射,所以天空是蓝色的。
- 绿光的波长介于两者之间。
为什么树叶是绿色的?
我们看到的颜色,其实是物体对光的“筛选”结果! 以树叶为例:
🌿 树叶吸收了红光和蓝光,只反射了绿光,所以我们看到的就是绿色。
如果一个物体看起来是红色的,那就是因为它吸收了蓝光和绿光,只反射了红光。
如果它是黑色的,那说明它几乎吸收了所有的光;如果是白色的,那说明它几乎把所有光都反射了!
大脑是如何感知颜色的?
我们的眼睛就像一个光感应摄像头,它内部有三种“颜色传感器”(视锥细胞),分别对红、绿、蓝三种颜色敏感。
📡 眼睛接收到光信号后,会把它转化为电信号,传给大脑,大脑再把这些信息“翻译”成颜色,这就是我们看到色彩的原理!
sRGB
现实中的光是连续变化的,那么屏幕上的颜色是如何显示的?
屏幕上的颜色是通过像素点的数值表示的。为了让不同设备显示一致的颜色,人们引入了 sRGB(标准红绿蓝色彩空间)。
sRGB 是一种色彩标准,它定义了颜色在屏幕上的显示方式,确保相同的数值在不同的显示设备上能产生一致的视觉效果。
🖥 如果没有 sRGB 这样的标准,不同的显示器可能会因为色彩校准问题而显示出不同的颜色!
RGB
如果你用过 Photoshop 或者其他绘图软件,一定见过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代表白色,中间的值对应不同强度的颜色。这种表示方法用于确保在渲染过程中进行精确的线性颜色计算,这对于光照和颜色混合至关重要。

值得注意的是,虽然在虚幻引擎内部处理时使用的是(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 上运行,渲染出屏幕上的画面。