• FEATURED

View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# Shadow maping in deferred render

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

3 replies to this topic

Posted 14 January 2012 - 12:26 PM

Hello!

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;

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 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:
http://www.coubetech...blika.pl/11.jpg

When i turn and move my camera i getting somfing like this:
http://www.coubetech....pl/dserror.jpg

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.

Posted 20 January 2012 - 04:45 PM

### #3Tsus  Members

Posted 20 January 2012 - 04:55 PM

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);


Cheers!