| Name |
| |
| EXT_texture_shadow_lod |
| |
| Name Strings |
| |
| GL_EXT_texture_shadow_lod |
| |
| Contact |
| |
| Billy Clack, NVIDIA Corporation (bclack 'at' nvidia.com) |
| |
| Contributors |
| |
| Ashwin Lele, NVIDIA Corporation |
| Daniel Koch, NVIDIA Corporation |
| Graeme Leese, Broadcom Corporation |
| Pyarelal Knowles, NVIDIA Corporation |
| Sagar Ghuge, Intel Corporation |
| Mark Janes, Intel Corporation |
| |
| Status |
| |
| Complete. |
| |
| Version |
| |
| Last Modified Date: June 3, 2019 |
| Revision: 2 |
| |
| Number |
| |
| OpenGL Extension #539 |
| OpenGL ES Extension #320 |
| |
| Dependencies |
| |
| OpenGL 2.0 or OpenGL ES 3.0 is required. |
| |
| This extension is written against the OpenGL Shading Language |
| Specification, version 4.60.5 dated July 14, 2018. |
| |
| The same shading language modifications should also be applied to the |
| OpenGL ES Shading Language Specification, version 3.20.4 under the |
| corresponding sections. |
| |
| This extension interacts with ARB_texture_cube_map_array and OpenGL 4.0. |
| |
| This extension interacts with OES_texture_cube_map_array and OpenGL ES 3.2. |
| |
| This extension interacts with EXT_texture_cube_map_array and OpenGL ES 3.2. |
| |
| This extension requires EXT_gpu_shader4 or equivalent functionality. |
| |
| Overview |
| |
| This extension adds support for various shadow sampler types with texture |
| functions having interactions with the LOD of texture lookups. Modern |
| shading languages support LOD queries for shadow sampler types, but until |
| now the OpenGL Shading Language Specification has excluded multiple texture |
| function overloads involving LOD calculations with various shadow samplers. |
| Shading languages for other APIs do support the equivalent LOD-based |
| texture sampling functions for these types which has made porting between |
| those shading languages to GLSL cumbersome and has required the usage of |
| sub-optimal workarounds. |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| None |
| |
| Modification to the OpenGL Shading Language Specification, Version 4.60.5 |
| |
| Including the following line in a shader can be used to control |
| the language features described in this extension: |
| |
| #extension GL_EXT_texture_shadow_lod : <behavior> |
| |
| where <behavior> is specified in section 3.3. |
| |
| New preprocessor #defines are added to the OpenGL Shading Language: |
| |
| #define GL_EXT_texture_shadow_lod 1 |
| |
| |
| Add to section 8.9.2 "Texel Lookup Functions" (p. 170): |
| |
| (Add variants of the texture lookup functions with supplied bias p. 170) |
| |
| float texture(sampler2DArrayShadow sampler, vec4 P [, float bias]) |
| float texture(samplerCubeArrayShadow sampler, vec4 P, float compare [, float bias]) |
| |
| |
| (Add variant of the texture lookup function with supplied offset and optional supplied bias p. 170) |
| |
| float textureOffset(sampler2DArrayShadow sampler, vec4 P, ivec2 offset [, float bias]) |
| |
| |
| (Add new functions to the set of allowed texture LOD lookup functions p. 170) |
| |
| float textureLod(sampler2DArrayShadow sampler, vec4 P, float lod) |
| float textureLod(samplerCubeShadow sampler, vec4 P, float lod) |
| float textureLod(samplerCubeArrayShadow sampler, vec4 P, float compare, float lod) |
| float textureLodOffset(sampler2DArrayShadow sampler, vec4 P, float lod, ivec2 offset) |
| |
| Dependencies on ARB_texture_cube_map_array and OpenGL 4.0 |
| |
| If neither ARB_texture_cube_map_array nor OpenGL 4.0 are supported for |
| OpenGL contexts, ignore references to samplerCubeArrayShadow. |
| |
| Dependencies on OES_texture_cube_map_array, EXT_texture_cube_map_array and OpenGL ES 3.2 |
| |
| If neither OES_texture_cube_map_array, EXT_texture_cube_map_array, nor OpenGL ES 3.2 are supported for |
| OpenGL ES contexts, ignore references to samplerCubeArrayShadow. |
| |
| Issues |
| |
| (1) Are there any other texture function and sampler combinations that are |
| missing from the specifications that might be valid combinations? |
| |
| RESOLVED: Yes, as of GLSL 4.60.5 and ESSL 3.20.4, there are other |
| missing texture functions and sampler combinations that might be valid |
| but this extension does not add support for. |
| |
| There is no support for Cube samplers and textureOffset family of |
| functions, and no support for Array samplers with textureProj family |
| of functions. This extension does not add support for these functions |
| since they are 1) not related to shadow samplers and thus outside the |
| scope of this extension, 2) not yet clear if these combinations should |
| be supported at all, and 3) if support should be added then each |
| family of missing functions is deserving of its own extension. |
| |
| textureGrad() is missing support for samplerCubeArrayShadow in both |
| the GLSL and ESSL specifications, and is also missing support for |
| gsampler2DArray variants only in the ESSL specification. The |
| samplerCubeArrayShadow variant is not included in this extension |
| because not all vendors can easily support the additional parameter |
| beyond the gradients. The missing gsampler2DArray variants in ESSL |
| are not added because they are unrelated to shadow types and thus |
| outside the scope of this extension. |
| |
| (2) The GLSL specification already contains a definition for |
| textureOffset() with sampler2DArrayShadow; does this mean only the optional |
| bias variant of this function is needed? |
| |
| RESOLVED: Yes for GLSL, but the ESSL specification does |
| not have either the non-bias or bias variants of this function so both |
| variants should be defined according to this extension. |
| |
| Revision History |
| |
| Revision 2 |
| - Minor correction on contributor name. |
| |
| Revision 1 |
| - Initial version. |
| |
| |