I'm not using the values in the depthbuffer just for outputting depth in a pre-pass so I cannot say how it behaves when using it as a depthbuffer value. Did you try to change the ZFunc-state in the geometry pass? Thats pretty unlikely but I will also have a look into my depth texture with pix maybe the values are reversed
Top of the line vs Old crap
#22 Members - Reputation: 423
Posted 16 January 2013 - 04:29 AM
You don't need to keep view space position for the logarithmic depth. You can use the value of w, since it contains the view space depth after projection:
output.Position.z = log(0.001 * output.Position.w + 1) / log(0.001 * FarPlane + 1) * output.Position.w;
That's because the projection matrix (D3DXMatrixPerspectiveFovLH) is:
w 0 0 0 0 h 0 0 0 0 zf/(zf-zn) 1 0 0 -zn*zf/(zf-zn) 0
And thus w ← z, w ends up with the view space depth.
#23 Members - Reputation: 645
Posted 16 January 2013 - 05:04 AM
#24 Members - Reputation: 324
Posted 16 January 2013 - 05:46 AM
I dont get it. It's always the same, using output.Position.z or output.Position.w makes no difference. The light is only visible from inside the volume. I'm pretty sure I just missing a additional math operation but I dont see it and I need fresh view. So I will look into it later that evening (it's about 1pm here) so hopefully I get more for you tonight or tomorrow.
#25 Crossbones+ - Reputation: 2473
Posted 17 January 2013 - 11:03 PM
Any luck my friend?
My game project blog.
#27 Members - Reputation: 324
Posted 18 January 2013 - 08:19 AM
Ok here is my next try. I knew I missed something and I hope I finally got it.
First of all I'm using the output.Position.w value for the depth now so it looks like this:
output.Position.z = log(output.Position.w*0.001f + 1) / log(0.001f*FarPlane +1) * output.Position.w;
And here is the reconstruction code:
float4 mapValue = tex2D(DepthMapSampler, PSIn.texCoord + dimensionOffset); float depth = mapValue.x; depth = ((pow((0.001 * FarPlane) + 1, depth) - 1) / 0.001); depth /= (NearPlane*FarPlane/(FarPlane-NearPlane)); PSIn.ProjPos.xy *= depth; float4 invProjPos = mul(PSIn.ProjPos ,xInvProjection); invProjPos.z = -depth; float4 worldPos = mul(invProjPos, xInvView); worldPos /= worldPos.w;
The thing I missed was the division. Cameni gave me the hint when he said the w-component contains the view space depth and he is right it contains it but is not equal to it due to the projection matrix multiplication so you need to extract it before you can use it. Be careful with the signs. I'm using a right handed projection Matrix and I think you need to change them when using a lefthanded. It should be enough to add a negativ sign to the division.
#30 Crossbones+ - Reputation: 2473
Posted 18 January 2013 - 04:37 PM
Indeed, good to have it working. Now to get it to work and make it all sexy like! ![]()
My game project blog.
#31 Crossbones+ - Reputation: 2473
Posted 18 January 2013 - 05:18 PM
So, how would we get something to look like this:


Their lights seem to... have a brighter center. How would we go about doing this? This is what ours looks like:

We attempted to boost up the bloom to amplify it but our bloom either sucks or.... its just not working right. The bloom is MAXED btw. ( not ideal for getting the effect we might need in some locations )

My game project blog.
#32 Crossbones+ - Reputation: 2473
Posted 18 January 2013 - 06:23 PM
Actually, i made a new post, since it is kinda off topic with this one. Thanks
http://www.gamedev.net/topic/637498-point-light-shadow-mapping/
My game project blog.
#33 Crossbones+ - Reputation: 2473
Posted 19 January 2013 - 07:14 PM
You don't need to keep view space position for the logarithmic depth. You can use the value of w, since it contains the view space depth after projection:output.Position.z = log(0.001 * output.Position.w + 1) / log(0.001 * FarPlane + 1) * output.Position.w;That's because the projection matrix (D3DXMatrixPerspectiveFovLH) is:
w 0 0 0 0 h 0 0 0 0 zf/(zf-zn) 1 0 0 -zn*zf/(zf-zn) 0And thus w ← z, w ends up with the view space depth.
Kinda off topic, i just saw your video of your engine. Fucking amazing! A job well done and thank you for the help with this. qui and you certainly have been a huge help.
My game project blog.






