GPU-Driven Geometry pipeline - Nanite
传统 Pipeline 设置 render state 费时费力
GPU Driven
整个场景都放到 GPU 里
刺客信条大革命
让 Mesh 由 Cluster 组成,可以尽可能的裁剪掉不可见的三角形
GPU Instance Culling
判断 Cluster 和 Chunk 的可见性
compute shader 里计算几何点,成为一个超大的 VertexBuffer
Index Buffer Compaction
要保证几何绘制顺序,不然会 z fighting 不然会闪烁
Occlusion Culling
Occlusion Depth Generation
Two-Phase Occlusion Culling
先用上一帧的 z cull 当前所有物体生成粗略的当前 z,
再用当前 z 测试当前所有物体,生成真正的当前 z
Crazy Stressing Cases
25w 个小行星
Fast Occlusion for Shadow
在渲染 shadow map 时候需要尽量少的渲染物体
也是使用 z buffer 剔除物体
Camera Depth Reprojection for Shadow Culling
Visibility Buffer
Deferred Shading, G-Buffer
所有可见的几何信息存在 Screen Space buffer 里
对于每个 Screen Space pixel,进行着色
会产生很多屏幕这么大的中间数据
Challenges of Complex Scene
在街道场景中,距离深度图较远的物体可能可以在做 shadow map 时被 cull 掉
Filling 先画物体 index buffer
shader 从 CPU 里的场景所有网格数据,拿到对应三角型的信息并处理
Visibility Buffer + Deferred Shading
场景中的物体越细碎,visibility buffer 效果越好
visibility buffer 对于单个物体的绘制代价小,缓存友好,
压力在最终着色时的根据像素visibility buffer从重心坐标插值出当前顶点数据时的计算量
最后更新于