Shadow mapping: проецируем пиксель из космоса в светлый космос

Я пишу карты теней в отложенном затенении.

Вот моя карта глубины для направленного света (ортогональная проекция):

https://i.imgur.com/PSVGuRq.png

Ниже представлен мой полноэкранный четырехъядерный шейдер для визуализации глубины пикселя в пространстве светлого обзора:

#version 330

in vec2 texCoord;
out vec3 fragColor;

uniform mat4 lightViewProjMat; // lightView * lightProj

uniform sampler2D sceneTexture;
uniform sampler2D shadowMapTexture;
uniform sampler2D scenePosTexture;

void main() {
    vec4 fragPos = texture(scenePosTexture, texCoord);
    vec4 fragPosLightSpace = lightViewProjMat * fragPos;

    vec3 coord = fragPosLightSpace.xyz / fragPosLightSpace.w;
    coord = coord * 0.5 + 0.5;

    float lightViewDepth = texture(shadowMapTexture, coord.xy).x;
    fragColor = vec3(lightViewDepth);
}

Размер рендера 1280x720, размер карты глубины 512x512, и похоже, что он повторяет карту глубины в моей сцене. Я думаю, что моя проекция координат не верна. Я хочу видеть, правильна ли глубина от пикселя до света. Может ли кто-нибудь дать мне несколько советов?

1 ответ

Решение

Решил сам, проблема экономии глубины. Я сохранил неправильное значение глубины, должен был использовать gl_FragCoord.z вместо.

Другие вопросы по тегам