From: Scott M. <mcm...@ca...> - 2000-06-19 18:18:42
|
I am trying to implement a multipass rendering technique similar to Mark Kilgard's real-time shadow library, that involves multiple rendering passes: 1) render the scene with normal lights no stencil glEnable(GL_LIGHT0); glEnable(GL_LIGHTING); 2) render the front faces of shadow volumes with the following glDisable(GL_LIGHTING); glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); glEnable(GL_STENCIL_TEST); glDepthMask(GL_FALSE); glStencilFunc(GL_ALWAYS, 0, 0); glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); 3) render the back faces of the shadow volumes with the following: glStencilOp(GL_KEEP, GL_KEEP, GL_DECR); 4) render the original scene with a different color light: glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glDepthFunc(GL_EQUAL); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); glStencilFunc(GL_NOTEQUAL, 0, ~0); glDisable(GL_LIGHT0); glEnable(GL_LIGHT1); glEnable(GL_LIGHTING); With Mesa, everything works except that I get a white translucent (like screen door transparency) haze where the shadow volumes are. This occurs in areas where the stencil values were incremented and then decremented back to zero so there should have been no rendering into the color buffer after the first step. This does not happen on SGI's or most NT drivers. Anybody have any ideas? Should I also report this as a bug? scott -- Scott McMillan mailto:mcm...@ca... Cambridge Research Associates http://www.cambridge.com 1430 Spring Hill Road, Ste. 200 Voice: (703) 790-0505 x7235 McLean, VA 22102 Fax: (703) 790-0370 |