Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 16 Apr 2009
Offline Last Active May 26 2016 07:43 PM

Posts I've Made

In Topic: Removing self-shadow acne

25 May 2016 - 10:21 PM

This is my favorite reference regarding shadow maps:




To improve self-shadowing, check out the various biasing techniques, such as receiver plane bias.  Also, variance based filtering methods (VSM/EVSM/MSM) tend to behave much better with shadow acne.  They are more expensive and they have their own artifacts, but they can be a good choice.

In Topic: When would you want to use Forward+ or Differed Rendering?

04 April 2016 - 01:14 PM

Most forward+ implementations will still require a z-prepass to prevent overdraw at the very least.  You can use this to compute SSAO (or whatever), and then read it in the forward lighting pass.


Depending on what you need, it's possible to write out a slim gbuffer (maybe include vertex normals) during the z prepass to allow more types of screen space effects.

In Topic: EVSM, 2 component vs 4 component

22 March 2016 - 11:43 PM

That's very helpful, thank you.


What kind of values did you end up needing for leak reduction?  Is that a value that you think makes sense to expose to artists per light, or did you get away with a hard-coded global value?

In Topic: Recommended reading for intermediate-advanced shader techniques

17 March 2016 - 01:20 PM

Good general overview of many rendering techniques:



Lots of good presentations about more advanced techniques:



Free online books with some interesting techniques:





Similar to above, but more recent and not free:


(I think there are 5 or 6 GPU Pro books now, with more on the way)

In Topic: Shadow Map gradients in Forward+ lighting loop

01 February 2016 - 08:41 PM

Awesome, thanks.


Follow up question, what about applying shadow in a deferred pass?  In this case, I would be reconstructing world position from depth buffer, and then use that position to look up shadow map.  This will mostly work, except the derivatives will be discontinuous on object edges in the depth buffer.


Googling around, the only real solutions I could find were to clamp the maximum mip level to minimize the problem, or remove mips all together.  Is there any better technique to handle this case?