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


### END AUTOGENERATED SECTION
