XXX - Not complete yet!!!

Name

    APPLE_specular_vector

Name Strings

    GL_APPLE_specular_vector

Version

    $Date: 2005/06/02 18:11:10 $ $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 <pname> parameter
    to LightModel, and TRUE as the <param> 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 <pname> 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
