原文
- 正向着色(Forward Shading):遍历光源->接着遍历物体->光照和物体几何数据进行计算。
- 主要业务逻辑
- 获取灯光位置的深度值的贴图
- 把深度值贴图和灯光位置传入mesh中
- 根据灯光的位置获取所有顶点的深度值,如果改顶点位置大于深度值位置,颜色变暗
foreach light {
foreach mesh {
if (light volume intersects mesh) {
render using this material/light shader;
accumulate in framebuffer using additive blending;
}
}
}
- 延迟着色(Deferred Shading)就是将计算量大的渲染光照部分延迟(Defer)到后期进行处理
- 几何处理阶段(Geometry Pass) 是将对象的各种几何信息(位置/颜色/法向)进行渲染并储存在叫做G缓冲(G-buffer)的纹理中。
- 光照处理阶段(Lighting Pass) 是对G缓冲中的几何数据的每一个片段进行光照计算。光照处理阶段不是直接将每个对象从顶点着色器带到片段着色器,而是对G缓冲中的每个像素进行迭代,从对应的G缓冲纹理获取输入变量。
foreach visible mesh {
write material properties to g-buffer;
}
foreach light {
compute light by reading g-buffer;
accumulate in framebuffer;
}