# Calculating Far Frustum Corners in Pixel Shader

## Recommended Posts

Aqua Costa    3691
I'm trying to calculate the far frustum corners position in view space in the pixel shader but it's not working...

I'm following[url="http://mynameismjp.wordpress.com/2010/09/05/position-from-depth-3/"] MJP's article[/url]:

So I draw a fullscreen quad with the following vertices:

[CODE]
PVertex vertices[] =
{
PVertex(-1.0f, -1.0f, 1.0f),
PVertex(-1.0f, 1.0f, 1.0f),
PVertex(1.0f, 1.0f, 1.0f),
PVertex(1.0f, -1.0f, 1.0f)
};[/CODE]

And the vertex shader looks like this:

[CODE]
VS_OUT VS(VS_IN vIn)
{
VS_OUT vOut;

vOut.posH = float4(vIn.posL, 1.0f);

#ifdef DIRECTIONAL_LIGHT
vOut.positionVS = mul(float4(vIn.posL, 1.0f), gInvView);
#else
vOut.positionVS = mul(float4(vIn.posL, 1.0f), gWorld).xyz;
#endif

return vOut;
}[/CODE]

However positionVS gets values like: (-0.736, -0.414, 1.0); which is far from a far frustum corner position in view space...

##### Share on other sites
jameszhao00    271
(-1, -1, 1), ... are in NDC space.

NDC -> VS

float3 ndc = //....
float4 hcs = float4(ndc, 1) * invProj
float3 vs = hcs.xyz / hcs.w

##### Share on other sites
Aqua Costa    3691
Thanks I totally forgot to do the w-divide.