OpenGL.GL.NV.register_combiners

OpenGL extension NV.register_combiners
This module customises the behaviour of the OpenGL.raw.GL.NV.register_combiners to provide a more Python-friendly API
Overview (from the spec)
NVIDIA's next-generation graphics processor and its derivative designs support an extremely configurable mechanism know as "register combiners" for computing fragment colors.
The register combiner mechanism is a significant redesign of NVIDIA's original TNT combiner mechanism as introduced by NVIDIA's RIVA TNT graphics processor. Familiarity with the TNT combiners will help the reader appreciate the greatly enhanced register combiners functionality (see the NV_texture_env_combine4 OpenGL extension specification for this background). The register combiner mechanism has the following enhanced functionality:
The numeric range of combiner computations is from of TNT's [0,1 numeric range),
The set of available combiner inputs is expanded to include the secondary color, fog color, fog factor, and a second combiner constant color (TNT's available combiner inputs consist of only zero, a single combiner constant color, the primary color, texture 0, texture 1, and, in the case of combiner 1, the result of combiner 0).
Each combiner variable input can be independently scaled and biased into several possible numeric ranges (TNT can only complement combiner inputs).
Each combiner stage computes three distinct outputs (instead TNT's single combiner output).
The output operations include support for computing dot products (TNT has no support for computing dot products).
After each output operation, there is a configurable scale and bias applied (TNT's combiner operations builds in a scale and/or bias into some of its combiner operations).
Each input variable for each combiner stage is fetched from any entry in a combiner register set. Moreover, the outputs of each combiner stage are written into the register set of the subsequent combiner stage (TNT could only use the result from combiner 0 as a possible input to combiner 1; TNT lacks the notion of an input/output register set).
The register combiner mechanism supports at least two general combiner stages and then a special final combiner stage appropriate for applying a color sum and fog computation (TNT provides two simpler combiner stages, and TNT's color sum and fog stages are hard-wired and not subsumed by the combiner mechanism as in register combiners).
The register combiners fit into the OpenGL pipeline as a rasterization processing stage operating in parallel to the traditional OpenGL texture environment, color sum, AND fog application. Enabling this extension bypasses OpenGL's existing texture environment, color sum, and fog application processing and instead use the register combiners. The combiner and texture environment state is orthogonal so modifying combiner state does not change the traditional OpenGL texture environment state and the texture environment state is ignored when combiners are enabled.
OpenGL application developers can use the register combiner mechanism for very sophisticated shading techniques. For example, an approximation of Blinn's bump mapping technique can be achieved with the combiner mechanism. Additionally, multi-pass shading models that require several passes with unextended OpenGL 1.2 functionality can be implemented in several fewer passes with register combiners.
The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/register_combiners.txt

Functions

Constants

GL_BIAS_BY_NEGATIVE_ONE_HALF_NV (34113)
GL_COLOR_SUM_CLAMP_NV (34127)
GL_COMBINER0_NV (34128)
GL_COMBINER1_NV (34129)
GL_COMBINER2_NV (34130)
GL_COMBINER3_NV (34131)
GL_COMBINER4_NV (34132)
GL_COMBINER5_NV (34133)
GL_COMBINER6_NV (34134)
GL_COMBINER7_NV (34135)
GL_COMBINER_AB_DOT_PRODUCT_NV (34117)
GL_COMBINER_AB_OUTPUT_NV (34122)
GL_COMBINER_BIAS_NV (34121)
GL_COMBINER_CD_DOT_PRODUCT_NV (34118)
GL_COMBINER_CD_OUTPUT_NV (34123)
GL_COMBINER_COMPONENT_USAGE_NV (34116)
GL_COMBINER_INPUT_NV (34114)
GL_COMBINER_MAPPING_NV (34115)
GL_COMBINER_MUX_SUM_NV (34119)
GL_COMBINER_SCALE_NV (34120)
GL_COMBINER_SUM_OUTPUT_NV (34124)
GL_CONSTANT_COLOR0_NV (34090)
GL_CONSTANT_COLOR1_NV (34091)
GL_DISCARD_NV (34096)
GL_E_TIMES_F_NV (34097)
GL_EXPAND_NEGATE_NV (34105)
GL_EXPAND_NORMAL_NV (34104)
GL_FOG (2912)
GL_HALF_BIAS_NEGATE_NV (34107)
GL_HALF_BIAS_NORMAL_NV (34106)
GL_MAX_GENERAL_COMBINERS_NV (34125)
GL_NONE (0)
GL_NUM_GENERAL_COMBINERS_NV (34126)
GL_PRIMARY_COLOR_NV (34092)
GL_REGISTER_COMBINERS_NV (34082)
GL_SCALE_BY_FOUR_NV (34111)
GL_SCALE_BY_ONE_HALF_NV (34112)
GL_SCALE_BY_TWO_NV (34110)
GL_SECONDARY_COLOR_NV (34093)
GL_SIGNED_IDENTITY_NV (34108)
GL_SIGNED_NEGATE_NV (34109)
GL_SPARE0_NV (34094)
GL_SPARE0_PLUS_SECONDARY_COLOR_NV (34098)
GL_SPARE1_NV (34095)
GL_TEXTURE0_ARB (33984)
GL_TEXTURE1_ARB (33985)
GL_UNSIGNED_IDENTITY_NV (34102)
GL_UNSIGNED_INVERT_NV (34103)
GL_VARIABLE_A_NV (34083)
GL_VARIABLE_B_NV (34084)
GL_VARIABLE_C_NV (34085)
GL_VARIABLE_D_NV (34086)
GL_VARIABLE_E_NV (34087)
GL_VARIABLE_F_NV (34088)
GL_VARIABLE_G_NV (34089)
GL_ZERO (0)