(一)IMR渲染:

在图元组装和几何裁剪之间,还存在一个可选的阶段:
- 几何着色器 (Geometry Shader): 它可以接收一个完整的图元作为输入(例如一个三角形),并可以生成零个、一个或多个新的图元作为输出。它在现代管线中不是必须的,但提供额外的几何处理能力。
(二)TBR渲染

在 TBDR 中,光栅化操作并没有紧随视口变换之后立即进行。 流程在这里被中断,所有图元的几何信息被存储起来。

不过,有许多情况会影响硬件延迟片元着色的顺利进行:
- 半透明:会打断HSR,会强行渲染出当前所有最近片元,以便于混合。混合完后,如果紧接着又是不透明物体,则继续进行HSR。所以优化方案为:把半透明物体放最后画。
- Alpha Test/Discard:会先将它当作不透明物体经过HSR,如果未通过深度测试无事发生;如果通过深度测试那就运行片元着色器,若最终被discard,那么就会回过头更新HSR。
TBDR 的流程可以总结为:
- 分块存储 (Phase A $\rightarrow$ Storage): 完成几何体处理后,将数据存储在 Tile 列表中,不立即光栅化。
- 延迟光栅化 (Deferred Rasterization): 光栅化和着色被推迟到逐 Tile 渲染阶段。
- 批量写入 (Batch Write): 最终的颜色数据只在 Tile 渲染完成后才写入主存。
TBDR 和 IMR 在 “光栅化” 之后的部分有着本质的区别,这也是 TBDR 功耗低、效率高的原因。