XXX - Not complete yet!!! Name APPLE_specular_vector Name Strings GL_APPLE_specular_vector Version $Date: 1999/02/13 08:11:19 $ $Revision: 1.1 $ Number 159 Dependencies None Overview An alternative specular lighting model is enabled by passing the LIGHT_MODEL_SPECULAR_VECTOR token as the parameter to LightModel, and TRUE as the parameter. The specular vector lighting model calculates the specular intensity as the dot product of the true reflection vector of the light source and the vector from the vertex to the viewpoint. This yields results that are visually similar to but often more realistic than the existing lighting model. Mathematically, the specular component s.n in the existing lighting model calculation is replaced with the following alternative calculation. Given three vectors, n, l, and p, where n is the unit normal vector at the vertex, l is the unit vector from the vertex to the light position, and p is the unit vector from the vertex to the viewpoint (or the vector {0,0,1} if LIGHT_MODEL_LOCAL_VIEWER is false), the specular component is given by (2 * cross(n, cross(n, l)) + l) . p All other lighting model and material parameters (shininess, spotlight, attenuation, local viewer, and direction/positional sources) operate normally. The specular vector lighting model affects both rgba and index modes. New Procedures and Functions None New Tokens Accepted by the parameters of LightModelf, LightModeli, LightModelfv, LightModeliv, GetBooleanv, GetDoublev, GetFloatv and GetIntegerv : LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation) XXX - Not complete yet!!! Section 2.13.1, Lighting Table 2.7 should be appended to include: "S_bs boolean FALSE use specular vector lighting model" Equations 2.2 and 2.3 should be updated to reflect the modified h_i terms in the specular component, as described above. Section 2.13.2, Lighting Parameter Specification Table 2.8 should be appended to include: "S_bs LIGHT_MODEL_SPECULAR_VECTOR 1" Additions to Chapter 3 of the 1.1 Specification (Rasterization) None Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations and the Frame Buffer) None Additions to Chapter 5 of the 1.1 Specification (Special Functions) None Additions to Chapter 6 of the 1.1 Specification (State and State Requests) Not done Additions to the GLX Specification GLX Protocol None Errors None New State Get Value Get Command Type Initial Value Attrib --------------------------------- ----------- ---- ------------- -------- LIGHT_MODEL_SPECULAR_VECTOR_APPLE GetBooleanv B False lighting New Implementation Dependent State None