Shadow mapping: проецируем пиксель из космического пространства в световое пространство - PullRequest
0 голосов
/ 24 мая 2018

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

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

depth map

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

#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 Ответ

0 голосов
/ 24 мая 2018

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

...