所以为了避免刚才提到的这些问题,Nanite在减面的时候,会首先把几个临近的三角形簇放到一起形成一个簇组,英文叫cluster group,直接翻译成中文就是簇-组-嗯。。簇组~,每一个簇组和其他簇组之间的边界是锁定的。然后减面的时候会把每个簇组内几个簇包含的三角形数量减去一半,之后再把剩下的一半数量的三角形,重新...
可以简单理解为 MainPass 是遮挡剔除的主力,它主要利用上一帧的数据,但上一帧数据毕竟不是当前帧数据,有时候会遗漏 Cluster。而 PostPass 是辅助,它主要利用当前帧的数据,会把 MainPass 遗漏的 Cluster 补充回来。两个 Pass 合力保证 Nanite 遮挡剔除。(我们两个真牛逼!) Empty Empty 就是空光栅化库的数量。
三角形cluster剔除 把三角形组织为cluster 对每个cluster构造包围数据 基于包围数据剔除cluster frustum剔除 遮挡剔除 可见性与材质的解耦 消除 在光栅化时候切换shader 材质求值的多余调用 用于减少overdraw的深度prepass 由于密集的mesh,像素采样低效的问题 延迟材质 次线性的伸缩效率 理想情况下,希望每个像素一个三角形(...
混乱的 NANITE_MULTI_VIEW 与 CLUSTER_PER_PAGE 宏定义 NANITE_MULTI_VIEW 宏用于控制是否启用 MultiView。它与 CLUSTER_PER_PAGE 定义不明,例如在 CommonRasterizerVS 中,在 CLUSTER_PER_PAGE 启用时生成 VSOut 的 ViewRect,但在 VSOut 定义中,ViewRect 却只有在 NANITE_MULTI_VIEW 启用时定义: ...