代码之家  ›  专栏  ›  技术社区  ›  François Guthmann

WebGL2-我可以查询具有非世界位置的阴影图立方体映射吗?

  •  0
  • François Guthmann  · 技术社区  · 7 年前

    我试图使用Webgl2实现点光源的阴影贴图。为此,我使用深度缓冲区的立方体贴图,从灯光位置渲染6轴对齐的视图。

    在我用于渲染照明的片段着色器中,我使用以下线条查询此立方体贴图:

    vec3 lightToPos = lightPos-fragPos;
    float closestDepth = texture(shadowMap, lightToPos).r;
    

    viewMat * worldMat * objPos http://ogldev.atspace.co.uk/www/tutorial43/tutorial43.html ). 现在,我不明白为什么我的方法行不通,因为两个位置的差应该是相同的,不管它们的坐标用什么角度表示,对吗?我得到的结果不是我期望的,一切都在阴影中。我可能在其他地方犯了一个错误,但我想确定我明白这是怎么回事,错误不是从这里来的。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Nicol Bolas    7 年前

    不,他们不是。

    考虑一个世界,其中光线位于世界原点正上方,“上方”表示+Y方向。这就是生成阴影贴图的方向。它是从世界空间生成的。

    是的,相对于世界,光没有移动。但是 照相机 做因此,相机空间光方向的值与世界空间光方向的值不同。

    如果灯光位置和片段位置确实都在摄影机空间中,则减去它们将给出灯光的方向 如果阴影地图确实是在世界空间中构建的,那么这个方向将完全无用。

    推荐文章