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