1XXX - Not complete yet!!! 2 3Name 4 5 SGIX_spotlight_cutoff 6 7Name Strings 8 9 GL_SGIX_spotlight_cutoff 10 11Version 12 13 $Date: 1997/09/29 21:22:36 $ $Revision: 1.5 $ 14 15Number 16 17 131 18 19Dependencies 20 21 OpenGL 1.1 is required. 22 SGIX_fragment_light affects the definition of this extension. 23 24Overview 25 26 As specified, the transition to black at the edge of a spotlight cone 27 is abrupt and, therefore, can cause aliasing in fragment lighting. 28 This extension adds a new parameter to vertex and fragment lights that 29 defines an angular region just within the cutoff angle over which the 30 spotlight attenuation is transitioned smoothly to zero. The extension 31 is modeled on that from the RenderMan Interface from Pixar. 32 33Issues 34 35 * Should this single parameter be included in the fragment_light 36 spec (and thus removing the requirement of this spec)? 37 38 * Do we want this to apply to per-vertex lights too? I would say 39 yes at this point because this feature can be used for visual 40 effects like those of area light sources. Vertex lights can 41 benefit almost as much as fragment lights in this situation. 42 43 * Do we want to force a certain falloff function or leave it up to 44 the implementation? I think we should leave it open, but force 45 it to be monotonic. 46 47New Procedures and Functions 48 49 None 50 51New Tokens 52 53 Accepted by the <pname> parameter of Lightf, Lighti, Lightfv, and 54 Lightiv and by the <pname> parameter of GetLightfv and GetLightiv: 55 56 SPOT_CUTOFF_DELTA_SGIX 0x8193 57 58Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation) 59 60 Insert in Table 2.7 (need to replicate whole table...): 61 62 Param Type Default Description 63 ---------------------------------------------------------------- 64 d_rli real 0.0 spotlight delta cutoff angle 65 (range: [0.0,90.0]) 66 67 Equation 2.5 becomes: 68 69 If d_rli<=c_rli: 70 71 spot_i = (P_pliV.s_dli)^s_rli c_rli!=180.0 P_pliV.s_dli>=cos(c_rli-d_rli) 72 smooth falloff c_rli!=180.0 cos(c_rli)>=P_pliV.s_dli>cos(c_rli-d_rli) 73 0.0 c_rli!=180.0 P_pliV.s_dli<cos(c_rli) 74 1.0 c_rli==180.0 75 76 If d_rli>c_rli: 77 78 spot_i = (P_pliV.s_dli)^s_rli c_rli!=180.0 P_pliV.s_dli>=cos(c_rli) 79 0.0 c_rli!=180.0 P_pliV.s_dli<cos(c_rli) 80 1.0 c_rli==180.0 81 82 83 Before the paragraph beginning "The value of A produced..." insert: 84 85 When d_rli<=c_rli, the spotlight attenuation transitions smoothly to 86 0.0 at the cutoff angle over an angle d_rli. The falloff is 87 implementation specific and may be, for instance, linear or cubic, 88 however it must monotonically decrease from (cos(c_rli-d_rli))^s_rli 89 to 0.0. 90 91 Insert in Table 2.8 (need to replicate whole table...): 92 93 Param Name Number of Values 94 ---------------------------------------------------- 95 d_rli SPOT_CUTOFF_DELTA_SGIX 1 96 97Additions to Chapter 3 of the 1.1 Specification (Rasterization) 98 99 In Section 3.9.2 Lighting Operation insert after lighting equation: 100 101 If d_rli<=c_rli: 102 103 spot_i = (P_pliV.s_dli)^s_rli c_rli!=180.0 P_pliV.s_dli>=cos(c_rli-d_rli) 104 smooth falloff c_rli!=180.0 cos(c_rli)>=P_pliV.s_dli>cos(c_rli-d_rli) 105 0.0 c_rli!=180.0 P_pliV.s_dli<cos(c_rli) 106 1.0 c_rli==180.0 107 108 If d_rli>c_rli: 109 110 spot_i = (P_pliV.s_dli)^s_rli c_rli!=180.0 P_pliV.s_dli>=cos(c_rli) 111 0.0 c_rli!=180.0 P_pliV.s_dli<cos(c_rli) 112 1.0 c_rli==180.0 113 114 When d_rli<=c_rli, the spotlight attenuation transitions smoothly to 115 0.0 at the cutoff angle over an angle d_rli. The falloff is 116 implementation specific and may be, for instance, linear or cubic, 117 however it must monotonically decrease from (cos(c_rli-d_rli))^s_rli 118 to 0.0. 119 120Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations 121and the Frame Buffer) 122 123 None 124 125Additions to Chapter 5 of the 1.1 Specification (Special Functions) 126 127 None 128 129Additions to Chapter 6 of the 1.1 Specification (State and State Requests) 130 131 TBD 132 133Additions to the GLX Specification 134 135 TBD 136 137Dependencies on SGIX_fragment_light 138 139 If SGIX_fragment_light is not implemented, references to fragment 140 lighting in this document are invalid and should be ignored. 141 142Errors 143 144 GL_INVALID_VALUE is generated if SPOT_CUTOFF_DELTA_SGIX is outside the 145 range [0,90]. 146 147New State 148 149 Get Value Get Command Type Initial Value Attribute 150 --------- ----------- ---- ------------- --------- 151 SPOT_CUTOFF_DELTA_SGIX GetLightfv 1*xR+ 0.0 lighting 152 153New Implementation Dependent State 154 155 None 156