最常见的渲染,所谓的前向渲染,就是将物件串成一个队列,一个接一个的进行渲染。可以以光源为主循环也可以物体为主循环。
缺点是当物体或光源较多时效率低下,且会有比较多的重复计算。
将渲染分为两个阶段,第一阶段处理光照计算需要的数据,并将他们储存到GBuffer中,这些数据包括片元位置、漫反射贴图,法线贴图,镜面反射强度图等。
其优点是物体和光源较多时效率高,缺点是需要的带宽较大,不适用MSAA,难以处理透明混合。
由于带宽限制,移动端很难实现常规的延迟渲染,一种解决办法是将屏幕划分为多个区域,分别进行渲染。
将屏幕空间划分为多块,对每个光源计算它能覆盖的范围,如果对某块屏幕区域无影响则将其剔除。
Forward+是在屏幕空间中划分Tile进行光源过滤来降低消耗的,这个划分是在XY 2D平面进行的,而Clustered Forward Rendering则是在这个基础上更进一步,在Depth方向上也同样进行一次划分,进一步缩小光照的影响范围,降低光照计算的浪费。因为划分的结果是3D的Frustum,每个Frustum被称为一个Cluster,这就是Cluster的由来。