【问题标题】:Trying to correctly generate matrices for cascaded shadow maps尝试为级联阴影贴图正确生成矩阵
【发布时间】:2020-11-21 08:01:18
【问题描述】:

我正在尝试在 OpenGL 中实现级联阴影贴图,但无法生成视图和投影矩阵。这是我的代码:

        glm::mat4 lightViewMatrix = glm::lookAt(glm::vec3(0.0), glm::normalize(direction), glm::vec3(0.0f, 1.0f, 0.0f));

        glm::vec4 min(INFINITY);
        glm::vec4 max(-INFINITY);
        for (int i = 0; i < 8; i++) {
            glm::vec4 lightSpaceCorner = lightViewMatrix * frustumCornersWorldSpace[i];

            min = glm::min(min, lightSpaceCorner);
            max = glm::max(max, lightSpaceCorner);
        }

        glm::mat4 ortho = glm::ortho(min.x, max.x, min.y, max.y, min.z, max.z);

        mMatrices[cascade] = ortho * lightViewMatrix ;

生成的阴影贴图在某些角度被截断,这让我相信视图矩阵或投影矩阵配置不正确。

如果有人知道答案,那将是一个巨大的帮助。

谢谢。

【问题讨论】:

    标签: c++ opengl graphics 3d shadow


    【解决方案1】:

    搞定了!原来问题不在于矩阵,而在于我用来决定应该使用哪个级联的深度值。我正在使用 gl_FragCoord.z,认为它在剪辑空间中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      相关资源
      最近更新 更多