Mintmaster
Veteran
I want to start a purely technical thread about the method in Humus' latest demo. No flames or comments on the merit of ATI/NVidia's decisions in their architectures, no financial bickering, no "I hate companyX", etc.
Couple of discussion starting points:
1. Stencil shadowing
- I was thinking how the final stencil buffer (with all shadows flagged by a 1) could be modified to also flag pixels where N dot L < 0, using bump maps. It might not be worth the extra pass, though, because the original volumes would already knock off most of the dark regions.
- For attenuated lights, however, this could work very well. Use the same stencil buffer, and just increment the stencil of all pixels outside the lights range. Might be good for Doom3.
2. NV40 - which method is better?
- pocketmoon66, could you summarize all your findings?
- so, what is the actual penalty of dynamic branching on NV40?
- why did NV40 have that restriction on early stencil out?
- how much do you think a future "hierarchical stencil buffer" would improve performance? I'm thinking ATI might implement such a feature eventually.
- Anyone think we'll have zero-penalty dynamic branching in the next gen?
3. Region bounding
- I was thinking about neighbourhood transfer for spherical harmonic lighting. That would let you have one object cast shadows and reflect light onto another. 3D textures could hold the SH coefficients for a small volume around an object
- You could flag all the pixels around the object causing the radiance transfer, and subtract/add light to neighbouring objects in subsequent passes. The fillrate cost should be a lot lower this way.
4. Nalu wrapper, anyone?
- This method should handle the scales and skin border just fine
- Anyone know when we'll have access to it?
So, what do you guys think?
Couple of discussion starting points:
1. Stencil shadowing
- I was thinking how the final stencil buffer (with all shadows flagged by a 1) could be modified to also flag pixels where N dot L < 0, using bump maps. It might not be worth the extra pass, though, because the original volumes would already knock off most of the dark regions.
- For attenuated lights, however, this could work very well. Use the same stencil buffer, and just increment the stencil of all pixels outside the lights range. Might be good for Doom3.
2. NV40 - which method is better?
- pocketmoon66, could you summarize all your findings?
- so, what is the actual penalty of dynamic branching on NV40?
- why did NV40 have that restriction on early stencil out?
- how much do you think a future "hierarchical stencil buffer" would improve performance? I'm thinking ATI might implement such a feature eventually.
- Anyone think we'll have zero-penalty dynamic branching in the next gen?
3. Region bounding
- I was thinking about neighbourhood transfer for spherical harmonic lighting. That would let you have one object cast shadows and reflect light onto another. 3D textures could hold the SH coefficients for a small volume around an object
- You could flag all the pixels around the object causing the radiance transfer, and subtract/add light to neighbouring objects in subsequent passes. The fillrate cost should be a lot lower this way.
4. Nalu wrapper, anyone?
- This method should handle the scales and skin border just fine
- Anyone know when we'll have access to it?
So, what do you guys think?