   Deferred Shading Position from Depth for Light Volumes
  After reading through the many different posts on reconstruction of Pixel Position from depth, I decided to try it. I am not sure if I have understood it correctly.currently for full screen here is what I do:InputVB(ScreenQuad) contains far world positions of the view frustumvoid vertexshader(float4 InPosition : POSITION0,   out float4 OutPosition : POSITION0,   out float3 ScreenDir   : TEXCOORD0,   out float4 Texture: TEXCOORD1){    OutPosition = mul(InPosition, WorldViewProjectionMatrix);    ScreenDir = mul(InPosition.xyz, (float3x3)WorldViewMatrix);    Texture = OutPosition;}void pixelshader(float3 InScreenDir  : TEXCOORD0,  float4 InTexture    : TEXCOORD1,  out float4 OutColor : COLOR0){    float Depth = tex2dProj(DepthBuffer, InTexture);    float WorldPos = EyePos + InScreenDir * Depth;}Is this the correct method to get the pixel position? How should I extend this for light volumes, where I draw the light volumes instead of drawing the view frustum far plane quad?I read in ShaderX5 (Overcoming deferred shading drawbacks), the method they use to get the position was to multiply by the direction vector float3(x, y, invtanHalfFOV). How does this method actually work?   