i am implementing stencil volume shadowing for a render engine. Now this engine is taking in lots of different polygon data that might come from the gluTesselator or so, is deformed after, and therefore not feasible for adjacency information (since one vertex and/or normal can be shared by > 20 other faces). Means: No Silhouette detection in the geometry shader is possible.
This requires me to cast a shadow volume per triangle. Speed is not an issue though. However, no matter if i do depth-pass or depth-fail properly, i always get white specs on polygon edges. Now if a model is highly tesselated, things go awkward.
It creates single pixels that do not succeed in the stencil test.
What i do:
1: (DepthTest on/Write on) Render the scene but just the depth (transforms happen in the geometry shader)
2: (DepthTest on/Write off) Render the volumes with stencilOpSeparate
3: (DepthTest off/Write off) Render a fullscreen quad so that the shadow areas are extracted
4: 1,2,3 -> render into a texture array (per light) that i use in the real render pass later
no multisampling at the moment.
The effect increases when the number of faces is increased, but it also happens for each front facing volume plane that is shared with another back facing volume plane (same edge, different order).
This means: As soon as 2 volume planes are the same but have different orientation, the stencil test is not always correct in the shadowed areas.
any help is appreciated. I'll try to post screenshots later when i'm at home again.
Thank you very much!
Edited by FlyingBavar, 24 April 2014 - 09:07 AM.