skia / external / github.com / KhronosGroup / OpenGL-Registry / 7886749ba04c44ea6b15c43a668cc70863bc1423 / . / extensions / APPLE / APPLE_specular_vector.txt

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 <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 |