• Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

We're also offering banner ads on our site from just \$5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.

# 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

### #1adrian_134  Members   -  Reputation: 120

Like
0Likes
Like

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.

### #2adrian_134  Members   -  Reputation: 120

Like
0Likes
Like

Posted 20 January 2012 - 04:45 PM

### #3Tsus  Members   -  Reputation: 1048

Like
0Likes
Like

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!

### #4adrian_134  Members   -  Reputation: 120

Like
0Likes
Like

Posted 20 January 2012 - 06:22 PM

Thank you, now it's working very good. I was looking for the problem very long timg, i don't know how i can't saw this notice. Thank you very much.

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.

PARTNERS