'''OpenGL extension NV.texture_shader3

Overview (from the spec)
	
	NV_texture_shader3 extends the NV_texture_shader functionality by
	adding several new texture shader operations, extending several
	existing texture shader operations, adding a new HILO8 internal
	format, and adding new and more flexible re-mapping modes for dot
	product and dependent texture shader operations.
	
	See the NV_texture_shader extension for information about the
	texture shader operational model.
	
	The fourteen new texture shader operations are:
	
	<offset textures>
	
	24.  OFFSET_PROJECTIVE_TEXTURE_2D_NV - Transforms the signed (ds,dt)
	     components of a previous texture unit by a 2x2 floating-point
	     matrix and then uses the result to offset the stage's texture
	     coordinates for a 2D non-projective texture.
	
	25.  OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV - Same as above except
	     the magnitude component of the previous texture unit result
	     scales the red, green, and blue components of the unsigned RGBA
	     texture 2D access.
	
	26.  OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV - Similar to
	     OFFSET_TEXTURE_2D_NV except that the texture access is into a
	     rectangular non-projective texture.
	
	27.  OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV - Similar to
	     OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV except that the texture
	     access is into a rectangular non-projective texture.
	
	28.  OFFSET_HILO_TEXTURE_2D_NV - Similar to OFFSET_TEXTURE_2D_NV
	     but uses a (higher-precision) HILO base format texture rather
	     than a DSDT-type base format.
	
	29.  OFFSET_HILO_TEXTURE_RECTANGLE_NV - Similar to
	     OFFSET_TEXTURE_RECTANGLE_NV but uses a (higher-precision)
	     HILO base format texture rather than a DSDT-type base format.
	
	30.  OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV - Similar to
	     OFFSET_PROJECTIVE_TEXTURE_2D_NV but uses a (higher-precision)
	     HILO base format texture rather than a DSDT-type base format.
	
	31.  OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV - Similar to
	     OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV but uses a
	     (higher-precision) HILO base format texture rather than a
	     DSDT-type base format.
	
	     (There are no "offset HILO texture scale" operations because
	     HILO textures have only two components with no third component
	     for scaling.)
	
	<dependent textures>
	
	32.  DEPENDENT_HILO_TEXTURE_2D_NV - Converts the hi and lo components
	     of a previous shader HILO result into an (s,t) texture coordinate
	     set to access a 2D non-projective texture.
	
	33.  DEPENDENT_RGB_TEXTURE_3D_NV - Converts the red, green, and
	     blue components of a previous shader RGBA result into an (s,t,r)
	     texture coordinate set to access a 3D non-projective texture.
	
	34.  DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV - Converts the red, green,
	     and blue components of a previous shader RGBA result into an
	     (s,t,r) texture coordinate set to access a cube map texture.
	
	<dot product textures>
	
	35.  DOT_PRODUCT_TEXTURE_1D_NV - Computes a dot product in the manner
	     of the DOT_PRODUCT_NV operation and uses the result as the s
	     texture coordinate to access a 2D non-projective texture.
	
	36.  DOT_PRODUCT_PASS_THROUGH_NV - Computes a dot product in the
	     manner of the DOT_PRODUCT_NV operation and the result is [0,1]
	     clamped and smeared to generate the texture unit RGBA result.
	
	<dot product depth replace>
	
	37.  DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV - Computes a dot product
	     in the manner of the DOT_PRODUCT_NV operation and the result
	     is [0,1] clamped and replaces the fragment's window-space
	     depth value.  The texture unit RGBA result is (0,0,0,0).
	
	Two new internal texture formats have been added: HILO8_NV and
	SIGNED_HILO8_NV.  These texture formats allow HILO textures to be
	stored in half the space; still the filtering for these internal
	texture formats is done with 16-bit precision.
	
	One new unsigned RGBA dot product mapping mode (FORCE_BLUE_TO_ONE_NV)
	forces the blue component to be 1.0 before computing a dot product.

The official definition of this extension is available here:
	http://oss.sgi.com/projects/ogl-sample/registry/NV/texture_shader3.txt

Automatically generated by the get_gl_extensions script, do not edit!
'''
from OpenGL import platform, constants, constant, arrays
from OpenGL import extensions
from OpenGL.GL import glget
import ctypes
EXTENSION_NAME = 'GL_NV_texture_shader3'
GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV = constant.Constant( 'GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV', 0x8850 )
GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = constant.Constant( 'GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV', 0x8851 )
GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = constant.Constant( 'GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV', 0x8852 )
GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = constant.Constant( 'GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV', 0x8853 )
GL_OFFSET_HILO_TEXTURE_2D_NV = constant.Constant( 'GL_OFFSET_HILO_TEXTURE_2D_NV', 0x8854 )
GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV = constant.Constant( 'GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV', 0x8855 )
GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = constant.Constant( 'GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV', 0x8856 )
GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = constant.Constant( 'GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV', 0x8857 )
GL_DEPENDENT_HILO_TEXTURE_2D_NV = constant.Constant( 'GL_DEPENDENT_HILO_TEXTURE_2D_NV', 0x8858 )
GL_DEPENDENT_RGB_TEXTURE_3D_NV = constant.Constant( 'GL_DEPENDENT_RGB_TEXTURE_3D_NV', 0x8859 )
GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = constant.Constant( 'GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV', 0x885A )
GL_DOT_PRODUCT_PASS_THROUGH_NV = constant.Constant( 'GL_DOT_PRODUCT_PASS_THROUGH_NV', 0x885B )
GL_DOT_PRODUCT_TEXTURE_1D_NV = constant.Constant( 'GL_DOT_PRODUCT_TEXTURE_1D_NV', 0x885C )
GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = constant.Constant( 'GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV', 0x885D )
GL_HILO8_NV = constant.Constant( 'GL_HILO8_NV', 0x885E )
GL_SIGNED_HILO8_NV = constant.Constant( 'GL_SIGNED_HILO8_NV', 0x885F )
GL_FORCE_BLUE_TO_ONE_NV = constant.Constant( 'GL_FORCE_BLUE_TO_ONE_NV', 0x8860 )


def glInitTextureShader3NV():
	'''Return boolean indicating whether this extension is available'''
	return extensions.hasGLExtension( EXTENSION_NAME )
