Jump to content

  • Log In with Google      Sign In   
  • Create Account


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.

  • You cannot reply to this topic
3 replies to this topic

#1 adrian_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;

   // ----------------------- 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:
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.

Sponsor:

#2 adrian_134   Members   -  Reputation: 120

Like
0Likes
Like

Posted 20 January 2012 - 04:45 PM

Any answer ?

#3 Tsus   Members   -  Reputation: 1008

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!

Acagamics e.V. – IGDA Student Game Development Club (University of Magdeburg, Germany)


#4 adrian_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