How do I reconstruct depth in deferred rendering using an orthographic projection?

Posted by Jeremie on Game Development See other posts from Game Development or by Jeremie
Published on 2012-09-27T05:35:48Z Indexed on 2012/09/27 9:51 UTC
Read the original article Hit count: 221

Filed under:
|
|
|

I've been trying to get my world space position of my pixel but I4m missing something.

I'm using a orthographic view for a 2.5d game. My depth is linear and this is my code.

    float3 lightPos  = lightPosition;
    float2 texCoord = PostProjToScreen(PSIn.lightPosition)+halfPixel;

    float depth = tex2D(depthMap, texCoord);

    float4 position; 

    position.x = texCoord.x *2-1;
    position.y = (1-texCoord.y)*2-1;
    position.z = depth.r;
    position.w = 1;
    position = mul(position, inViewProjection);
    //position.xyz/=position.w; // I comment it but even without it it doesn't work


    float4 normal = (tex2D(normalMap, texCoord)-.5f) * 2;
    normal = normalize(normal);

    float3 lightDirection = normalize(lightPos-position);
    float att = saturate(1.0f - length(lightDirection) /attenuation);
    float lightning = saturate (dot(normal, lightDirection));

    lightning*= brightness;
    return float4(lightColor* lightning*att, 1);

I'm using a sphere but it's not working the way I want. I reproject the texture properly onto the sphere but the light coordinates in the pixel shader seems to be stuck at zero even if when I move the light volume update properly.

© Game Development or respective owner

Related posts about XNA

Related posts about deferred-rendering