XXX - Not complete yet!!! Name SGIX_spotlight_cutoff Name Strings GL_SGIX_spotlight_cutoff Version $Date: 1997/09/29 21:22:36 $ $Revision: 1.5 $ Number 131 Dependencies OpenGL 1.1 is required. SGIX_fragment_light affects the definition of this extension. Overview As specified, the transition to black at the edge of a spotlight cone is abrupt and, therefore, can cause aliasing in fragment lighting. This extension adds a new parameter to vertex and fragment lights that defines an angular region just within the cutoff angle over which the spotlight attenuation is transitioned smoothly to zero. The extension is modeled on that from the RenderMan Interface from Pixar. Issues * Should this single parameter be included in the fragment_light spec (and thus removing the requirement of this spec)? * Do we want this to apply to per-vertex lights too? I would say yes at this point because this feature can be used for visual effects like those of area light sources. Vertex lights can benefit almost as much as fragment lights in this situation. * Do we want to force a certain falloff function or leave it up to the implementation? I think we should leave it open, but force it to be monotonic. New Procedures and Functions None New Tokens Accepted by the parameter of Lightf, Lighti, Lightfv, and Lightiv and by the parameter of GetLightfv and GetLightiv: SPOT_CUTOFF_DELTA_SGIX 0x8193 Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation) Insert in Table 2.7 (need to replicate whole table...): Param Type Default Description ---------------------------------------------------------------- d_rli real 0.0 spotlight delta cutoff angle (range: [0.0,90.0]) Equation 2.5 becomes: If d_rli<=c_rli: spot_i = (P_pliV.s_dli)^s_rli c_rli!=180.0 P_pliV.s_dli>=cos(c_rli-d_rli) smooth falloff c_rli!=180.0 cos(c_rli)>=P_pliV.s_dli>cos(c_rli-d_rli) 0.0 c_rli!=180.0 P_pliV.s_dlic_rli: spot_i = (P_pliV.s_dli)^s_rli c_rli!=180.0 P_pliV.s_dli>=cos(c_rli) 0.0 c_rli!=180.0 P_pliV.s_dli=cos(c_rli-d_rli) smooth falloff c_rli!=180.0 cos(c_rli)>=P_pliV.s_dli>cos(c_rli-d_rli) 0.0 c_rli!=180.0 P_pliV.s_dlic_rli: spot_i = (P_pliV.s_dli)^s_rli c_rli!=180.0 P_pliV.s_dli>=cos(c_rli) 0.0 c_rli!=180.0 P_pliV.s_dli