延迟渲染与前向渲染+early-z



如果是正向渲染,则FS执行的次数为(numberOfAllPixels*numberOfLights(;如果是延迟渲染,则执行的次数是(numberOfVisiblePixels*numberOfLight斯(。

因此,如果我将early-z添加到正向渲染中,那么FS执行的次数也将变为(numberOfVisiblePixels*numberOfLights(,那么延迟渲染没有任何好处吗?

在正向渲染中,必须多次重新渲染整个场景。在延迟渲染中,只渲染一次场景,仅此而已。

重新渲染整个场景意味着重新进行一系列工作,包括但不限于:

  • 场景的CPU处理。也就是说,遍历场景图形并发出渲染命令
  • GPU处理绘图命令之间的状态变化
  • GPU读取网格的顶点阵列
  • 顶点着色器执行

所有这些在延迟渲染中只需发生一次。

别忘了"早-z";不是免费的。这些三角形不仅必须生成,而且还必须光栅化。它们必须深入处理管道,才能被淘汰。这不是什么大不了的事,但也不是什么都没有。

所以,是的,前向渲染中的深度预处理意味着只有在绝对必要的时候才运行FS。但你仍然在处理一大堆不必要的事情。

最新更新