From 5a3a242a8fc4b9f0cac0e40786dd0c4831517473 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Mon, 18 Oct 2010 15:35:10 -0700 Subject: glsl: Add compiler support for ARB_shader_texture_lod. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Kenneth Graunke Tested-by: Marek Olšák --- .../builtins/profiles/ARB_shader_texture_lod.frag | 64 ++++++++++++++++++++++ .../builtins/profiles/ARB_shader_texture_lod.vert | 46 ++++++++++++++++ src/glsl/builtins/tools/texture_builtins.py | 64 ++++++++++++++++++++++ 3 files changed, 174 insertions(+) create mode 100644 src/glsl/builtins/profiles/ARB_shader_texture_lod.frag create mode 100644 src/glsl/builtins/profiles/ARB_shader_texture_lod.vert (limited to 'src/glsl/builtins') diff --git a/src/glsl/builtins/profiles/ARB_shader_texture_lod.frag b/src/glsl/builtins/profiles/ARB_shader_texture_lod.frag new file mode 100644 index 00000000000..c15e2a10a5b --- /dev/null +++ b/src/glsl/builtins/profiles/ARB_shader_texture_lod.frag @@ -0,0 +1,64 @@ +/* + * The existing isotropic vertex texture functions are added to the + * built-in functions for fragment shaders. + */ +vec4 texture1DLod (sampler1D sampler, float coord, float lod); +vec4 texture1DProjLod(sampler1D sampler, vec2 coord, float lod); +vec4 texture1DProjLod(sampler1D sampler, vec4 coord, float lod); +vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod); +vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod); +vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod); +vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod); +vec4 texture3DProjLod(sampler3D sampler, vec4 coord, float lod); +vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod); +vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod); +vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod); +vec4 shadow1DProjLod(sampler1DShadow sampler, vec4 coord, float lod); +vec4 shadow2DProjLod(sampler2DShadow sampler, vec4 coord, float lod); + +/* New anisotropic texture functions, providing explicit derivatives: */ +vec4 texture1DGradARB (sampler1D sampler, + float P, float dPdx, float dPdy); +vec4 texture1DProjGradARB (sampler1D sampler, + vec2 P, float dPdx, float dPdy); +vec4 texture1DProjGradARB (sampler1D sampler, + vec4 P, float dPdx, float dPdy); + +vec4 texture2DGradARB (sampler2D sampler, + vec2 P, vec2 dPdx, vec2 dPdy); +vec4 texture2DProjGradARB (sampler2D sampler, + vec3 P, vec2 dPdx, vec2 dPdy); +vec4 texture2DProjGradARB (sampler2D sampler, + vec4 P, vec2 dPdx, vec2 dPdy); + +vec4 texture3DGradARB (sampler3D sampler, + vec3 P, vec3 dPdx, vec3 dPdy); +vec4 texture3DProjGradARB (sampler3D sampler, + vec4 P, vec3 dPdx, vec3 dPdy); + +vec4 textureCubeGradARB (samplerCube sampler, + vec3 P, vec3 dPdx, vec3 dPdy); + +vec4 shadow1DGradARB (sampler1DShadow sampler, + vec3 P, float dPdx, float dPdy); +vec4 shadow1DProjGradARB (sampler1DShadow sampler, + vec4 P, float dPdx, float dPdy); + +vec4 shadow2DGradARB (sampler2DShadow sampler, + vec3 P, vec2 dPdx, vec2 dPdy); +vec4 shadow2DProjGradARB (sampler2DShadow sampler, + vec4 P, vec2 dPdx, vec2 dPdy); + +#ifdef GL_ARB_texture_rectangle +vec4 texture2DRectGradARB (sampler2DRect sampler, + vec2 P, vec2 dPdx, vec2 dPdy); +vec4 texture2DRectProjGradARB(sampler2DRect sampler, + vec3 P, vec2 dPdx, vec2 dPdy); +vec4 texture2DRectProjGradARB(sampler2DRect sampler, + vec4 P, vec2 dPdx, vec2 dPdy); + +vec4 shadow2DRectGradARB (sampler2DRectShadow sampler, + vec3 P, vec2 dPdx, vec2 dPdy); +vec4 shadow2DRectProjGradARB (sampler2DRectShadow sampler, + vec4 P, vec2 dPdx, vec2 dPdy); +#endif diff --git a/src/glsl/builtins/profiles/ARB_shader_texture_lod.vert b/src/glsl/builtins/profiles/ARB_shader_texture_lod.vert new file mode 100644 index 00000000000..edfed26fc98 --- /dev/null +++ b/src/glsl/builtins/profiles/ARB_shader_texture_lod.vert @@ -0,0 +1,46 @@ +/* New anisotropic texture functions, providing explicit derivatives: */ +vec4 texture1DGradARB (sampler1D sampler, + float P, float dPdx, float dPdy); +vec4 texture1DProjGradARB (sampler1D sampler, + vec2 P, float dPdx, float dPdy); +vec4 texture1DProjGradARB (sampler1D sampler, + vec4 P, float dPdx, float dPdy); + +vec4 texture2DGradARB (sampler2D sampler, + vec2 P, vec2 dPdx, vec2 dPdy); +vec4 texture2DProjGradARB (sampler2D sampler, + vec3 P, vec2 dPdx, vec2 dPdy); +vec4 texture2DProjGradARB (sampler2D sampler, + vec4 P, vec2 dPdx, vec2 dPdy); + +vec4 texture3DGradARB (sampler3D sampler, + vec3 P, vec3 dPdx, vec3 dPdy); +vec4 texture3DProjGradARB (sampler3D sampler, + vec4 P, vec3 dPdx, vec3 dPdy); + +vec4 textureCubeGradARB (samplerCube sampler, + vec3 P, vec3 dPdx, vec3 dPdy); + +vec4 shadow1DGradARB (sampler1DShadow sampler, + vec3 P, float dPdx, float dPdy); +vec4 shadow1DProjGradARB (sampler1DShadow sampler, + vec4 P, float dPdx, float dPdy); + +vec4 shadow2DGradARB (sampler2DShadow sampler, + vec3 P, vec2 dPdx, vec2 dPdy); +vec4 shadow2DProjGradARB (sampler2DShadow sampler, + vec4 P, vec2 dPdx, vec2 dPdy); + +#ifdef GL_ARB_texture_rectangle +vec4 texture2DRectGradARB (sampler2DRect sampler, + vec2 P, vec2 dPdx, vec2 dPdy); +vec4 texture2DRectProjGradARB(sampler2DRect sampler, + vec3 P, vec2 dPdx, vec2 dPdy); +vec4 texture2DRectProjGradARB(sampler2DRect sampler, + vec4 P, vec2 dPdx, vec2 dPdy); + +vec4 shadow2DRectGradARB (sampler2DRectShadow sampler, + vec3 P, vec2 dPdx, vec2 dPdy); +vec4 shadow2DRectProjGradARB (sampler2DRectShadow sampler, + vec4 P, vec2 dPdx, vec2 dPdy); +#endif diff --git a/src/glsl/builtins/tools/texture_builtins.py b/src/glsl/builtins/tools/texture_builtins.py index 2fbe79010f9..a4054caac98 100755 --- a/src/glsl/builtins/tools/texture_builtins.py +++ b/src/glsl/builtins/tools/texture_builtins.py @@ -369,6 +369,70 @@ def generate_texture_functions(fs): generate_sigs("", "tex", "2DArrayShadow") end_function(fs, "shadow2DArray") + # ARB_shader_texture_lod extension + start_function("texture1DGradARB") + generate_fiu_sigs("txd", "1D") + end_function(fs, "texture1DGradARB") + + start_function("texture2DGradARB") + generate_fiu_sigs("txd", "2D") + end_function(fs, "texture2DGradARB") + + start_function("texture3DGradARB") + generate_fiu_sigs("txd", "3D") + end_function(fs, "texture3DGradARB") + + start_function("textureCubeGradARB") + generate_fiu_sigs("txd", "Cube") + end_function(fs, "textureCubeGradARB") + + start_function("texture1DProjGradARB") + generate_fiu_sigs("txd", "1D", True) + generate_fiu_sigs("txd", "1D", True, 2) + end_function(fs, "texture1DProjGradARB") + + start_function("texture2DProjGradARB") + generate_fiu_sigs("txd", "2D", True) + generate_fiu_sigs("txd", "2D", True, 1) + end_function(fs, "texture2DProjGradARB") + + start_function("texture3DProjGradARB") + generate_fiu_sigs("txd", "3D", True) + end_function(fs, "texture3DProjGradARB") + + start_function("shadow1DGradARB") + generate_sigs("", "txd", "1DShadow", False, 1) + end_function(fs, "shadow1DGradARB") + + start_function("shadow1DProjGradARB") + generate_sigs("", "txd", "1DShadow", True, 1) + end_function(fs, "shadow1DProjGradARB") + + start_function("shadow2DGradARB") + generate_sigs("", "txd", "2DShadow", False) + end_function(fs, "shadow2DGradARB") + + start_function("shadow2DProjGradARB") + generate_sigs("", "txd", "2DShadow", True) + end_function(fs, "shadow2DProjGradARB") + + start_function("texture2DRectGradARB") + generate_sigs("", "txd", "2DRect") + end_function(fs, "texture2DRectGradARB") + + start_function("texture2DRectProjGradARB") + generate_sigs("", "txd", "2DRect", True) + generate_sigs("", "txd", "2DRect", True, 1) + end_function(fs, "texture2DRectProjGradARB") + + start_function("shadow2DRectGradARB") + generate_sigs("", "txd", "2DRectShadow", False) + end_function(fs, "shadow2DRectGradARB") + + start_function("shadow2DRectProjGradARB") + generate_sigs("", "txd", "2DRectShadow", True) + end_function(fs, "shadow2DRectProjGradARB") + # Deprecated (110/120 style) functions with silly names: start_function("texture1D") generate_sigs("", "tex", "1D") -- cgit v1.2.3