我有一個工作陰影貼圖實現方向燈,其中我使用正投影構建投影矩陣。我的問題是,我如何可視化陰影貼圖?我使用了以下着色器(我使用透視投影),但是當我嘗試將其應用於使用正投影製作的陰影貼圖時,我所得到的是完全黑屏(即使陰影貼圖工作正常renderering場景本身)呈現陰影貼圖到屏幕?
#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