OpenGL定向光影贴图;如何查找正确的shadowmap值?

时间:2015-04-16 12:58:51

标签: opengl

我正致力于实现定向光和相关的阴影贴图。

我使用正交投影成功渲染阴影贴图纹理。但这就是我被困的地方;在最终渲染过程中,如何从阴影贴图到样本计算出正确的纹理坐标?然后,我如何确定此对象是否落后于该深度?

到目前为止我试图做的事情:

  1. 将灯光View + Projection矩阵传递给我的对象的顶点着色器
  2. 通过此矩阵将顶点着色器中的对象顶点相乘以传递给片段着色器
  3. 这为我的片段着色器提供了顶点绘制到阴影贴图时的位置
  4. 那么,有了这个,我可以对阴影贴图进行采样吗?

    这给了我那里所画的深度。

    但它并没有告诉我,我是否落后于这个深度。

1 个答案:

答案 0 :(得分:1)

执行第二步后,您将获得一个4向量(x,y,z,w)。让我们假设你对它进行了透视分割,并且w = 1.然后你在光源的空间中有一个顶点的x,y,z坐标,你传递给你的片段着色器。

x和y用于在下一步中对阴影贴图进行采样,但是z坐标怎么样?嗯,它是来自光源PoV的片段的可能深度值。这是您将阴影贴图样本与之比较的值。如果它大于shadowmaps值(+ bias),那么你的片段就在阴影中。否则就不是。