| | '''OpenGL extension APPLE.specular_vector |
| | |
| | This module customises the behaviour of the |
| | OpenGL.raw.GL.APPLE.specular_vector to provide a more |
| | Python-friendly API |
| | |
| | Overview (from the spec) |
| | |
| | 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. |
| | |
| | The official definition of this extension is available here: |
| | http://www.opengl.org/registry/specs/APPLE/specular_vector.txt |
| | ''' |
| | from OpenGL import platform, constant, arrays |
| | from OpenGL import extensions, wrapper |
| | import ctypes |
| | from OpenGL.raw.GL import _types, _glgets |
| | from OpenGL.raw.GL.APPLE.specular_vector import * |
| | from OpenGL.raw.GL.APPLE.specular_vector import _EXTENSION_NAME |
| |
|
| | def glInitSpecularVectorAPPLE(): |
| | '''Return boolean indicating whether this extension is available''' |
| | from OpenGL import extensions |
| | return extensions.hasGLExtension( _EXTENSION_NAME ) |
| |
|
| |
|
| | |
| |
|