Skip to content

3D 场景

3D 场景中的三要素指的是场景、相机、光源。更进一步地,场景主要关注的是场景的各种物体表面的材质属性,相机就是屏幕(屏幕视角在 3D 场景中充当相机),光源是场景中定义的灯光或者自发光物体。

着色任务基于屏幕上的每一个像素点进行计算,像素也称为片段。由模型在 3D 场景中向屏幕(相机)进行投影变换后,再经过光栅化操作之后获得。

光源

光源分为三类。点光源,平行光和环境光。

光源衰减

点光源和聚光灯需要计算距离衰减,物理准确的衰减遵循平方反比定律 I=I0/(d2),其中 d 是光源到着色点的距离。工程实践中常用 I=I0/(kc+kld+kqd2) 的三项式衰减,通过调整常数项 kc、线性项 kl 和二次项 kq 来控制衰减曲线,避免近距离时亮度过高。聚光灯额外需要计算方向与聚光灯轴向的夹角,使用 smoothstep 函数在半影角和全影角之间实现平滑过渡。

环境光遮蔽

环境光常被简化为常数项,但这导致物体在阴影中完全扁平。环境光遮蔽(AO)通过考虑几何遮挡关系来计算环境光强度,弯曲面片的凹陷处接收到的环境光较少。屏幕空间环境光遮蔽(SSAO)在深度缓冲基础上采样周围像素来估计遮蔽程度,预计算的 AO 贴图则存储在顶点或纹理中。