지향성 투영을위한 작업용 섀도우 맵 구현이 있습니다. 여기에서 직교 투영을 사용하여 투영 행렬을 구성합니다. 내 질문은 어떻게 그림자 맵을 시각화합니까? 나는 스포트라이트 (투시 투영법을 사용함)에 사용하는 다음 셰이더를 가지고 있지만, 정사영 투영으로 만들어진 섀도우 맵에 적용하려고하면 완전히 검정색 화면이됩니다 (그림자 맵핑이 작동하더라도 장면 자체)스크린에 정사영 그림자 맵 렌더링?
#version 430
layout(std140) uniform;
uniform UnifDepth
{
mat4 mWVPMatrix;
vec2 mScreenSize;
float mZNear;
float mZFar;
} UnifDepthPass;
layout (binding = 5) uniform sampler2D unifDepthTexture;
out vec4 fragColor;
void main()
{
vec2 texcoord = gl_FragCoord.xy/UnifDepthPass.mScreenSize;
float depthValue = texture(unifDepthTexture, texcoord).x;
depthValue = (2.0 * UnifDepthPass.mZNear)/(UnifDepthPass.mZFar + UnifDepthPass.mZNear - depthValue * (UnifDepthPass.mZFar - UnifDepthPass.mZNear));
fragColor = vec4(depthValue, depthValue, depthValue, 1.0);
}
'GL_TEXTURE_COMPARE_MODE'는'sampler2D'를 사용하여 깊이 텍스처를 샘플링하는 것이 정의되지 않았으며 (아마도 모든 검은 텍셀을 생성 할 것입니다) 사용하지 않는 것을 잊었을 것입니다. 샘플러 객체를 사용하는 경우 실제 쉐도우 프로세스에 대해 비교가 활성화 된 다른 샘플러 객체를 사용할 수 있으며 깊이 버퍼를 시각화하려는 경우 비교가 비활성화 된 다른 샘플러 객체를 사용할 수 있습니다. 그렇지 않은 경우이 상태는 텍스처 단위 객체입니다. –
예, 답변으로 추가했습니다. – KaiserJohaan