1

所以我正在努力实现阴影映射。到目前为止,我已经从相机的角度将几何体(深度、法线、颜色)渲染到帧缓冲区,并从光的角度渲染了几何体的深度。现在,我从相机的角度渲染光照,对于每个片段,我将比较它与光照的距离,与 render-from-the-lights-pov 通道中的深度 tex 值。如果距离较远,则它处于阴影中。(只是在这里重述以确保没有任何我没有意识到我不明白的东西)。

所以,要完成这最后一步,我需要将深度值 [0-1] 转换为其眼睛空间值 [0.1-100](我的近/远平面)。(这里的解释——从深度缓冲区获取真正的 z 值)。

是否有任何理由不让render-from-the-lights-pov 传递直接将片段到相机(z 组件)的距离写入纹理?那么我们就不必处​​理荒谬的转换了吗?还是我错过了什么?

4

1 回答 1

4

您当然可以将自己的深度值写入纹理,许多人就是这样做的。这样做的好处是您可以选择您喜欢的任何表示和映射。

缺点是你必须要么 a) 仍然有一个“真实”的深度缓冲区附加到你的 FBO(因此将你用于深度写入的带宽加倍),或者 b) 使用 GL_MIN/GL_MAX 混合模式(取决于你是如何映射深度的),并且可能会错过 early-z out 优化。

于 2014-03-13T10:36:17.463 回答