为什么同样的几何模型,会呈现截然不同的表面外观?
第五章完成了观察与投影;现在保持相机与几何不变,只加入光照计算。
固定模型、相机、投影方式与材质,把光源从左侧移到右侧。
部分光能被材质吸收。
光向多个方向散射。
能量集中在接近反射方向的区域。
局部光照
全局光照
用场景中近似均匀的照明项,模拟无法逐一追踪的环境贡献。
高光镜面表面:镜面反射(集中高光)
粗糙哑光表面:漫反射散射(柔和明暗)
透明介质表面:透射与折射(内部通透)
在局部光照计算中,光源由类型、几何向量与 RGB 辐射强度三要素共同定义:
平行光 / 点光源 / 聚光灯
决定光线传播的几何分布与入射角范围。
\(\mathbf{l} = \text{normalize}(P_L - P)\)
由表面点指向光源位置,参与余弦点乘计算。
\(I = (I_r, I_g, I_b)\)
光谱能量向量,决定光源冷暖颜色与发光功率。
uniform vec3/vec4 形式传入着色器,是外部环境的物理输入。
物体表面将入射光能量解构为三项反射分量,分别控制底色、立体感与高光:
基础明度 · 消除死黑
对无方向环境光的漫射反射,维持背阴处底色。
固有色 · 朗伯立体感
各向同性散射,由法线与光线夹角塑造平滑明暗。
高光耀斑 · 光滑度 n
\(k_s\) 控亮度,指数 \(n\)
控光斑聚拢锐利度(金属感)。
漫反射散射向全空间各向同性,而镜面高光具有高度方向性,唯有视线对准才可见:
\(\mathbf{v} = \text{normalize}(\text{Eye} - P)\)
由表面点指向相机视点,确定眼睛观察方向。
\(I_{\text{spec}} \propto (\mathbf{r}\cdot\mathbf{v})^n =
\cos^n\alpha\)
\(\mathbf{v}\) 贴近反射方向 \(\mathbf{r}\) 见强高光;视点移动,高光位移。
\(\mathbf{n}\)、\(\mathbf{l}\)、\(\mathbf{v}\) 空间统一
所有向量必须在世界或相机同一标架下完成点积运算。
固定球体与器械模型及相机视角,独立调控光源与材质属性,实时观察光照分量与明暗高光响应。
#version 300 es
uniform vec3 uLightColor;
uniform vec3 uLightPosition;
uniform vec3 uMaterialDiffuse;
颜色、位置或方向。
各类反射系数。
位置与法向量。
一个骨骼或医疗器械三维模型在不同光照下会呈现不同的形体线索。