OpenGL.GL.ARB.shader_texture_lod
OpenGL extension ARB.shader_texture_lod
This module customises the behaviour of the
OpenGL.raw.GL.ARB.shader_texture_lod to provide a more
Python-friendly API
Overview (from the spec)
This extension adds additional texture functions to the
OpenGL Shading Language which provide the shader writer
with explicit control of LOD.
Mipmap texture fetches and anisotropic texture fetches
require an implicit derivatives to calculate rho, lambda
and/or the line of anisotropy. These implicit derivatives
will be undefined for texture fetches occurring inside
non-uniform control flow or for vertex shader texture
fetches, resulting in undefined texels.
The additional texture functions introduced with
this extension provide explict control of LOD
(isotropic texture functions) or provide explicit
derivatives (anisotropic texture functions).
Anisotropic texture functions return defined texels
for mipmap texture fetches or anisotropic texture fetches,
even inside non-uniform control flow. Isotropic texture
functions return defined texels for mipmap texture fetches,
even inside non-uniform control flow. However, isotropic
texture functions return undefined texels for anisotropic
texture fetches.
The existing isotropic vertex texture functions:
texture1DLod, texture1DProjLod,
texture2DLod, texture2DProjLod,
texture3DLod, texture3DProjLod,
textureCubeLod,
shadow1DLod, shadow1DProjLod,
shadow2DLod, shadow2DProjLod,
are added to the built-in functions for fragment shaders.
New anisotropic texture functions, providing explicit
derivatives:
texture1DGradARB( sampler1D sampler,
float P, float dPdx, float dPdy );
texture1DProjGradARB( sampler1D sampler,
vec2 P, float dPdx, float dPdy );
texture1DProjGradARB( sampler1D sampler,
vec4 P, float dPdx, float dPdy );
texture2DGradARB( sampler2D sampler,
vec2 P, vec2 dPdx, vec2 dPdy );
texture2DProjGradARB( sampler2D sampler,
vec3 P, vec2 dPdx, vec2 dPdy );
texture2DProjGradARB( sampler2D sampler,
vec4 P, vec2 dPdx, vec2 dPdy );
texture3DGradARB( sampler3D sampler,
vec3 P, vec3 dPdx, vec3 dPdy );
texture3DProjGradARB( sampler3D sampler,
vec4 P, vec3 dPdx, vec3 dPdy );
textureCubeGradARB( samplerCube sampler,
vec3 P, vec3 dPdx, vec3 dPdy );
shadow1DGradARB( sampler1DShadow sampler,
vec3 P, float dPdx, float dPdy );
shadow1DProjGradARB( sampler1DShadow sampler,
vec4 P, float dPdx, float dPdy );
shadow2DGradARB( sampler2DShadow sampler,
vec3 P, vec2 dPdx, vec2 dPdy );
shadow2DProjGradARB( sampler2DShadow sampler,
vec4 P, vec2 dPdx, vec2 dPdy );
texture2DRectGradARB( sampler2DRect sampler,
vec2 P, vec2 dPdx, vec2 dPdy );
texture2DRectProjGradARB( sampler2DRect sampler,
vec3 P, vec2 dPdx, vec2 dPdy );
texture2DRectProjGradARB( sampler2DRect sampler,
vec4 P, vec2 dPdx, vec2 dPdy );
shadow2DRectGradARB( sampler2DRectShadow sampler,
vec3 P, vec2 dPdx, vec2 dPdy );
shadow2DRectProjGradARB( sampler2DRectShadow sampler,
vec4 P, vec2 dPdx, vec2 dPdy );
are added to the built-in functions for vertex shaders
and fragment shaders.
The official definition of this extension is available here:
http://www.opengl.org/registry/specs/ARB/shader_texture_lod.txt