diff --git a/OpenGLRaw.cabal b/OpenGLRaw.cabal
--- a/OpenGLRaw.cabal
+++ b/OpenGLRaw.cabal
@@ -1,5 +1,5 @@
 name: OpenGLRaw
-version: 1.0.0.0
+version: 1.0.1.0
 license: BSD3
 license-file: LICENSE
 maintainer: Sven Panne <sven.panne@aedion.de>
@@ -105,7 +105,25 @@
       Graphics.Rendering.OpenGL.Raw.EXT.VertexArray,
       Graphics.Rendering.OpenGL.Raw.EXT.VertexShader,
       Graphics.Rendering.OpenGL.Raw.EXT.VertexWeighting,
-      Graphics.Rendering.OpenGL.Raw.GetProcAddress
+      Graphics.Rendering.OpenGL.Raw.GetProcAddress,
+      Graphics.Rendering.OpenGL.Raw.NV,
+      Graphics.Rendering.OpenGL.Raw.NV.CopyDepthToColor,
+      Graphics.Rendering.OpenGL.Raw.NV.DepthClamp,
+      Graphics.Rendering.OpenGL.Raw.NV.Fence,
+      Graphics.Rendering.OpenGL.Raw.NV.FogDistance,
+      Graphics.Rendering.OpenGL.Raw.NV.LightMaxExponent,
+      Graphics.Rendering.OpenGL.Raw.NV.MultisampleFilterHint,
+      Graphics.Rendering.OpenGL.Raw.NV.OcclusionQuery,
+      Graphics.Rendering.OpenGL.Raw.NV.PrimitiveRestart,
+      Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners,
+      Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners2,
+      Graphics.Rendering.OpenGL.Raw.NV.TexgenEmboss,
+      Graphics.Rendering.OpenGL.Raw.NV.TextureCompressionVtc,
+      Graphics.Rendering.OpenGL.Raw.NV.TextureEnvCombine4,
+      Graphics.Rendering.OpenGL.Raw.NV.TextureShader,
+      Graphics.Rendering.OpenGL.Raw.NV.TextureShader2,
+      Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange,
+      Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange2
    other-modules:
       Graphics.Rendering.OpenGL.Raw.ARB.Compatibility.Functions,
       Graphics.Rendering.OpenGL.Raw.ARB.Compatibility.Tokens,
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV.hs b/src/Graphics/Rendering/OpenGL/Raw/NV.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV.hs
@@ -0,0 +1,51 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- A convenience module, combining all raw modules containing NV extensions.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV (
+   module Graphics.Rendering.OpenGL.Raw.NV.CopyDepthToColor,
+   module Graphics.Rendering.OpenGL.Raw.NV.DepthClamp,
+   module Graphics.Rendering.OpenGL.Raw.NV.Fence,
+   module Graphics.Rendering.OpenGL.Raw.NV.FogDistance,
+   module Graphics.Rendering.OpenGL.Raw.NV.LightMaxExponent,
+   module Graphics.Rendering.OpenGL.Raw.NV.MultisampleFilterHint,
+   module Graphics.Rendering.OpenGL.Raw.NV.OcclusionQuery,
+   module Graphics.Rendering.OpenGL.Raw.NV.PrimitiveRestart,
+   module Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners,
+   module Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners2,
+   module Graphics.Rendering.OpenGL.Raw.NV.TexgenEmboss,
+   module Graphics.Rendering.OpenGL.Raw.NV.TextureCompressionVtc,
+   module Graphics.Rendering.OpenGL.Raw.NV.TextureEnvCombine4,
+   module Graphics.Rendering.OpenGL.Raw.NV.TextureShader,
+   module Graphics.Rendering.OpenGL.Raw.NV.TextureShader2,
+   module Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange,
+   module Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange2
+) where
+
+import Graphics.Rendering.OpenGL.Raw.NV.CopyDepthToColor
+import Graphics.Rendering.OpenGL.Raw.NV.DepthClamp
+import Graphics.Rendering.OpenGL.Raw.NV.Fence
+import Graphics.Rendering.OpenGL.Raw.NV.FogDistance
+import Graphics.Rendering.OpenGL.Raw.NV.LightMaxExponent
+import Graphics.Rendering.OpenGL.Raw.NV.MultisampleFilterHint
+import Graphics.Rendering.OpenGL.Raw.NV.OcclusionQuery
+import Graphics.Rendering.OpenGL.Raw.NV.PrimitiveRestart
+import Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners
+import Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners2
+import Graphics.Rendering.OpenGL.Raw.NV.TexgenEmboss
+import Graphics.Rendering.OpenGL.Raw.NV.TextureCompressionVtc
+import Graphics.Rendering.OpenGL.Raw.NV.TextureEnvCombine4
+import Graphics.Rendering.OpenGL.Raw.NV.TextureShader
+import Graphics.Rendering.OpenGL.Raw.NV.TextureShader2
+import Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange
+import Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange2
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/CopyDepthToColor.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/CopyDepthToColor.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/CopyDepthToColor.hs
@@ -0,0 +1,29 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.CopyDepthToColor
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_copy_depth_to_color extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/copy_depth_to_color.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.CopyDepthToColor (
+   -- * Tokens
+   gl_DEPTH_STENCIL_TO_RGBA,
+   gl_DEPTH_STENCIL_TO_BGRA
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+
+gl_DEPTH_STENCIL_TO_RGBA :: GLenum
+gl_DEPTH_STENCIL_TO_RGBA = 0x886E
+
+gl_DEPTH_STENCIL_TO_BGRA :: GLenum
+gl_DEPTH_STENCIL_TO_BGRA = 0x886F
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/DepthClamp.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/DepthClamp.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/DepthClamp.hs
@@ -0,0 +1,25 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.DepthClamp
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_depth_clamp extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/depth_clamp.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.DepthClamp (
+   -- * Tokens
+   gl_DEPTH_CLAMP
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+
+gl_DEPTH_CLAMP :: GLenum
+gl_DEPTH_CLAMP = 0x864F
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/Fence.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/Fence.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/Fence.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.Fence
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_fence not already in the OpenGL 3.1
+-- core, see <http://www.opengl.org/registry/specs/NV/fence.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.Fence (
+   -- * Functions
+   glGenFences,
+   glDeleteFences,
+   glSetFence,
+   glTestFence,
+   glFinishFence,
+   glIsFence,
+   glGetFenceiv,
+   -- * Tokens
+   gl_ALL_COMPLETED,
+   gl_FENCE_STATUS,
+   gl_FENCE_CONDITION
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_fence"
+
+EXTENSION_ENTRY(glGenFences,GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glDeleteFences,GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glSetFence,GLuint -> GLenum -> IO ())
+EXTENSION_ENTRY(glTestFence,GLuint -> IO GLboolean)
+EXTENSION_ENTRY(glFinishFence,GLuint -> IO ())
+EXTENSION_ENTRY(glIsFence,GLuint -> IO GLboolean)
+EXTENSION_ENTRY(glGetFenceiv,GLuint -> GLenum -> Ptr GLint -> IO ())
+
+gl_ALL_COMPLETED :: GLenum
+gl_ALL_COMPLETED = 0x84F2
+
+gl_FENCE_STATUS :: GLenum
+gl_FENCE_STATUS = 0x84F3
+
+gl_FENCE_CONDITION :: GLenum
+gl_FENCE_CONDITION = 0x84F4
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/FogDistance.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/FogDistance.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/FogDistance.hs
@@ -0,0 +1,35 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.FogDistance
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_fog_distance extension not already
+-- in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/fog_distance.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.FogDistance (
+   -- * Tokens
+   gl_FOG_DISTANCE_MODE,
+   gl_EYE_RADIAL,
+   gl_EYE_PLANE,
+   gl_EYE_PLANE_ABSOLUTE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core31
+
+gl_FOG_DISTANCE_MODE :: GLenum
+gl_FOG_DISTANCE_MODE = 0x855A
+
+gl_EYE_RADIAL :: GLenum
+gl_EYE_RADIAL = 0x855B
+
+gl_EYE_PLANE_ABSOLUTE :: GLenum
+gl_EYE_PLANE_ABSOLUTE = 0x855C
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/LightMaxExponent.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/LightMaxExponent.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/LightMaxExponent.hs
@@ -0,0 +1,29 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.LightMaxExponent
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_light_max_exponent extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/light_max_exponent.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.LightMaxExponent (
+   -- * Tokens
+   gl_MAX_SHININESS,
+   gl_MAX_SPOT_EXPONENT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+
+gl_MAX_SHININESS :: GLenum
+gl_MAX_SHININESS = 0x8504
+
+gl_MAX_SPOT_EXPONENT :: GLenum
+gl_MAX_SPOT_EXPONENT = 0x8505
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/MultisampleFilterHint.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/MultisampleFilterHint.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/MultisampleFilterHint.hs
@@ -0,0 +1,25 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.MultisampleFilterHint
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_multisample_filter_hint extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/multisample_filter_hint.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.MultisampleFilterHint (
+   -- * Tokens
+   gl_MULTISAMPLE_FILTER_HINT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+
+gl_MULTISAMPLE_FILTER_HINT :: GLenum
+gl_MULTISAMPLE_FILTER_HINT = 0x8534
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/OcclusionQuery.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/OcclusionQuery.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/OcclusionQuery.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.OcclusionQuery
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_occlusion_query not already in the
+-- OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/occlusion_query.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.OcclusionQuery (
+   -- * Functions
+   glGenOcclusionQueries,
+   glDeleteOcclusionQueries,
+   glIsOcclusionQuery,
+   glBeginOcclusionQuery,
+   glEndOcclusionQuery,
+   glGetOcclusionQueryiv,
+   glGetOcclusionQueryuiv,
+   -- * Tokens
+   gl_OCCLUSION_TEST,
+   gl_OCCLUSION_TEST_RESULT,
+   gl_PIXEL_COUNTER_BITS,
+   gl_CURRENT_OCCLUSION_QUERY_ID,
+   gl_PIXEL_COUNT,
+   gl_PIXEL_COUNT_AVAILABLE
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_occlusion_query"
+
+EXTENSION_ENTRY(glGenOcclusionQueries,GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glDeleteOcclusionQueries,GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glIsOcclusionQuery,GLuint -> IO ())
+EXTENSION_ENTRY(glBeginOcclusionQuery,GLuint -> IO ())
+EXTENSION_ENTRY(glEndOcclusionQuery,IO ())
+EXTENSION_ENTRY(glGetOcclusionQueryiv,GLuint -> GLenum -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetOcclusionQueryuiv,GLuint -> GLenum -> Ptr GLuint -> IO ())
+
+gl_OCCLUSION_TEST :: GLenum
+gl_OCCLUSION_TEST = 0x8165
+
+gl_OCCLUSION_TEST_RESULT :: GLenum
+gl_OCCLUSION_TEST_RESULT = 0x8166
+
+gl_PIXEL_COUNTER_BITS :: GLenum
+gl_PIXEL_COUNTER_BITS = 0x8864
+
+gl_CURRENT_OCCLUSION_QUERY_ID :: GLenum
+gl_CURRENT_OCCLUSION_QUERY_ID = 0x8865
+
+gl_PIXEL_COUNT :: GLenum
+gl_PIXEL_COUNT = 0x8866
+
+gl_PIXEL_COUNT_AVAILABLE :: GLenum
+gl_PIXEL_COUNT_AVAILABLE = 0x8867
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/PrimitiveRestart.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/PrimitiveRestart.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/PrimitiveRestart.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.PrimitiveRestart
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_primitive_restart extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/primitive_restart.txt>.
+-- NOTE: The OpenGL 3.1 core has some functions and tokens with the same names,
+-- but with different semantics and values, so we use a suffix in those cases.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.PrimitiveRestart (
+   -- * Functions
+   glPrimitiveRestart,
+   glPrimitiveRestartIndexNV,
+   -- * Tokens
+   gl_PRIMITIVE_RESTART_NV,
+   gl_PRIMITIVE_RESTART_INDEX_NV
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_primitive_restart"
+
+EXTENSION_ENTRY(glPrimitiveRestart, IO ())
+EXTENSION_ENTRY(glPrimitiveRestartIndexNV,GLuint -> IO ())
+
+gl_PRIMITIVE_RESTART_NV :: GLenum
+gl_PRIMITIVE_RESTART_NV = 0x8558
+
+gl_PRIMITIVE_RESTART_INDEX_NV :: GLenum
+gl_PRIMITIVE_RESTART_INDEX_NV = 0x8559
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners.hs
@@ -0,0 +1,265 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_register_combiners extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/register_combiners.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners (
+   -- * Functions
+   glCombinerParameterfv,
+   glCombinerParameteriv,
+   glCombinerParameterf,
+   glCombinerParameteri,
+   glCombinerInput,
+   glCombinerOutput,
+   glFinalCombinerInput,
+   glGetCombinerInputParameterfv,
+   glGetCombinerInputParameteriv,
+   glGetCombinerOutputParameterfv,
+   glGetCombinerOutputParameteriv,
+   glGetFinalCombinerInputParameterfv,
+   glGetFinalCombinerInputParameteriv,
+   -- * Tokens
+   gl_REGISTER_COMBINERS,
+   gl_COMBINER0,
+   gl_COMBINER1,
+   gl_COMBINER2,
+   gl_COMBINER3,
+   gl_COMBINER4,
+   gl_COMBINER5,
+   gl_COMBINER6,
+   gl_COMBINER7,
+   gl_VARIABLE_A,
+   gl_VARIABLE_B,
+   gl_VARIABLE_C,
+   gl_VARIABLE_D,
+   gl_VARIABLE_E,
+   gl_VARIABLE_F,
+   gl_VARIABLE_G,
+   gl_CONSTANT_COLOR0,
+   gl_CONSTANT_COLOR1,
+   gl_FOG,
+   gl_PRIMARY_COLOR_NV,
+   gl_SECONDARY_COLOR,
+   gl_SPARE0,
+   gl_SPARE1,
+   gl_UNSIGNED_IDENTITY,
+   gl_UNSIGNED_INVERT,
+   gl_EXPAND_NORMAL,
+   gl_EXPAND_NEGATE,
+   gl_HALF_BIAS_NORMAL,
+   gl_HALF_BIAS_NEGATE,
+   gl_SIGNED_IDENTITY,
+   gl_SIGNED_NEGATE,
+   gl_E_TIMES_F,
+   gl_SPARE0_PLUS_SECONDARY_COLOR,
+   gl_SCALE_BY_TWO,
+   gl_SCALE_BY_FOUR,
+   gl_SCALE_BY_ONE_HALF,
+   gl_BIAS_BY_NEGATIVE_ONE_HALF,
+   gl_DISCARD,
+   gl_COMBINER_INPUT,
+   gl_COMBINER_MAPPING,
+   gl_COMBINER_COMPONENT_USAGE,
+   gl_COMBINER_AB_DOT_PRODUCT,
+   gl_COMBINER_CD_DOT_PRODUCT,
+   gl_COMBINER_MUX_SUM,
+   gl_COMBINER_SCALE,
+   gl_COMBINER_BIAS,
+   gl_COMBINER_AB_OUTPUT,
+   gl_COMBINER_CD_OUTPUT,
+   gl_COMBINER_SUM_OUTPUT,
+   gl_NUM_GENERAL_COMBINERS,
+   gl_COLOR_SUM_CLAMP,
+   gl_MAX_GENERAL_COMBINERS
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_register_combiners"
+
+EXTENSION_ENTRY(glCombinerParameterfv,GLenum -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glCombinerParameteriv,GLenum -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glCombinerParameterf,GLenum -> GLfloat -> IO ())
+EXTENSION_ENTRY(glCombinerParameteri,GLenum -> GLint -> IO ())
+EXTENSION_ENTRY(glCombinerInput,GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+EXTENSION_ENTRY(glCombinerOutput,GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLboolean -> GLboolean -> GLboolean -> IO ())
+EXTENSION_ENTRY(glFinalCombinerInput,GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+EXTENSION_ENTRY(glGetCombinerInputParameterfv,GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGetCombinerInputParameteriv,GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetCombinerOutputParameterfv,GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGetCombinerOutputParameteriv,GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetFinalCombinerInputParameterfv,GLenum -> GLenum -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGetFinalCombinerInputParameteriv,GLenum -> GLenum -> Ptr GLint -> IO ())
+
+gl_REGISTER_COMBINERS :: GLenum
+gl_REGISTER_COMBINERS = 0x8522
+
+gl_COMBINER0 :: GLenum
+gl_COMBINER0 = 0x8550
+
+gl_COMBINER1 :: GLenum
+gl_COMBINER1 = 0x8551
+
+gl_COMBINER2 :: GLenum
+gl_COMBINER2 = 0x8552
+
+gl_COMBINER3 :: GLenum
+gl_COMBINER3 = 0x8553
+
+gl_COMBINER4 :: GLenum
+gl_COMBINER4 = 0x8554
+
+gl_COMBINER5 :: GLenum
+gl_COMBINER5 = 0x8555
+
+gl_COMBINER6 :: GLenum
+gl_COMBINER6 = 0x8556
+
+gl_COMBINER7 :: GLenum
+gl_COMBINER7 = 0x8557
+
+gl_VARIABLE_A :: GLenum
+gl_VARIABLE_A = 0x8523
+
+gl_VARIABLE_B :: GLenum
+gl_VARIABLE_B = 0x8524
+
+gl_VARIABLE_C :: GLenum
+gl_VARIABLE_C = 0x8525
+
+gl_VARIABLE_D :: GLenum
+gl_VARIABLE_D = 0x8526
+
+gl_VARIABLE_E :: GLenum
+gl_VARIABLE_E = 0x8527
+
+gl_VARIABLE_F :: GLenum
+gl_VARIABLE_F = 0x8528
+
+gl_VARIABLE_G :: GLenum
+gl_VARIABLE_G = 0x8529
+
+gl_CONSTANT_COLOR0 :: GLenum
+gl_CONSTANT_COLOR0 = 0x852A
+
+gl_CONSTANT_COLOR1 :: GLenum
+gl_CONSTANT_COLOR1 = 0x852B
+
+-- | NOTE: ARB_compatibility has the same token with a different value, so we
+-- use a suffix here.
+gl_PRIMARY_COLOR_NV :: GLenum
+gl_PRIMARY_COLOR_NV = 0x852C
+
+gl_SECONDARY_COLOR :: GLenum
+gl_SECONDARY_COLOR = 0x852D
+
+gl_SPARE0 :: GLenum
+gl_SPARE0 = 0x852E
+
+gl_SPARE1 :: GLenum
+gl_SPARE1 = 0x852F
+
+gl_UNSIGNED_IDENTITY :: GLenum
+gl_UNSIGNED_IDENTITY = 0x8536
+
+gl_UNSIGNED_INVERT :: GLenum
+gl_UNSIGNED_INVERT = 0x8537
+
+gl_EXPAND_NORMAL :: GLenum
+gl_EXPAND_NORMAL = 0x8538
+
+gl_EXPAND_NEGATE :: GLenum
+gl_EXPAND_NEGATE = 0x8539
+
+gl_HALF_BIAS_NORMAL :: GLenum
+gl_HALF_BIAS_NORMAL = 0x853A
+
+gl_HALF_BIAS_NEGATE :: GLenum
+gl_HALF_BIAS_NEGATE = 0x853B
+
+gl_SIGNED_IDENTITY :: GLenum
+gl_SIGNED_IDENTITY = 0x853C
+
+gl_SIGNED_NEGATE :: GLenum
+gl_SIGNED_NEGATE = 0x853D
+
+gl_E_TIMES_F :: GLenum
+gl_E_TIMES_F = 0x8531
+
+gl_SPARE0_PLUS_SECONDARY_COLOR :: GLenum
+gl_SPARE0_PLUS_SECONDARY_COLOR = 0x8532
+
+gl_SCALE_BY_TWO :: GLenum
+gl_SCALE_BY_TWO = 0x853E
+
+gl_SCALE_BY_FOUR :: GLenum
+gl_SCALE_BY_FOUR = 0x853F
+
+gl_SCALE_BY_ONE_HALF :: GLenum
+gl_SCALE_BY_ONE_HALF = 0x8540
+
+gl_BIAS_BY_NEGATIVE_ONE_HALF :: GLenum
+gl_BIAS_BY_NEGATIVE_ONE_HALF = 0x8541
+
+gl_DISCARD :: GLenum
+gl_DISCARD = 0x8530
+
+gl_COMBINER_INPUT :: GLenum
+gl_COMBINER_INPUT = 0x8542
+
+gl_COMBINER_MAPPING :: GLenum
+gl_COMBINER_MAPPING = 0x8543
+
+gl_COMBINER_COMPONENT_USAGE :: GLenum
+gl_COMBINER_COMPONENT_USAGE = 0x8544
+
+gl_COMBINER_AB_DOT_PRODUCT :: GLenum
+gl_COMBINER_AB_DOT_PRODUCT = 0x8545
+
+gl_COMBINER_CD_DOT_PRODUCT :: GLenum
+gl_COMBINER_CD_DOT_PRODUCT = 0x8546
+
+gl_COMBINER_MUX_SUM :: GLenum
+gl_COMBINER_MUX_SUM = 0x8547
+
+gl_COMBINER_SCALE :: GLenum
+gl_COMBINER_SCALE = 0x8548
+
+gl_COMBINER_BIAS :: GLenum
+gl_COMBINER_BIAS = 0x8549
+
+gl_COMBINER_AB_OUTPUT :: GLenum
+gl_COMBINER_AB_OUTPUT = 0x854A
+
+gl_COMBINER_CD_OUTPUT :: GLenum
+gl_COMBINER_CD_OUTPUT = 0x854B
+
+gl_COMBINER_SUM_OUTPUT :: GLenum
+gl_COMBINER_SUM_OUTPUT = 0x854C
+
+gl_NUM_GENERAL_COMBINERS :: GLenum
+gl_NUM_GENERAL_COMBINERS = 0x854E
+
+gl_COLOR_SUM_CLAMP :: GLenum
+gl_COLOR_SUM_CLAMP = 0x854F
+
+gl_MAX_GENERAL_COMBINERS :: GLenum
+gl_MAX_GENERAL_COMBINERS = 0x854D
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners2.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners2.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners2.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners2
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_register_combiners2 extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/register_combiners2.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners2 (
+   -- * Functions
+   glCombinerStageParameterfv,
+   glGetCombinerStageParameterfv,
+   -- * Tokens
+   gl_PER_STAGE_CONSTANTS,
+   gl_CONSTANT_COLOR0,
+   gl_CONSTANT_COLOR1,
+   gl_COMBINER0,
+   gl_COMBINER1,
+   gl_COMBINER2,
+   gl_COMBINER3,
+   gl_COMBINER4,
+   gl_COMBINER5,
+   gl_COMBINER6,
+   gl_COMBINER7
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Extensions
+import Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_register_combiners2"
+
+EXTENSION_ENTRY(glCombinerStageParameterfv,GLenum -> GLenum -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGetCombinerStageParameterfv,GLenum -> GLenum -> Ptr GLfloat -> IO ())
+
+gl_PER_STAGE_CONSTANTS :: GLenum
+gl_PER_STAGE_CONSTANTS = 0x8535
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TexgenEmboss.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TexgenEmboss.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TexgenEmboss.hs
@@ -0,0 +1,33 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.TexgenEmboss
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_texgen_emboss not already in the
+-- OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/texgen_emboss.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.TexgenEmboss (
+   -- * Tokens
+   gl_EMBOSS_MAP,
+   gl_EMBOSS_LIGHT,
+   gl_EMBOSS_CONSTANT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+
+gl_EMBOSS_MAP :: GLenum
+gl_EMBOSS_MAP = 0x855F
+
+gl_EMBOSS_LIGHT :: GLenum
+gl_EMBOSS_LIGHT = 0x855D
+
+gl_EMBOSS_CONSTANT :: GLenum
+gl_EMBOSS_CONSTANT = 0x855E
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureCompressionVtc.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureCompressionVtc.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureCompressionVtc.hs
@@ -0,0 +1,25 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.TextureCompressionVtc
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_light_max_exponent extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/light_max_exponent.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.TextureCompressionVtc (
+   -- * Tokens
+   gl_COMPRESSED_RGB_S3TC_DXT1,
+   gl_COMPRESSED_RGBA_S3TC_DXT1,
+   gl_COMPRESSED_RGBA_S3TC_DXT3,
+   gl_COMPRESSED_RGBA_S3TC_DXT5
+) where
+
+import Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionS3tc
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureEnvCombine4.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureEnvCombine4.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureEnvCombine4.hs
@@ -0,0 +1,41 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.TextureEnvCombine4
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_texture_env_combine4 extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/texture_env_combine4.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.TextureEnvCombine4 (
+   -- * Tokens
+   gl_COMBINE4,
+   gl_SOURCE3_RGB,
+   gl_SOURCE3_ALPHA,
+   gl_OPERAND3_RGB,
+   gl_OPERAND3_ALPHA
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+
+gl_COMBINE4 :: GLenum
+gl_COMBINE4 = 0x8503
+
+gl_SOURCE3_RGB :: GLenum
+gl_SOURCE3_RGB = 0x8583
+
+gl_SOURCE3_ALPHA :: GLenum
+gl_SOURCE3_ALPHA = 0x858B
+
+gl_OPERAND3_RGB :: GLenum
+gl_OPERAND3_RGB = 0x8593
+
+gl_OPERAND3_ALPHA :: GLenum
+gl_OPERAND3_ALPHA = 0x859B
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader.hs
@@ -0,0 +1,320 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.TextureShader
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_texture_shader extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/texture_shader.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.TextureShader (
+   -- * Tokens
+   gl_TEXTURE_SHADER,
+   gl_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING,
+   gl_SHADER_OPERATION,
+   gl_OFFSET_TEXTURE_SCALE,
+   gl_OFFSET_TEXTURE_BIAS,
+   gl_OFFSET_TEXTURE_2D_SCALE,
+   gl_OFFSET_TEXTURE_2D_BIAS,
+   gl_PREVIOUS_TEXTURE_INPUT,
+   gl_CULL_MODES,
+   gl_OFFSET_TEXTURE_MATRIX,
+   gl_OFFSET_TEXTURE_2D_MATRIX,
+   gl_CONST_EYE,
+   gl_SHADER_CONSISTENT,
+   gl_PASS_THROUGH,
+   gl_CULL_FRAGMENT,
+   gl_OFFSET_TEXTURE_2D,
+   gl_OFFSET_TEXTURE_2D_SCALE,
+   gl_OFFSET_TEXTURE_RECTANGLE,
+   gl_OFFSET_TEXTURE_RECTANGLE_SCALE,
+   gl_DEPENDENT_AR_TEXTURE_2D,
+   gl_DEPENDENT_GB_TEXTURE_2D,
+   gl_DOT_PRODUCT,
+   gl_DOT_PRODUCT_DEPTH_REPLACE,
+   gl_DOT_PRODUCT_TEXTURE_2D,
+   gl_DOT_PRODUCT_TEXTURE_RECTANGLE,
+   gl_DOT_PRODUCT_TEXTURE_CUBE_MAP,
+   gl_DOT_PRODUCT_DIFFUSE_CUBE_MAP,
+   gl_DOT_PRODUCT_REFLECT_CUBE_MAP,
+   gl_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP,
+   gl_UNSIGNED_IDENTITY,
+   gl_EXPAND_NORMAL,
+   gl_HILO,
+   gl_DSDT,
+   gl_DSDT_MAG,
+   gl_DSDT_MAG_VIB,
+   gl_UNSIGNED_INT_S8_S8_8_8,
+   gl_UNSIGNED_INT_8_8_S8_S8_REV,
+   gl_SIGNED_RGBA,
+   gl_SIGNED_RGBA8,
+   gl_SIGNED_RGB,
+   gl_SIGNED_RGB8,
+   gl_SIGNED_LUMINANCE,
+   gl_SIGNED_LUMINANCE8,
+   gl_SIGNED_LUMINANCE_ALPHA,
+   gl_SIGNED_LUMINANCE8_ALPHA8,
+   gl_SIGNED_ALPHA,
+   gl_SIGNED_ALPHA8,
+   gl_SIGNED_INTENSITY,
+   gl_SIGNED_INTENSITY8,
+   gl_SIGNED_RGB_UNSIGNED_ALPHA,
+   gl_SIGNED_RGB8_UNSIGNED_ALPHA8,
+   gl_HILO,
+   gl_HILO16,
+   gl_SIGNED_HILO,
+   gl_SIGNED_HILO16,
+   gl_DSDT,
+   gl_DSDT8,
+   gl_DSDT_MAG,
+   gl_DSDT8_MAG8,
+   gl_DSDT_MAG_INTENSITY,
+   gl_DSDT8_MAG8_INTENSITY8,
+   gl_HI_SCALE,
+   gl_LO_SCALE,
+   gl_DS_SCALE,
+   gl_DT_SCALE,
+   gl_MAGNITUDE_SCALE,
+   gl_VIBRANCE_SCALE,
+   gl_HI_BIAS,
+   gl_LO_BIAS,
+   gl_DS_BIAS,
+   gl_DT_BIAS,
+   gl_MAGNITUDE_BIAS,
+   gl_VIBRANCE_BIAS,
+   gl_TEXTURE_BORDER_VALUES,
+   gl_TEXTURE_HI_SIZE,
+   gl_TEXTURE_LO_SIZE,
+   gl_TEXTURE_DS_SIZE,
+   gl_TEXTURE_DT_SIZE,
+   gl_TEXTURE_MAG_SIZE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners
+
+gl_TEXTURE_SHADER :: GLenum
+gl_TEXTURE_SHADER = 0x86DE
+
+gl_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING :: GLenum
+gl_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING = 0x86D9
+
+gl_SHADER_OPERATION :: GLenum
+gl_SHADER_OPERATION = 0x86DF
+
+gl_OFFSET_TEXTURE_SCALE :: GLenum
+gl_OFFSET_TEXTURE_SCALE = 0x86E2
+
+gl_OFFSET_TEXTURE_BIAS :: GLenum
+gl_OFFSET_TEXTURE_BIAS = 0x86E3
+
+gl_OFFSET_TEXTURE_2D_SCALE :: GLenum
+gl_OFFSET_TEXTURE_2D_SCALE = gl_OFFSET_TEXTURE_SCALE
+
+gl_OFFSET_TEXTURE_2D_BIAS :: GLenum
+gl_OFFSET_TEXTURE_2D_BIAS = gl_OFFSET_TEXTURE_BIAS
+
+gl_PREVIOUS_TEXTURE_INPUT :: GLenum
+gl_PREVIOUS_TEXTURE_INPUT = 0x86E4
+
+gl_CULL_MODES :: GLenum
+gl_CULL_MODES = 0x86E0
+
+gl_OFFSET_TEXTURE_MATRIX :: GLenum
+gl_OFFSET_TEXTURE_MATRIX = 0x86E1
+
+gl_OFFSET_TEXTURE_2D_MATRIX :: GLenum
+gl_OFFSET_TEXTURE_2D_MATRIX = gl_OFFSET_TEXTURE_MATRIX
+
+gl_CONST_EYE :: GLenum
+gl_CONST_EYE = 0x86E5
+
+gl_SHADER_CONSISTENT :: GLenum
+gl_SHADER_CONSISTENT = 0x86DD
+
+gl_PASS_THROUGH :: GLenum
+gl_PASS_THROUGH = 0x86E6
+
+gl_CULL_FRAGMENT :: GLenum
+gl_CULL_FRAGMENT = 0x86E7
+
+gl_OFFSET_TEXTURE_2D :: GLenum
+gl_OFFSET_TEXTURE_2D = 0x86E8
+
+gl_OFFSET_TEXTURE_RECTANGLE :: GLenum
+gl_OFFSET_TEXTURE_RECTANGLE = 0x864C
+
+gl_OFFSET_TEXTURE_RECTANGLE_SCALE :: GLenum
+gl_OFFSET_TEXTURE_RECTANGLE_SCALE = 0x864D
+
+gl_DEPENDENT_AR_TEXTURE_2D :: GLenum
+gl_DEPENDENT_AR_TEXTURE_2D = 0x86E9
+
+gl_DEPENDENT_GB_TEXTURE_2D :: GLenum
+gl_DEPENDENT_GB_TEXTURE_2D = 0x86EA
+
+gl_DOT_PRODUCT :: GLenum
+gl_DOT_PRODUCT = 0x86EC
+
+gl_DOT_PRODUCT_DEPTH_REPLACE :: GLenum
+gl_DOT_PRODUCT_DEPTH_REPLACE = 0x86ED
+
+gl_DOT_PRODUCT_TEXTURE_2D :: GLenum
+gl_DOT_PRODUCT_TEXTURE_2D = 0x86EE
+
+gl_DOT_PRODUCT_TEXTURE_RECTANGLE :: GLenum
+gl_DOT_PRODUCT_TEXTURE_RECTANGLE = 0x864E
+
+gl_DOT_PRODUCT_TEXTURE_CUBE_MAP :: GLenum
+gl_DOT_PRODUCT_TEXTURE_CUBE_MAP = 0x86F0
+
+gl_DOT_PRODUCT_DIFFUSE_CUBE_MAP :: GLenum
+gl_DOT_PRODUCT_DIFFUSE_CUBE_MAP = 0x86F1
+
+gl_DOT_PRODUCT_REFLECT_CUBE_MAP :: GLenum
+gl_DOT_PRODUCT_REFLECT_CUBE_MAP = 0x86F2
+
+gl_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP :: GLenum
+gl_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP = 0x86F3
+
+gl_HILO :: GLenum
+gl_HILO = 0x86F4
+
+gl_DSDT :: GLenum
+gl_DSDT = 0x86F5
+
+gl_DSDT_MAG :: GLenum
+gl_DSDT_MAG = 0x86F6
+
+gl_DSDT_MAG_VIB :: GLenum
+gl_DSDT_MAG_VIB = 0x86F7
+
+gl_UNSIGNED_INT_S8_S8_8_8 :: GLenum
+gl_UNSIGNED_INT_S8_S8_8_8 = 0x86DA 
+
+gl_UNSIGNED_INT_8_8_S8_S8_REV :: GLenum
+gl_UNSIGNED_INT_8_8_S8_S8_REV = 0x86DB 
+
+gl_SIGNED_RGBA :: GLenum
+gl_SIGNED_RGBA = 0x86FB
+
+gl_SIGNED_RGBA8 :: GLenum
+gl_SIGNED_RGBA8 = 0x86FC
+
+gl_SIGNED_RGB :: GLenum
+gl_SIGNED_RGB = 0x86FE
+
+gl_SIGNED_RGB8 :: GLenum
+gl_SIGNED_RGB8 = 0x86FF
+
+gl_SIGNED_LUMINANCE :: GLenum
+gl_SIGNED_LUMINANCE = 0x8701
+
+gl_SIGNED_LUMINANCE8 :: GLenum
+gl_SIGNED_LUMINANCE8 = 0x8702
+
+gl_SIGNED_LUMINANCE_ALPHA :: GLenum
+gl_SIGNED_LUMINANCE_ALPHA = 0x8703
+
+gl_SIGNED_LUMINANCE8_ALPHA8 :: GLenum
+gl_SIGNED_LUMINANCE8_ALPHA8 = 0x8704
+
+gl_SIGNED_ALPHA :: GLenum
+gl_SIGNED_ALPHA = 0x8705
+
+gl_SIGNED_ALPHA8 :: GLenum
+gl_SIGNED_ALPHA8 = 0x8706
+
+gl_SIGNED_INTENSITY :: GLenum
+gl_SIGNED_INTENSITY = 0x8707
+
+gl_SIGNED_INTENSITY8 :: GLenum
+gl_SIGNED_INTENSITY8 = 0x8708
+
+gl_SIGNED_RGB_UNSIGNED_ALPHA :: GLenum
+gl_SIGNED_RGB_UNSIGNED_ALPHA = 0x870C
+
+gl_SIGNED_RGB8_UNSIGNED_ALPHA8 :: GLenum
+gl_SIGNED_RGB8_UNSIGNED_ALPHA8 = 0x870D
+
+gl_HILO16 :: GLenum
+gl_HILO16 = 0x86F8
+
+gl_SIGNED_HILO :: GLenum
+gl_SIGNED_HILO = 0x86F9
+
+gl_SIGNED_HILO16 :: GLenum
+gl_SIGNED_HILO16 = 0x86FA
+
+gl_DSDT8 :: GLenum
+gl_DSDT8 = 0x8709
+
+gl_DSDT8_MAG8 :: GLenum
+gl_DSDT8_MAG8 = 0x870A
+
+gl_DSDT_MAG_INTENSITY :: GLenum
+gl_DSDT_MAG_INTENSITY = 0x86DC
+
+gl_DSDT8_MAG8_INTENSITY8 :: GLenum
+gl_DSDT8_MAG8_INTENSITY8 = 0x870B
+
+gl_HI_SCALE :: GLenum
+gl_HI_SCALE = 0x870E
+
+gl_LO_SCALE :: GLenum
+gl_LO_SCALE = 0x870F
+
+gl_DS_SCALE :: GLenum
+gl_DS_SCALE = 0x8710
+
+gl_DT_SCALE :: GLenum
+gl_DT_SCALE = 0x8711
+
+gl_MAGNITUDE_SCALE :: GLenum
+gl_MAGNITUDE_SCALE = 0x8712
+
+gl_VIBRANCE_SCALE :: GLenum
+gl_VIBRANCE_SCALE = 0x8713
+
+gl_HI_BIAS :: GLenum
+gl_HI_BIAS = 0x8714
+
+gl_LO_BIAS :: GLenum
+gl_LO_BIAS = 0x8715
+
+gl_DS_BIAS :: GLenum
+gl_DS_BIAS = 0x8716
+
+gl_DT_BIAS :: GLenum
+gl_DT_BIAS = 0x8717
+
+gl_MAGNITUDE_BIAS :: GLenum
+gl_MAGNITUDE_BIAS = 0x8718
+
+gl_VIBRANCE_BIAS :: GLenum
+gl_VIBRANCE_BIAS = 0x8719
+
+gl_TEXTURE_BORDER_VALUES :: GLenum
+gl_TEXTURE_BORDER_VALUES = 0x871A
+
+gl_TEXTURE_HI_SIZE :: GLenum
+gl_TEXTURE_HI_SIZE = 0x871B
+
+gl_TEXTURE_LO_SIZE :: GLenum
+gl_TEXTURE_LO_SIZE = 0x871C
+
+gl_TEXTURE_DS_SIZE :: GLenum
+gl_TEXTURE_DS_SIZE = 0x871D
+
+gl_TEXTURE_DT_SIZE :: GLenum
+gl_TEXTURE_DT_SIZE = 0x871E
+
+gl_TEXTURE_MAG_SIZE :: GLenum
+gl_TEXTURE_MAG_SIZE = 0x871F
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader2.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader2.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader2.hs
@@ -0,0 +1,53 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.TextureShader2
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_texture_shader2 extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/texture_shader2.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.TextureShader2 (
+   -- * Tokens
+   gl_DOT_PRODUCT_TEXTURE_3D,
+   gl_HILO,
+   gl_DSDT,
+   gl_DSDT_MAG,
+   gl_DSDT_MAG_VIB,
+   gl_UNSIGNED_INT_S8_S8_8_8,
+   gl_UNSIGNED_INT_8_8_S8_S8_REV,
+   gl_SIGNED_RGBA,
+   gl_SIGNED_RGBA8,
+   gl_SIGNED_RGB,
+   gl_SIGNED_RGB8,
+   gl_SIGNED_LUMINANCE,
+   gl_SIGNED_LUMINANCE8,
+   gl_SIGNED_LUMINANCE_ALPHA,
+   gl_SIGNED_LUMINANCE8_ALPHA8,
+   gl_SIGNED_ALPHA,
+   gl_SIGNED_ALPHA8,
+   gl_SIGNED_INTENSITY,
+   gl_SIGNED_INTENSITY8,
+   gl_SIGNED_RGB_UNSIGNED_ALPHA,
+   gl_SIGNED_RGB8_UNSIGNED_ALPHA8,
+   gl_HILO16,
+   gl_SIGNED_HILO,
+   gl_SIGNED_HILO16,
+   gl_DSDT8,
+   gl_DSDT8_MAG8,
+   gl_DSDT_MAG_INTENSITY,
+   gl_DSDT8_MAG8_INTENSITY8
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.NV.TextureShader
+
+gl_DOT_PRODUCT_TEXTURE_3D :: GLenum
+gl_DOT_PRODUCT_TEXTURE_3D = 0x86EF
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_vertex_array_range extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/vertex_array_range.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange (
+   -- * Functions
+   glVertexArrayRange,
+   glFlushVertexArrayRange,
+   -- * Tokens
+   gl_VERTEX_ARRAY_RANGE,
+   gl_VERTEX_ARRAY_RANGE_LENGTH,
+   gl_VERTEX_ARRAY_RANGE_VALID,
+   gl_MAX_VERTEX_ARRAY_RANGE_ELEMENT,
+   gl_VERTEX_ARRAY_RANGE_POINTER
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_vertex_array_range"
+
+EXTENSION_ENTRY(glVertexArrayRange,GLsizei -> Ptr a -> IO ())
+EXTENSION_ENTRY(glFlushVertexArrayRange,IO ())
+
+gl_VERTEX_ARRAY_RANGE :: GLenum
+gl_VERTEX_ARRAY_RANGE = 0x851D
+
+gl_VERTEX_ARRAY_RANGE_LENGTH :: GLenum
+gl_VERTEX_ARRAY_RANGE_LENGTH = 0x851E
+
+gl_VERTEX_ARRAY_RANGE_VALID :: GLenum
+gl_VERTEX_ARRAY_RANGE_VALID = 0x851F
+
+gl_MAX_VERTEX_ARRAY_RANGE_ELEMENT :: GLenum
+gl_MAX_VERTEX_ARRAY_RANGE_ELEMENT = 0x8520
+
+gl_VERTEX_ARRAY_RANGE_POINTER :: GLenum
+gl_VERTEX_ARRAY_RANGE_POINTER = 0x8521
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange2.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange2.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange2.hs
@@ -0,0 +1,25 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange2
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_vertex_array_range2 extension not
+-- already in the OpenGL 3.1 core, see
+-- <http://www.opengl.org/registry/specs/NV/vertex_array_range2.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange2 (
+   -- * Tokens
+   gl_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+
+gl_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH :: GLenum
+gl_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH = 0x8533
