Sign in to follow this  

Shadow maping in deferred render

Recommended Posts

adrian_134    120

I have problem with shadow maping in deferred render. For shading object, in pixel shader directional light i use this code:
// Compute screen-space position
float4 position;
position.x = input.TexCoord.x * 2.0f - 1.0f;
position.y = -(input.TexCoord.x * 2.0f - 1.0f);
position.z = depthVal;
position.w = 1.0f;
// Transform to world space
position = mul(position, InvertViewProjection);
position /= position.w;

// ----------------------- Shadow ---------------
float4 lightScreenPos = mul(position, lightViewProjection);
lightScreenPos /= lightScreenPos.w;

// Find sample position in shadow map
float2 lightSamplePos;
lightSamplePos.x = lightScreenPos.x / 2.0f + 0.5f;
lightSamplePos.y = -lightScreenPos.y / 2.0f + 0.5f;

float m = 0.2f;
float depthInMap = tex2D(shadowTextureSampler, lightSamplePos);
float distance = lightScreenPos.z;
if((distance - 0.0001f) <= depthInMap)
m = 1.0f; // Is in light
diffuseLight.rgb *= m;
I want get m = 1.0f when is in light or 0.2f when is in shadow but when i using this code all my objects are in shadow or are illuminated this is the screen:

When i turn and move my camera i getting somfing like this:

I thing the problem is in the pixel shader becouse this code working correctly for forward rendering (picture in left side). I don't know where is the problem, meybe in lightScreenPos calculations, but what could be wrong ? Directional light working correctly, i have problem only with shadow map.

Share this post

Link to post
Share on other sites
Tsus    1186
Hi there!

Have you noticed your typo here?
position.y = -(input.TexCoord.x * 2.0f - 1.0f);

I'd rather expect something like this:
position.y = -(input.TexCoord.y * 2.0f - 1.0f);


Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this