Jump to content

  • Log In with Google      Sign In   
  • Create Account


Top of the line vs Old crap


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
32 replies to this topic

#21 quiSHADgho   Members   -  Reputation: 325

Like
1Likes
Like

Posted 16 January 2013 - 04:27 AM

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



Sponsor:

#22 cameni   Members   -  Reputation: 462

Like
1Likes
Like

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 Telanor   Members   -  Reputation: 1295

Like
0Likes
Like

Posted 16 January 2013 - 05:04 AM

Hmm. Well if I change it to output.Position.w, I can see the terrain again, but it's back to rendering the light weirdly. The strange thing I notice is when I debug the pixel shader, the reconstructed position always seems to be behind me. So for example the Y value of the light (which is in front of me) is 570 and the pixel I'm debugging is past that when I'm looking down, so you'd expect a Y < 570 but instead it comes out as 608. This happens regardless of whether I use -depth or depth in the invProjPos calculation.

#24 quiSHADgho   Members   -  Reputation: 325

Like
2Likes
Like

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 riuthamus   Crossbones+   -  Reputation: 4453

Like
0Likes
Like

Posted 17 January 2013 - 11:03 PM

Any luck my friend?



#26 quiSHADgho   Members   -  Reputation: 325

Like
0Likes
Like

Posted 18 January 2013 - 03:16 AM

Not yet but I'm still on it



#27 quiSHADgho   Members   -  Reputation: 325

Like
2Likes
Like

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.



#28 Telanor   Members   -  Reputation: 1295

Like
2Likes
Like

Posted 18 January 2013 - 04:27 PM

Wow, it actually works. I think that last line, the worldPos /= worldPos.w was the key. The depth /= (NearPlane*FarPlane/(FarPlane-NearPlane)) line doesn't seem to have any effect that I can notice though. Thanks for you help!

#29 quiSHADgho   Members   -  Reputation: 325

Like
1Likes
Like

Posted 18 January 2013 - 04:35 PM

Hmm strange, for me it's not lighting anything without that line but however I'm glad it's finally working.



#30 riuthamus   Crossbones+   -  Reputation: 4453

Like
1Likes
Like

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! :P



#31 riuthamus   Crossbones+   -  Reputation: 4453

Like
0Likes
Like

Posted 18 January 2013 - 05:18 PM

So, how would we get something to look like this:

 

gallery_1_371_141239.png

gallery_1_371_169269.png

 

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

 

gallery_1_371_140597.png

 

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 )

 

gallery_1_371_101887.png



#32 riuthamus   Crossbones+   -  Reputation: 4453

Like
0Likes
Like

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/



#33 riuthamus   Crossbones+   -  Reputation: 4453

Like
0Likes
Like

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)  0

And 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.






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