【问题标题】:opengl using depth buffer for shadows- any reason not to just render z to tex rather than use depth buffer?opengl 使用深度缓冲区进行阴影 - 有什么理由不将 z 渲染到 tex 而不是使用深度缓冲区?
【发布时间】:2014-03-13 05:33:16
【问题描述】:

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

因此,要执行最后一步,我需要将深度值 [0-1] 转换为其眼睛空间值 [0.1-100](我的近/远平面)。 (此处解释-Getting the true z value from the depth buffer)。

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

【问题讨论】:

    标签: opengl depth-buffer shadow-mapping


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多