Hi folks,
I try to implement a simple shadow shader in my project. The shadow map and the basic shader works fine.
When I get to the shadow shader itself, i get a weird issue. When I want to transform the position in the vertex shader with the light view-projection matrix, i get only x and y values. The z and w values are always 1. But when I transform the position with the camera view-projection I get some z and w values. This is my test code for my issue. The output color is always white, which however must be gray, as the values in the shadow map are also gray:
[source lang="hlsl"]float4x4 View;float4x4 Projection;float4x4 ProjectionLight;float4x4 ViewLight;texture2D tex;SamplerState textureSampler{ Filter = MIN_MAG_MIP_LINEAR; AddressU = Wrap; AddressV = Wrap;};struct VS_IN{float4 pos : POSITION;float2 texpos : TEXCOORD;float3 normal : NORMAL;}; struct PS_IN{float4 pos : SV_POSITION;float4 Light : POSITION;float2 texpos : TEXCOORD0;float3 normal : NORMAL;float4 pos3D : TEXCOORD1;};void VShader(in VS_IN input, out PS_IN output){ float4 p = input.pos; output.pos = mul(p, mul(View, Projection)); output.texpos = input.texpos; output.normal = input.normal; output.Light = mul(p, mul(ViewLight,ProjectionLight)); output.pos3D = p;}float4 PShader(PS_IN input) : SV_Target{ float4 l = input.Light; return l.z / l.w;}technique10 Simple{ pass Main { SetGeometryShader(0); SetVertexShader(CompileShader(vs_5_0, VShader())); SetPixelShader(CompileShader(ps_5_0, PShader())); }}[/source]
I tried everything to get this work. I hope someone can help me.
Sorry for my perhaps bad english
HLSL Shadow Shader Issue
Started by _undex, Oct 18 2012 09:34 AM
2 replies to this topic
Sponsor:
#2 Members - Reputation: 157
Posted 19 October 2012 - 07:35 AM
Some more informations:
I ran that code in PIX, and I saw that my vertex shader calculates the "Light" value (for all 4 values) write.
When it comes to my pixel shader, it seems like all my values exept "pos" was reseted.
But I still don't know where my fault is.
I ran that code in PIX, and I saw that my vertex shader calculates the "Light" value (for all 4 values) write.
When it comes to my pixel shader, it seems like all my values exept "pos" was reseted.
But I still don't know where my fault is.
#3 Members - Reputation: 157
Posted 19 October 2012 - 09:04 AM
Solved 
I saw in PIX that the z value of "pos" is 10 times smaller than the value of it in the vertex shader (Don't ask me. I don't know why)
So I add a new variable to my shadow map pixel shader input struct, where i save the "real" depth values of the pixel and it's solved
It seems like these values are not 0, they are only 10 times smaller than the "pos" value.
I saw in PIX that the z value of "pos" is 10 times smaller than the value of it in the vertex shader (Don't ask me. I don't know why)
So I add a new variable to my shadow map pixel shader input struct, where i save the "real" depth values of the pixel and it's solved
It seems like these values are not 0, they are only 10 times smaller than the "pos" value.






