Name AMD_gpu_shader_half_float_fetch Name Strings GL_AMD_gpu_shader_half_float_fetch Contact Rex Xu, AMD (rex.xu 'at' amd.com) Contributors Rex Xu, AMD Qun Lin, AMD Daniel Rakos, AMD Graham Sellers, AMD Dominik Witczak, AMD Status Shipping Version Last Modified Date: 9/20/2017 Author Revision: 5 Number 519 Dependencies This extension is written against the OpenGL 4.5 (Core Profile) Specification. This extension is written against version 4.50 of the OpenGL Shading Language Specification. OpenGL 4.0 and GLSL 4.00 are required. This extension requires AMD_gpu_shader_half_float. This extension interacts with ARB_sparse_texture2. This extension interacts with ARB_sparse_texture_clamp. This extension interacts with KHR_vulkan_glsl. This extension interacts with AMD_texture_gather_bias_lod. Overview This extension was developed based on the AMD_gpu_shader_half_float extension to allow implementations supporting half-precision floating-point both in shader texture functions and in shader image memory functions. New Procedures and Functions None. New Tokens Returned by the parameter of GetActiveUniform and GetProgramResourceiv: (New tokens) FLOAT16_SAMPLER_1D_AMD 0x91CE FLOAT16_SAMPLER_2D_AMD 0x91CF FLOAT16_SAMPLER_3D_AMD 0x91D0 FLOAT16_SAMPLER_CUBE_AMD 0x91D1 FLOAT16_SAMPLER_2D_RECT_AMD 0x91D2 FLOAT16_SAMPLER_1D_ARRAY_AMD 0x91D3 FLOAT16_SAMPLER_2D_ARRAY_AMD 0x91D4 FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD 0x91D5 FLOAT16_SAMPLER_BUFFER_AMD 0x91D6 FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD 0x91D7 FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD 0x91D8 FLOAT16_SAMPLER_1D_SHADOW_AMD 0x91D9 FLOAT16_SAMPLER_2D_SHADOW_AMD 0x91DA FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD 0x91DB FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD 0x91DC FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD 0x91DD FLOAT16_SAMPLER_CUBE_SHADOW_AMD 0x91DE FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD 0x91DF FLOAT16_IMAGE_1D_AMD 0x91E0 FLOAT16_IMAGE_2D_AMD 0x91E1 FLOAT16_IMAGE_3D_AMD 0x91E2 FLOAT16_IMAGE_2D_RECT_AMD 0x91E3 FLOAT16_IMAGE_CUBE_AMD 0x91E4 FLOAT16_IMAGE_1D_ARRAY_AMD 0x91E5 FLOAT16_IMAGE_2D_ARRAY_AMD 0x91E6 FLOAT16_IMAGE_CUBE_MAP_ARRAY_AMD 0x91E7 FLOAT16_IMAGE_BUFFER_AMD 0x91E8 FLOAT16_IMAGE_2D_MULTISAMPLE_AMD 0x91E9 FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD 0x91EA Additions to Chapter 7 of the OpenGL 4.5 (Core Profile) Specification (Program Objects) Modify Section 7.3.1, Program Interfaces (add to Table 7.3, OpenGL Shading Language type tokens, p. 107) +-------------------------------------------+---------------------------+------+------+------+ | Type Name Token | Keyword |Attrib| Xfb |Buffer| +-------------------------------------------+---------------------------+------+------+------+ | FLOAT16_SAMPLER_1D_AMD | f16sampler1D | | | | | FLOAT16_SAMPLER_2D_AMD | f16sampler2D | | | | | FLOAT16_SAMPLER_3D_AMD | f16sampler3D | | | | | FLOAT16_SAMPLER_CUBE_AMD | f16samplerCube | | | | | FLOAT16_SAMPLER_2D_RECT_AMD | f16sampler2DRect | | | | | FLOAT16_SAMPLER_1D_ARRAY_AMD | f16sampler1DArray | | | | | FLOAT16_SAMPLER_2D_ARRAY_AMD | f16sampler2DArray | | | | | FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD | f16sampler1DArray | | | | | FLOAT16_SAMPLER_BUFFER_AMD | f16samplerBuffer | | | | | FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD | f16sampler2DMS | | | | | FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD | f16sampler2DMSArray | | | | | FLOAT16_SAMPLER_1D_SHADOW_AMD | f16sampler1DShadow | | | | | FLOAT16_SAMPLER_2D_SHADOW_AMD | f16sampler2DShadow | | | | | FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD | f16sampler2DRectShadow | | | | | FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD | f16sampler1DArrayShaow | | | | | FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD | f16sampler2DArrayShadow | | | | | FLOAT16_SAMPLER_CUBE_SHADOW_AMD | f16samplerCubeShadow | | | | | FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD | f16samplerCubeArrayShadow | | | | | FLOAT16_IMAGE_1D_AMD | f16image1D | | | | | FLOAT16_IMAGE_2D_AMD | f16image2D | | | | | FLOAT16_IMAGE_3D_AMD | f16image3D | | | | | FLOAT16_IMAGE_2D_RECT_AMD | f16image2DRect | | | | | FLOAT16_IMAGE_CUBE_AMD | f16imageCube | | | | | FLOAT16_IMAGE_1D_ARRAY_AMD | f16image1DArray | | | | | FLOAT16_IMAGE_2D_ARRAY_AMD | f16image2DArray | | | | | FLOAT16_IMAGE_CUBE_MAP_ARRAY_AMD | f16imageCubeArray | | | | | FLOAT16_IMAGE_BUFFER_AMD | f16imageBuffer | | | | | FLOAT16_IMAGE_2D_MULTISAMPLE_AMD | f16image2DMS | | | | | FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD | f16image2DMSArray | | | | +-------------------------------------------+---------------------------+------+------+------+ Modifications to the OpenGL Shading Language Specification, Version 4.50 Including the following line in a shader can be used to control the language features described in this extension: #extension GL_AMD_gpu_shader_half_float_fetch : where is as specified in section 3.3. New preprocessor #defines are added to the OpenGL Shading Language: #define GL_AMD_gpu_shader_half_float_fetch 1 Additions to Chapter 3 of the OpenGL Shading Language Specification (Basics) Modify Section 3.6, Keywords (add the following to the list of reserved keywords at p. 18) f16sampler1D f16sampler2D f16sampler3D f16sampler2DRect f16samplerCube f16sampler1DArray f16sampler2DArray f16samplerCubeArray f16samplerBuffer f16sampler2DMS f16sampler2DMSArray f16sampler1DShadow f16sampler2DShadow f16sampler1DArrayShadow f16sampler2DArrayShadow f16sampler2DRectShadow f16samplerCubeShadow f16samplerCubeArrayShadow f16image1D f16image2D f16image3D f16image2DRect f16imageCube f16image1DArray f16image2DArray f16imageCubeArray f16imageBuffer f16image2DMS f16image2DMSArray Additions to Chapter 4 of the OpenGL Shading Language Specification (Variables and Types) Modify Section 4.1, Basic Types (insert new types, interleaved with the existing types, to the "Type" table cell of the table "Floating-Point Opaque Types", p. 23) +---------------------------+-----------------------------------------------------------------+ | Type | Meaning | +---------------------------+-----------------------------------------------------------------+ | f16sampler1D | a handle for accessing a 1D texture (the result is half- | | f16image1D | precision if it is floating-point typed) | | f16sampler2D | a handle for accessing a 2D texture (the result is half- | | f16image2D | precision if it is floating-point typed) | | f16sampler3D | a handle for accessing a 3D texture (the result is half- | | f16image3D | precision if it is floating-point typed) | | f16samplerCube | a handle for accessing a cube mapped texture (the result is | | f16imageCube | half-precision if it is floating-point typed) | | f16sampler2DRect | a handle for accessing a rectangle texture (the result is half- | | f16image2DRect | precision if it is floating-point typed) | | f16sampler1DArray | a handle for accessing a 1D array texture (the result is half- | | f16image1DArray | precision if it is floating-point typed) | | f16sampler2DArray | a handle for accessing a 2D array texture (the result is half- | | f16image2DArray | precision if it is floating-point typed) | | f16samplerBuffer | a handle for accessing a buffer texture (the result is half- | | f16imageBuffer | precision if it is floating-point typed) | | f16sampler2DMS | a handle for accessing a 2D multi-sample texture (the result is | | f16image2DMS | half-precision if it is floating-point typed) | | f16sampler2DMSArray | a handle for accessing a 2D multi-sample array texture (the | | f16image2DMSArray | result is half-precision if it is floating-point typed) | | f16samplerCubeArray | a handle for accessing a cube map array texture (the result is | | f16imageCubeArray | half-precision if it is floating-point typed) | | f16sampler1DShadow | a handle for accessing a 1D depth texture with comparison (the | | | result is half-precision if it is floating-point typed) | | f16sampler2DShadow | a handle for accessing a 2D depth texture with comparison (the | | | result is half-precision if it is floating-point typed) | | f16sampler2DRectShadow | a handle for accessing a rectangle texture with comparison (the | | | result is half-precision if it is floating-point typed) | | f16sampler1DArrayShadow | a handle for accessing a 1D array depth texture with comparison | | | (the result is half-precision if it is floating-point typed) | | f16sampler2DArrayShadow | a handle for accessing a 2D array depth texture with comparison | | | (the result is half-precision if it is floating-point typed) | | f16samplerCubeShadow | a handle for accessing a cube map depth texture with comparison | | | (the result is half-precision if it is floating-point typed) | | f16samplerCubeArrayShadow | a handle for accessing a cube map array depth texture with | | | comparison (the result is half-precision if it is floating-point| | | typed) | +---------------------------+-----------------------------------------------------------------+ Modify Section 4.4.6.2 Format Layout Qualifiers (modify the third sentence of the first paragraph on p. 83) ... any image variable declaration. For image variables with floating-point component types (keywords starting with "image" or "f16image"), signed integer component types (keywords starting with "iimage"), or unsigned integer component types (keywords starting with "uimage"), the format qualifier used must match the float-image-format-qualifier, int-image-format- qualifier, or uint-image-format-qualifier grammar rules, respectively. Additions to Chapter 8 of the OpenGL Shading Language Specification (Built-in Functions) Modify Section 8.9 Texture Functions (modify the second paragraph on p. 160) Texture data can be stored by the GL as floating point, unsigned normalized integer, unsigned integer or signed integer data. This is determined by the type of the internal format of the texture. Texture lookups on unsigned normalized integer and floating-point data return single- precision or half-precision floating-point values in the range [0, 1]. (modify table head on p. 160) +------------------+-------------------------------------+----------------+------------------+ | Internal Texture | Single-Precision or Half-Precision | Signed Integer | Unsigned Integer | | Format | Floating Point Sampler Types | Sampler Types | Sampler Types | +------------------+-------------------------------------+----------------+------------------+ (modify the third sentence of the fourth paragraph on p. 160) ... a uvec4. If a single-precision floating-point sampler type is used, the result of a texture lookup is a vec4. If a half-precision floating-point sampler type is used, the result of a texture lookup is a f16vec4. In the prototypes below, the "g" in the return type "gvec4" is used as a placeholder for nothing, "f16", "i", or "u" making a return type of vec4, f16vec4, ivec4, uvec4. In these cases, the sampler argument type also starts with "g", indicating the same substitution done on the return type; it is either a single-precision floating point, half-precision floating point, signed integer, or unsigned integer sampler, matching the basic type of the return type, as described above. Modify Section 8.9.1 Texture Query Functions (insert new functions, whose prototypes are different from those existing ones, to the "Syntax" table cell of each query function group on p. 162-163) +--------------------------------------------------------------+------------------------------+ | Syntax | Description | +--------------------------------------------------------------+------------------------------+ | int textureSize(f16sampler1DShadow sampler, int lod) | Returns the dimensions of | | ivec2 textureSize(f16sampler2DShadow sampler, int lod) | level (if present) for | | ivec2 textureSize(f16samplerCubeShadow sampler, int lod) | the texture bound to sampler,| | ivec3 textureSize(f16samplerCubeArrayShadow sampler, int lod)| ... | | ivec2 textureSize(f16sampler2DRectShadow sampler) | | | ivec2 textureSize(f16sampler1DArrayShadow sampler, int lod) | | | ivec3 textureSize(f16sampler2DArrayShadow sampler, int lod) | | +--------------------------------------------------------------+------------------------------+ | vec2 textureQueryLod(f16sampler1D sampler, float16_t P) | Returns the mipmap array(s) | | vec2 textureQueryLod(f16sampler2D sampler, f16vec2 P) | that would be accessed in the| | vec2 textureQueryLod(f16sampler3D sampler, f16vec3 P) | x component of the return | | vec2 textureQueryLod(f16samplerCube sampler, f16vec3 P) | value. | | vec2 textureQueryLod(f16sampler1DArray sampler, | ... | | float16_t P) | | | vec2 textureQueryLod(f16sampler2DArray sampler, f16vec2 P) | | | vec2 textureQueryLod(f16samplerCubeArray sampler, | | | f16vec3 P) | | | vec2 textureQueryLod(f16sampler1DShadow sampler, | | | float16_t P) | | | vec2 textureQueryLod(f16sampler2DShadow sampler, | | | f16vec2 P) | | | vec2 textureQueryLod(f16samplerCubeShadow sampler, | | | f16vec3 P) | | | vec2 textureQueryLod(f16sampler1DArrayShadow sampler, | | | float16_t P) | | | vec2 textureQueryLod(f16sampler2DArrayShadow sampler, | | | f16vec2 P) | | | vec2 textureQueryLod(f16samplerCubeArrayShadow sampler, | | | f16vec3 P) | | +--------------------------------------------------------------+------------------------------+ | int textureQueryLevels(f16sampler1DShadow sampler) | Returns the number of mipmap | | int textureQueryLevels(f16sampler2DShadow sampler) | levels accessible in the | | int textureQueryLevels(f16samplerCubeShadow sampler) | texture associated with | | int textureQueryLevels(f16sampler1DArrayShadow sampler) | sampler, ... | | int textureQueryLevels(f16sampler2DArrayShadow sampler) | | | int textureQueryLevels(f16samplerCubeArrayShadow sampler) | | +--------------------------------------------------------------+------------------------------+ Modify Section 8.9.2 Texel Lookup Functions (insert new functions, whose prototypes are different from those existing ones, to the "Syntax" table cell of each lookup function group, and modify certain descriptions in the "Description" table cells of texture() and textureProj() on p. 164-170) +--------------------------------------------------------------+------------------------------+ | Syntax | Description | +--------------------------------------------------------------+------------------------------+ | f16vec4 texture(f16sampler1D sampler, float16_t P | Use the texture coordinate P | | [, float16_t bias]) | to do a texture lookup in the| | f16vec4 texture(f16sampler2D sampler, f16vec2 P | texture currently bound to | | [, float16_t bias]) | . | | f16vec4 texture(f16sampler3D sampler, f16vec3 P | | | [, float16_t bias]) | For shadow forms: When | | f16vec4 texture(f16samplerCube sampler, f16vec3 P | is present, it is | | [, float16_t bias]) | used as , and the array| | float16_t texture(f16sampler1DShadow sampler, vec3 P | layer comes from the last | | [, float bias]) | component of

. When | | float16_t texture(f16sampler1DShadow sampler, f16vec2 P, | is not present, the| | float compare [, float16_t bias]) | last component of

is used| | float16_t texture(f16sampler2DShadow sampler, vec3 P | as and the array layer| | [, float bias]) | comes from the second to last| | float16_t texture(f16sampler2DShadow sampler, f16vec2 P, | component of

. | | float compare [, float16_t bias]) | | | float16_t texture(f16samplerCubeShadow sampler, vec4 P | ... | | [, float bias]) | | | float16_t texture(f16samplerCubeShadow sampler, f16vec3 P, | | | float compare [, float16_t bias]) | | | f16vec4 texture(f16sampler1DArray sampler, f16vec2 P | | | [, float16_t bias]) | | | f16vec4 texture(f16sampler2DArray sampler, f16vec3 P | | | [, float16_t bias]) | | | f16vec4 texture(f16samplerCubeArray sampler, f16vec4 P | | | [, float16_t bias]) | | | float16_t texture(f16sampler1DArrayShadow sampler, vec3 P | | | [, float bias]) | | | float16_t texture(f16sampler1DArrayShadow sampler, f16vec2 P,| | | float compare [, float16_t bias]) | | | float16_t texture(f16sampler2DArrayShadow sampler, vec4 P) | | | float16_t texture(f16sampler2DArrayShadow sampler, f16vec3 P,| | | float compare) | | | f16vec4 texture(f16sampler2DRect sampler, f16vec2 P) | | | float16_t texture(f16sampler2DRectShadow sampler, vec3 P) | | | float16_t texture(f16sampler2DRectShadow sampler, f16vec2 P, | | | float compare) | | | float16_t texture(f16samplerCubeArrayShadow sampler, vec4 P, | | | float compare) | | | float16_t texture(f16samplerCubeArrayShadow sampler, | | | f16vec4 P, float compare) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureProj(f16sampler1D sampler, f16vec2 P | Do a texture lookup with | | [, float16_t bias]) | projection. The texture | | f16vec4 textureProj(f16sampler1D sampler, f16vec4 P | coordinates consumed from | | [, float16_t bias]) |

, not including the last | | f16vec4 textureProj(f16sampler2D sampler, f16vec3 P | component of

, and | | [, float16_t bias]) | , if present in the | | f16vec4 textureProj(f16sampler2D sampler, f16vec4 P | shadow forms, are divided by | | [, float16_t bias]) | the last component of

. | | f16vec4 textureProj(f16sampler3D sampler, f16vec4 P | When present in the shadow | | [, float16_t bias]) | forms, the resulting | | float16_t textureProj(f16sampler1DShadow sampler, vec4 P | is used as Dref. | | [, float bias]) | When is not | | float16_t textureProj(f16sampler1DShadow sampler, f16vec3 P | present, the resulting 3rd | | float compare [, float16_t bias]) | component of

in the | | float16_t textureProj(f16sampler2DShadow sampler, vec4 P | shadow forms is used as | | [, float bias]) | . After these values | | float16_t textureProj(f16sampler2DShadow sampler, f16vec3 P | are computed, texture lookup | | float compare [, float16_t bias]) | proceeds as in texture(). | | f16vec4 textureProj(f16sampler2DRect sampler, f16vec3 P) | | | f16vec4 textureProj(f16sampler2DRect sampler, f16vec4 P) | | | float16_t textureProj(f16sampler2DRectShadow sampler, vec4 P)| | | float16_t textureProj(f16sampler2DRectShadow sampler, | | | f16vec3 P, float compare) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureLod(f16sampler1D sampler, float16_t P, | Do a texture lookup as in | | float16_t lod) | texture() but with explicit | | f16vec4 textureLod(f16sampler2D sampler, f16vec2 P, | LOD; ... | | float16_t lod) | | | f16vec4 textureLod(f16sampler3D sampler, f16vec3 P, | | | float16_t lod) | | | f16vec4 textureLod(f16samplerCube sampler, f16vec3 P, | | | float16_t lod) | | | float16_t textureLod(f16sampler1DShadow sampler, vec3 P, | | | float lod) | | | float16_t textureLod(f16sampler1DShadow sampler, f16vec2 P, | | | float compare, float16_t lod) | | | float16_t textureLod(f16sampler2DShadow sampler, vec3 P, | | | float lod) | | | float16_t textureLod(f16sampler2DShadow sampler, f16vec2 P, | | | float compare, float16_t lod) | | | f16vec4 textureLod(f16sampler1DArray sampler, f16vec2 P, | | | float16_t lod) | | | f16vec4 textureLod(f16sampler2DArray sampler, f16vec3 P, | | | float16_t lod) | | | float16_t textureLod(f16sampler1DArrayShadow sampler, vec3 P,| | | float lod) | | | float16_t textureLod(f16sampler1DArrayShadow sampler, | | | f16vec2 P, float compare, float16_t lod)| | | f16vec4 textureLod(f16samplerCubeArray sampler, f16vec4 P, | | | float16_t lod) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureOffset(f16sampler1D sampler, float16_t P, | Do a texture lookup as in | | int offset [, float16_t bias]) | texture() but with | | f16vec4 textureOffset(f16sampler2D sampler, f16vec2 P, | added to the (u,v,w) texel | | ivec2 offset [, float16_t bias]) | coordinates before looking up| | f16vec4 textureOffset(f16sampler3D sampler, f16vec3 P, | each texel. ... | | ivec3 offset [, float16_t bias]) | | | f16vec4 textureOffset(f16sampler2DRect sampler, f16vec2 P, | | | ivec2 offset) | | | float16_t textureOffset(f16sampler2DRectShadow sampler, | | | vec3 P, ivec2 offset) | | | float16_t textureOffset(f16sampler2DRectShadow sampler, | | | f16vec2 P, float compare, | | | ivec2 offset) | | | float16_t textureOffset(f16sampler1DShadow sampler, vec3 P, | | | int offset [, float bias]) | | | float16_t textureOffset(f16sampler1DShadow sampler, | | | f16vec2 P, float compare, int offset | | | [, float16_t bias]) | | | float16_t textureOffset(f16sampler2DShadow sampler, vec3 P, | | | ivec2 offset [, float bias]) | | | float16_t textureOffset(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | ivec2 offset [, float16_t bias]) | | | f16vec4 textureOffset(f16sampler1DArray sampler, f16vec2 P,| | | int offset [, float16_t bias]) | | | f16vec4 textureOffset(f16sampler2DArray sampler, f16vec3 P,| | | ivec2 offset [, float16_t bias]) | | | float16_t textureOffset(f16sampler1DArrayShadow sampler, | | | vec3 P, int offset [, float bias]) | | | float16_t textureOffset(f16sampler1DArrayShadow sampler, | | | f16vec2 P, float compare, int offset | | | [, float16_t bias]) | | | float16_t textureOffset(f16sampler2DArrayShadow sampler, | | | vec4 P, ivec2 offset) | | | float16_t textureOffset(f16sampler2DArrayShadow sampler, | | | f16vec3 P, float compare, | | | ivec2 offset) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureProjOffset(f16sampler1D sampler, f16vec2 P, | Do a projective texture | | int offset [, float16_t bias]) | lookup as described in | | f16vec4 textureProjOffset(f16sampler1D sampler, f16vec4 P, | textureProj() offset by | | int offset [, float16_t bias]) | as described in | | f16vec4 textureProjOffset(f16sampler2D sampler, f16vec3 P, | textureOffset(). | | ivec2 offset [, float16_t bias]) | | | f16vec4 textureProjOffset(f16sampler2D sampler, f16vec4 P, | | | ivec2 offset [, float16_t bias]) | | | f16vec4 textureProjOffset(f16sampler3D sampler, f16vec4 P, | | | ivec3 offset [, float16_t bias]) | | | f16vec4 textureProjOffset(f16sampler2DRect sampler, | | | f16vec3 P, ivec2 offset) | | | f16vec4 textureProjOffset(f16sampler2DRect sampler, | | | f16vec4 P, ivec2 offset) | | | float16_t textureProjOffset(f16sampler2DRectShadow sampler, | | | vec4 P, ivec2 offset) | | | float16_t textureProjOffset(f16sampler2DRectShadow sampler, | | | f16vec3 P, float compare, | | | ivec2 offset) | | | float16_t textureProjOffset(f16sampler1DShadow sampler, | | | vec4 P, int offset | | | [, float bias]) | | | float16_t textureProjOffset(f16sampler1DShadow sampler, | | | f16vec3 P, float compare, | | | int offset [, float16_t bias]) | | | float16_t textureProjOffset(f16sampler2DShadow sampler, | | | vec4 P, ivec2 offset | | | [, float bias]) | | | float16_t textureProjOffset(f16sampler2DShadow sampler, | | | f16vec3 P, float compare, | | | ivec2 offset [, float16_t bias]) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureLodOffset(f16sampler1D sampler, float16_t P,| Do an offset texture lookup | | float16_t lod, int offset) | with explicit LOD. ... | | f16vec4 textureLodOffset(f16sampler2D sampler, f16vec2 P, | | | float16_t lod, ivec2 offset) | | | f16vec4 textureLodOffset(f16sampler3D sampler, f16vec3 P, | | | float16_t lod, ivec3 offset) | | | float16_t textureLodOffset(f16sampler1DShadow sampler, | | | vec3 P, float lod, int offset) | | | float16_t textureLodOffset(f16sampler1DShadow sampler, | | | f16vec2 P, float compare, | | | float16_t lod, int offset) | | | float16_t textureLodOffset(f16sampler2DShadow sampler, | | | vec3 P, float lod, ivec2 offset) | | | float16_t textureLodOffset(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | float16_t lod, ivec2 offset) | | | f16vec4 textureLodOffset(f16sampler1DArray sampler, | | | f16vec2 P, float16_t lod, | | | int offset) | | | f16vec4 textureLodOffset(f16sampler2DArray sampler, | | | f16vec3 P, float16_t lod, | | | ivec2 offset) | | | float16_t textureLodOffset(f16sampler1DArrayShadow sampler, | | | vec3 P, float lod, int offset) | | | float16_t textureLodOffset(f16sampler1DArrayShadow sampler, | | | f16vec2 P, float compare, | | | float16_t lod, int offset) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureProjLod(f16sampler1D sampler, f16vec2 P, | Do a projective texture | | float16_t lod) | lookup with explicit LOD. ...| | f16vec4 textureProjLod(f16sampler1D sampler, f16vec4 P, | | | float16_t lod) | | | f16vec4 textureProjLod(f16sampler2D sampler, f16vec3 P, | | | float16_t lod) | | | f16vec4 textureProjLod(f16sampler2D sampler, f16vec4 P, | | | float16_t lod) | | | f16vec4 textureProjLod(f16sampler3D sampler, f16vec4 P, | | | float16_t lod) | | | float16_t textureProjLod(f16sampler1DShadow sampler, vec4 P, | | | float lod) | | | float16_t textureProjLod(f16sampler1DShadow sampler, | | | f16vec3 P, float compare, | | | float16_t lod) | | | float16_t textureProjLod(f16sampler2DShadow sampler, vec4 P, | | | float lod) | | | float16_t textureProjLod(f16sampler2DShadow sampler, | | | f16vec3 P, float compare, | | | float16_t lod) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureProjLodOffset(f16sampler1D sampler, | Do a offset projective | | f16vec2 P, float16_t lod, | texture lookup with explicit | | int offset) | LOD. ... | | f16vec4 textureProjLodOffset(f16sampler1D sampler, | | | f16vec4 P, float16_t lod, | | | int offset) | | | f16vec4 textureProjLodOffset(f16sampler2D sampler, | | | f16vec3 P, float16_t lod, | | | ivec2 offset) | | | f16vec4 textureProjLodOffset(f16sampler2D sampler, | | | f16vec4 P, float16_t lod, | | | ivec2 offset) | | | f16vec4 textureProjLodOffset(f16sampler3D sampler, | | | f16vec4 P, float16_t lod, | | | ivec3 offset) | | | float16_t textureProjLodOffset(f16sampler1DShadow sampler, | | | vec4 P, float lod, int offset)| | | float16_t textureProjLodOffset(f16sampler1DShadow sampler, | | | f16vec3 P, float compare, | | | float16_t lod, int offset) | | | float16_t textureProjLodOffset(f16sampler2DShadow sampler, | | | vec4 P, float lod, | | | ivec2 offset) | | | float16_t textureProjLodOffset(f16sampler2DShadow sampler, | | | f16vec3 P, float compare, | | | float16_t lod, ivec2 offset) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGrad(f16sampler1D sampler, float16_t P, | Do a texture lookup as in | | float16_t dPdx, float16_t dPdy) | texture() but with explicit | | f16vec4 textureGrad(f16sampler2D sampler, f16vec2 P, | gradients. ... | | f16vec2 dPdx, f16vec2 dPdy) | | | f16vec4 textureGrad(f16sampler3D sampler, f16vec3 P, | | | f16vec3 dPdx, f16vec3 dPdy) | | | f16vec4 textureGrad(f16samplerCube sampler, f16vec3 P, | | | f16vec3 dPdx, f16vec3 dPdy) | | | f16vec4 textureGrad(f16sampler2DRect sampler, f16vec2 P, | | | f16vec2 dPdx, f16vec2 dPdy) | | | float16_t textureGrad(f16sampler2DRectShadow sampler, vec3 P,| | | vec2 dPdx, vec2 dPdy) | | | float16_t textureGrad(f16sampler2DRectShadow sampler, | | | f16vec2 P, float compare, f16vec2 dPdx,| | | f16vec2 dPdy) | | | float16_t textureGrad(f16sampler1DShadow sampler, vec3 P, | | | float dPdx, float dPdy) | | | float16_t textureGrad(f16sampler1DShadow sampler, f16vec2 P, | | | float compare, float16_t dPdx, | | | float16_t dPdy) | | | float16_t textureGrad(f16sampler2DShadow sampler, vec3 P, | | | vec2 dPdx, vec2 dPdy) | | | float16_t textureGrad(f16sampler2DShadow sampler, f16vec2 P, | | | float compare, f16vec2 dPdx, | | | f16vec2 dPdy) | | | float16_t textureGrad(f16samplerCubeShadow sampler, vec4 P, | | | vec3 dPdx, vec3 dPdy) | | | float16_t textureGrad(f16samplerCubeShadow sampler, | | | f16vec3 P, float compare, f16vec3 dPdx,| | | f16vec3 dPdy) | | | f16vec4 textureGrad(f16sampler1DArray sampler, f16vec2 P, | | | float16_t dPdx, float16_t dPdy) | | | f16vec4 textureGrad(f16sampler2DArray sampler, f16vec3 P, | | | f16vec2 dPdx, f16vec2 dPdy) | | | float16_t textureGrad(f16sampler1DArrayShadow sampler, | | | vec3 P, float dPdx, float dPdy) | | | float16_t textureGrad(f16sampler1DArrayShadow sampler, | | | f16vec2 P, float compare, | | | float16_t dPdx, float16_t dPdy) | | | float16_t textureGrad(f16sampler2DArrayShadow sampler, | | | vec4 P, vec2 dPdx, vec2 dPdy) | | | float16_t textureGrad(f16sampler2DArrayShadow sampler, | | | f16vec3 P, float compare, f16vec2 dPdx,| | | f16vec2 dPdy) | | | f16vec4 textureGrad(f16samplerCubeArray sampler, | | | f16vec4 P, f16vec3 dPdx, f16vec3 dPdy) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGradOffset(f16sampler1D sampler, | Do a texture lookup with both| | float16_t P, float16_t dPdx, | explicit gradient and offset,| | float16_t dPdy, int offset) | as described in textureGrad()| | f16vec4 textureGradOffset(f16sampler2D sampler, f16vec2 P, | and textureOffset(). | | f16vec2 dPdx, f16vec2 dPdy, | | | ivec2 offset) | | | f16vec4 textureGradOffset(f16sampler3D sampler, f16vec3 P, | | | f16vec3 dPdx, f16vec3 dPdy, | | | ivec3 offset) | | | f16vec4 textureGradOffset(f16sampler2DRect sampler, | | | f16vec2 P, f16vec2 dPdx, | | | f16vec2 dPdy, ivec2 offset) | | | float16_t textureGradOffset(f16sampler2DRectShadow sampler, | | | vec3 P, vec2 dPdx, vec2 dPdy, | | | ivec2 offset) | | | float16_t textureGradOffset(f16sampler2DRectShadow sampler, | | | f16vec2 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy, | | | ivec2 offset) | | | float16_t textureGradOffset(f16sampler1DShadow sampler, | | | vec3 P, float dPdx, float dPdy, | | | int offset) | | | float16_t textureGradOffset(f16sampler1DShadow sampler, | | | f16vec2 P, float compare, | | | float16_t dPdx, float16_t dPdy, | | | int offset) | | | float16_t textureGradOffset(f16sampler2DShadow sampler, | | | vec3 P, vec2 dPdx, vec2 dPdy, | | | ivec2 offset) | | | float16_t textureGradOffset(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy, | | | ivec2 offset) | | | f16vec4 textureGradOffset(f16sampler1DArray sampler, | | | f16vec2 P, float16_t dPdx, | | | float16_t dPdy, int offset) | | | f16vec4 textureGradOffset(f16sampler2DArray sampler, | | | f16vec3 P, f16vec2 dPdx, | | | f16vec2 dPdy, ivec2 offset) | | | float16_t textureGradOffset(f16sampler1DArrayShadow sampler, | | | vec3 P, float dPdx, float dPdy, | | | int offset) | | | float16_t textureGradOffset(f16sampler1DArrayShadow sampler, | | | f16vec2 P, float compare, | | | float16_t dPdx, float16_t dPdy, | | | int offset) | | | float16_t textureGradOffset(f16sampler2DArrayShadow sampler, | | | vec4 P, vec2 dPdx, vec2 dPdy, | | | ivec2 offset) | | | float16_t textureGradOffset(f16sampler2DArrayShadow sampler, | | | f16vec3 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy, | | | ivec2 offset) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureProjGrad(f16sampler1D sampler, f16vec2 P, | Do a texture lookup both | | float16_t dPdx, float16_t dPdy) | projectively, as described in| | f16vec4 textureProjGrad(f16sampler1D sampler, f16vec4 P, | textureProj(), and with | | float16_t dPdx, float16_t dPdy) | explicit gradient as | | f16vec4 textureProjGrad(f16sampler2D sampler, f16vec3 P, | described in textureGrad(). | | f16vec2 dPdx, f16vec2 dPdy) | ... | | f16vec4 textureProjGrad(f16sampler2D sampler, f16vec4 P, | | | f16vec2 dPdx, f16vec2 dPdy) | | | f16vec4 textureProjGrad(f16sampler3D sampler, f16vec4 P, | | | f16vec3 dPdx, f16vec3 dPdy) | | | f16vec4 textureProjGrad(f16sampler2DRect sampler, | | | f16vec3 P, f16vec2 dPdx, | | | f16vec2 dPdy) | | | f16vec4 textureProjGrad(f16sampler2DRect sampler, | | | f16vec4 P, f16vec2 dPdx, | | | f16vec2 dPdy) | | | float16_t textureProjGrad(f16sampler2DRectShadow sampler, | | | vec4 P, vec2 dPdx, vec2 dPdy) | | | float16_t textureProjGrad(f16sampler2DRectShadow sampler, | | | f16vec3 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy) | | | float16_t textureProjGrad(f16sampler1DShadow sampler, vec4 P,| | | float dPdx, float dPdy) | | | float16_t textureProjGrad(f16sampler1DShadow sampler, | | | f16vec3 P, float compare, | | | float16_t dPdx, float16_t dPdy) | | | float16_t textureProjGrad(f16sampler2DShadow sampler, vec4 P,| | | vec2 dPdx, vec2 dPdy) | | | float16_t textureProjGrad(f16sampler2DShadow sampler, | | | f16vec3 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureProjGradOffset(f16sampler1D sampler, | Do a texture lookup | | f16vec2 P, float16_t dPdx, | projectively and with | | float16_t dPdy, int offset) | explicit gradient as | | f16vec4 textureProjGradOffset(f16sampler1D sampler, | described in | | f16vec4 P, float16_t dPdx, | textureProjGrad(), as well as| | float16_t dPdy, int offset) | with offset, as described in | | f16vec4 textureProjGradOffset(f16sampler2D sampler, | textureOffset(). | | f16vec3 P, f16vec2 dPdx, | | | f16vec2 dPdy, ivec2 offset) | | | f16vec4 textureProjGradOffset(f16sampler2D sampler, | | | f16vec4 P, f16vec2 dPdx, | | | f16vec2 dPdy, ivec2 offset) | | | f16vec4 textureProjGradOffset(f16sampler2DRect sampler, | | | f16vec3 P, f16vec2 dPdx, | | | f16vec2 dPdy, ivec2 offset) | | | f16vec4 textureProjGradOffset(f16sampler2DRect sampler, | | | f16vec4 P, f16vec2 dPdx, | | | f16vec2 dPdy, ivec2 offset) | | | float16_t textureProjGradOffset(f16sampler2DRectShadow | | | sampler, vec4 P, vec2 dPdx, | | | vec2 dPdy, ivec2 offset) | | | float16_t textureProjGradOffset(f16sampler2DRectShadow | | | sampler, f16vec3 P, | | | float compare, f16vec2 dPdx, | | | f16vec2 dPdy, ivec2 offset) | | | f16vec4 textureProjGradOffset(f16sampler3D sampler, | | | f16vec4 P, f16vec3 dPdx, | | | f16vec3 dPdy, ivec3 offset) | | | float16_t textureProjGradOffset(f16sampler1DShadow sampler, | | | vec4 P, float dPdx, | | | float dPdy, int offset) | | | float16_t textureProjGradOffset(f16sampler1DShadow sampler, | | | f16vec3 P, float compare, | | | float16_t dPdx, | | | float16_t dPdy, int offset) | | | float16_t textureProjGradOffset(f16sampler2DShadow sampler, | | | vec4 P, vec2 dPdx, vec2 dPdy,| | | ivec2 offset) | | | float16_t textureProjGradOffset(f16sampler2DShadow sampler, | | | f16vec3 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy, | | | ivec2 offset) | | +--------------------------------------------------------------+------------------------------+ Modify Section 8.9.3 Texture Gather Functions (modify the first sentence of the first paragraph on p. 170) The texture gather functions take components of a single or half floating-point vector operand as a texture coordinate, determine a set of four texels to sample from the base level of detail of the specified texture image, and return one component from each texel in a four-component result vector. (insert new functions, whose prototypes are different from those existing ones, to the "Syntax" table cell of each gather function group on p. 171-172) +--------------------------------------------------------------+------------------------------+ | Syntax | Description | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGather(f16sampler2D sampler, f16vec2 P | Returns the value | | [, int comp]) | | | f16vec4 textureGather(f16sampler2DArray sampler, f16vec3 P | gvec4( | | [, int comp]) | Sample_i0_j1(P, base).comp,| | f16vec4 textureGather(f16samplerCube sampler, f16vec3 P | Sample_i1_j1(P, base).comp,| | [, int comp]) | Sample_i1_j0(P, base).comp,| | f16vec4 textureGather(f16samplerCubeArray sampler, f16vec4 P | Sample_i0_j0(P, base).comp)| | [, int comp]) | ... | | f16vec4 textureGather(f16sampler2DRect sampler, f16vec2 P | | | [, int comp]) | | | f16vec4 textureGather(f16sampler2DShadow sampler, vec2 P, | | | float refZ) | | | f16vec4 textureGather(f16sampler2DShadow sampler, f16vec2 P, | | | float refZ) | | | f16vec4 textureGather(f16sampler2DArrayShadow sampler, | | | vec3 P, float refZ) | | | f16vec4 textureGather(f16sampler2DArrayShadow sampler, | | | f16vec3 P, float refZ) | | | f16vec4 textureGather(f16samplerCubeShadow sampler, vec3 P, | | | float refZ) | | | f16vec4 textureGather(f16samplerCubeShadow sampler, | | | f16vec3 P, float refZ) | | | f16vec4 textureGather(f16samplerCubeArrayShadow sampler, | | | vec4 P, float refZ) | | | f16vec4 textureGather(f16samplerCubeArrayShadow sampler, | | | f16vec4 P, float refZ) | | | f16vec4 textureGather(f16sampler2DRectShadow sampler, vec2 P,| | | float refZ) | | | f16vec4 textureGather(f16sampler2DRectShadow sampler, | | | f16vec2 P, float refZ) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGatherOffset(f16sampler2D sampler, f16vec2 P, | Perform a texture gather | | ivec2 offset [, int comp]) | operation as in | | f16vec4 textureGatherOffset(f16sampler2DArray sampler, | textureGather() by | | f16vec3 P, ivec2 offset | as described in | | [, int comp]) | textureOffset() except that | | f16vec4 textureGatherOffset(f16sampler2DRect sampler, | the can be variable | | f16vec2 P, ivec2 offset | (non constant) and ... | | [, int comp]) | | | f16vec4 textureGatherOffset(f16sampler2DShadow sampler, | | | vec2 P, float refZ, ivec2 offset)| | | f16vec4 textureGatherOffset(f16sampler2DShadow sampler, | | | f16vec2 P, float refZ, | | | ivec2 offset) | | | f16vec4 textureGatherOffset(f16sampler2DArrayShadow sampler, | | | vec3 P, float refZ, ivec2 offset)| | | f16vec4 textureGatherOffset(f16sampler2DArrayShadow sampler, | | | f16vec3 P, float refZ, | | | ivec2 offset) | | | f16vec4 textureGatherOffset(f16sampler2DRectShadow sampler, | | | vec2 P, float refZ, ivec2 offset)| | | f16vec4 textureGatherOffset(f16sampler2DRectShadow sampler, | | | f16vec2 P, float refZ, | | | ivec2 offset) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGatherOffsets(f16sampler2D sampler, f16vec2 P,| Operate identically to | | ivec2 offsets[4] [, int comp]) | textureGatherOffset() except | | f16vec4 textureGatherOffsets(f16sampler2DArray sampler, | that is used to | | f16vec3 P, ivec2 offsets[4] | determine the location of the| | [, int comp]) | four texels to sample. ... | | f16vec4 textureGatherOffsets(f16sampler2DRect sampler, | | | f16vec2 P, ivec2 offsets[4] | | | [, int comp]) | | | f16vec4 textureGatherOffsets(f16sampler2DShadow sampler, | | | vec2 P, float refZ, ivec2 | | | offsets[4]) | | | f16vec4 textureGatherOffsets(f16sampler2DShadow sampler, | | | f16vec2 P, float refZ, ivec2 | | | offsets[4]) | | | f16vec4 textureGatherOffsets(f16sampler2DArrayShadow sampler,| | | vec3 P, float refZ, ivec2 | | | offsets[4]) | | | f16vec4 textureGatherOffsets(f16sampler2DArrayShadow sampler,| | | f16vec3 P, float refZ, ivec2 | | | offsets[4]) | | | f16vec4 textureGatherOffsets(f16sampler2DRectShadow sampler, | | | vec2 P, float refZ, ivec2 | | | offsets[4]) | | | f16vec4 textureGatherOffsets(f16sampler2DRectShadow sampler, | | | f16vec2 P, float refZ, ivec2 | | | offsets[4]) | | +--------------------------------------------------------------+------------------------------+ Modify Section 8.12 Image Functions (modify the second paragraph on p. 177) Loads and stores support single-precision float, half-precision float, integer, and unsigned integer types. The data types below starting "gimage" serve as placeholders meaning types starting either "image", "f16image", "iimage", or "uimage" in the same way as gvec or gsampler in earlier sections. The IMAGE_PARAMS in the prototypes below is a placeholder representing 44 separate functions, each for a different type of image variable. (modify the first sentence of the fourth paragraph on p. 177) where each of the lines represents one of four different image variable types, and image, P, and sample specify the individual texel to operate on. Modify Section 9, Shading Language Grammar for Core Profile (add to the list of tokens on p. 189) ... F16SAMPLER1D F16SAMPLER2D F16SAMPLER3D F16SAMPLER2DRECT F16SAMPLERCUBE F16SAMPLER1DARRAY F16SAMPLER2DARRAY F16SAMPLERCUBEARRAY F16SAMPLERBUFFER F16SAMPLER2DMS F16SAMPLER2DMSARRAY F16SAMPLER1DSHADOW F16SAMPLER2DSHADOW F16SAMPLER1DARRAYSHADOW F16SAMPLER2DARRAYSHADOW F16SAMPLER2DRECTSHADOW F16SAMPLERCUBESHADOW F16SAMPLERCUBEARRAYSHADOW F16IMAGE1D F16IMAGE2D F16IMAGE3D F16IMAGE2DRECT F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY ... (add to the rule of "type_specifier_nonarray" on p. 197) type_specifier_nonarray: ... F16SAMPLER1D F16SAMPLER2D F16SAMPLER3D F16SAMPLER2DRECT F16SAMPLERCUBE F16SAMPLER1DARRAY F16SAMPLER2DARRAY F16SAMPLERCUBEARRAY F16SAMPLERBUFFER F16SAMPLER2DMS F16SAMPLER2DMSARRAY F16SAMPLER1DSHADOW F16SAMPLER2DSHADOW F16SAMPLER1DARRAYSHADOW F16SAMPLER2DRECTSHADOW F16SAMPLERCUBESHADOW F16SAMPLERCUBEARRAYSHADOW F16IMAGE1D F16IMAGE2D F16IMAGE3D F16IMAGE2DRECT F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY ... Dependencies on AMD_gpu_shader_half_float If the shader do not enable AMD_gpu_shader_half_float, half-precision floating-point opaque types added by this extension, together with those new built-in texture and image memory functions, are unable to be used. Dependencies on ARB_sparse_texture2 If the shader enables ARB_sparse_texture2, this extension adds additional texture lookup functions, whose prototypes are different from those existing ones. +--------------------------------------------------------------+------------------------------+ | Syntax | Description | +--------------------------------------------------------------+------------------------------+ | int sparseTextureARB(f16sampler2D sampler, f16vec2 P, | Do a filtered texture lookup | | out f16vec4 texel [, float16_t bias]) | as in texture(), but return | | int sparseTextureARB(f16sampler3D sampler, f16vec3 P, | texture access residency | | out f16vec4 texel [, float16_t bias]) | information from the function| | int sparseTextureARB(f16samplerCube sampler, f16vec3 P, | and the filtered lookup | | out f16vec4 texel [, float16_t bias]) | result in the out parameter | | int sparseTextureARB(f16sampler2DShadow sampler, vec3 P, | . | | out float16_t texel [, float bias]) | | | int sparseTextureARB(f16sampler2DShadow sampler, f16vec2 P, | | | float compare, out float16_t texel | | | [, float16_t bias]) | | | int sparseTextureARB(f16samplerCubeShadow sampler, vec4 P, | | | out float16_t texel [, float bias]) | | | int sparseTextureARB(f16samplerCubeShadow sampler, f16vec3 P,| | | float compare, out float16_t texel | | | [, float16_t bias]) | | | int sparseTextureARB(f16sampler2DArray sampler, f16vec3 P, | | | out f16vec4 texel [, float16_t bias]) | | | int sparseTextureARB(f16samplerCubeArray sampler, f16vec4 P, | | | out f16vec4 texel [, float16_t bias]) | | | int sparseTextureARB(f16sampler2DArrayShadow sampler, vec4 P,| | | out float16_t texel) | | | int sparseTextureARB(f16sampler2DArrayShadow sampler, | | | f16vec3 P, float compare, | | | out float16_t texel) | | | int sparseTextureARB(f16sampler2DRect sampler, f16vec2 P, | | | out f16vec4 texel) | | | int sparseTextureARB(f16sampler2DRectShadow sampler, vec3 P, | | | out float16_t texel) | | | int sparseTextureARB(f16sampler2DRectShadow sampler, | | | f16vec2 P, float compare, | | | out float16_t texel) | | | int sparseTextureARB(f16samplerCubeArrayShadow sampler, | | | vec4 P, float compare, | | | out float16_t texel) | | | int sparseTextureARB(f16samplerCubeArrayShadow sampler, | | | f16vec4 P, float compare, | | | out float16_t texel) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureLodARB(f16sampler2D sampler, f16vec2 P, | Do a filtered texture lookup | | float16_t lod, out f16vec4 texel) | as in textureLod(), but | | int sparseTextureLodARB(f16sampler3D sampler, f16vec3 P, | return texture access | | float16_t lod, out f16vec4 texel) | residency information from | | int sparseTextureLodARB(f16samplerCube sampler, f16vec3 P, | the function and the filtered| | float16_t lod, out f16vec4 texel) | lookup result in the out | | int sparseTextureLodARB(f16sampler2DShadow sampler, vec3 P, | parameter . | | float lod, out float16_t texel) | | | int sparseTextureLodARB(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | float16_t lod, out float16_t texel) | | | int sparseTextureLodARB(f16sampler2DArray sampler, f16vec3 P,| | | float16_t lod, out f16vec4 texel) | | | int sparseTextureLodARB(f16samplerCubeArray sampler, | | | f16vec4 P, float16_t lod, | | | out f16vec4 texel) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureOffsetARB(f16sampler2D sampler, f16vec2 P, | Do a filtered texture lookup | | ivec2 offset, out f16vec4 texel | as in textureOffset(), but | | [, float16_t bias]) | return texture access | | int sparseTextureOffsetARB(f16sampler3D sampler, f16vec3 P, | residency information from | | ivec3 offset, out f16vec4 texel | the function and the filtered| | [, float16_t bias]) | lookup result in the out | | int sparseTextureOffsetARB(f16sampler2DRect sampler, | parameter . | | f16vec2 P, ivec2 offset, | | | out f16vec4 texel) | | | int sparseTextureOffsetARB(f16sampler2DRectShadow sampler, | | | vec3 P, ivec2 offset, | | | out float16_t texel) | | | int sparseTextureOffsetARB(f16sampler2DRectShadow sampler, | | | f16vec2 P, float compare, | | | ivec2 offset, out float16_t texel)| | | int sparseTextureOffsetARB(f16sampler2DShadow sampler, | | | vec3 P, ivec2 offset, | | | out float16_t texel | | | [, float bias]) | | | int sparseTextureOffsetARB(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | ivec2 offset, out float16_t texel | | | [, float16_t bias]) | | | int sparseTextureOffsetARB(f16sampler2DArray sampler, | | | f16vec3 P, ivec2 offset, | | | out f16vec4 texel | | | [, float16_t bias]) | | | int sparseTextureOffsetARB(f16sampler2DArrayShadow sampler, | | | vec4 P, ivec2 offset, | | | out float16_t texel) | | | int sparseTextureOffsetARB(f16sampler2DArrayShadow sampler, | | | f16vec3 P, float compare, | | | ivec2 offset, out float16_t texel)| | +--------------------------------------------------------------+------------------------------+ | int sparseTextureLodOffsetARB(f16sampler2D sampler, | Do a filtered texture lookup | | f16vec2 P, float16_t lod, | as in textureLodOffset(), | | ivec2 offset, | but return texture access | | out f16vec4 texel) | residency information from | | int sparseTextureLodOffsetARB(f16sampler3D sampler, | the function and the filtered| | f16vec3 P, float16_t lod, | lookup result in the out | | ivec3 offset, | parameter . | | out f16vec4 texel) | | | int sparseTextureLodOffsetARB(f16sampler2DShadow sampler, | | | vec3 P, float lod, | | | ivec2 offset, | | | out float16_t texel) | | | int sparseTextureLodOffsetARB(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | float16_t lod, ivec2 offset, | | | out float16_t texel) | | | int sparseTextureLodOffsetARB(f16sampler2DArray sampler, | | | f16vec3 P, float16_t lod, | | | ivec2 offset, | | | out f16vec4 texel) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGradARB(f16sampler2D sampler, f16vec2 P, | Do a filtered texture lookup | | f16vec2 dPdx, f16vec2 dPdy, | as in textureGrad(), but | | out f16vec4 texel) | return texture access | | int sparseTextureGradARB(f16sampler3D sampler, f16vec3 P, | residency information from | | f16vec3 dPdx, f16vec3 dPdy, | the function and the filtered| | out f16vec4 texel) | lookup result in the out | | int sparseTextureGradARB(f16samplerCube sampler, f16vec3 P, | parameter . | | f16vec3 dPdx, f16vec3 dPdy, | | | out f16vec4 texel) | | | int sparseTextureGradARB(f16sampler2DRect sampler, f16vec2 P,| | | f16vec2 dPdx, f16vec2 dPdy, | | | out f16vec4 texel) | | | int sparseTextureGradARB(f16sampler2DRectShadow sampler, | | | vec3 P, vec2 dPdx, vec2 dPdy, | | | out float16_t texel) | | | int sparseTextureGradARB(f16sampler2DRectShadow sampler, | | | f16vec2 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy, | | | out float16_t texel) | | | int sparseTextureGradARB(f16sampler2DShadow sampler, vec3 P, | | | vec2 dPdx, vec2 dPdy, | | | out float16_t texel) | | | int sparseTextureGradARB(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy, | | | out float16_t texel) | | | int sparseTextureGradARB(f16samplerCubeShadow sampler, | | | vec4 P, vec3 dPdx, vec3 dPdy, | | | out float16_t texel) | | | int sparseTextureGradARB(f16samplerCubeShadow sampler, | | | f16vec3 P, float compare, | | | f16vec3 dPdx, f16vec3 dPdy, | | | out float16_t texel) | | | int sparseTextureGradARB(f16sampler2DArray sampler, | | | f16vec3 P, f16vec2 dPdx, | | | f16vec2 dPdy, out f16vec4 texel) | | | int sparseTextureGradARB(f16sampler2DArrayShadow sampler, | | | vec4 P, vec2 dPdx, vec2 dPdy, | | | out float16_t texel) | | | int sparseTextureGradARB(f16sampler2DArrayShadow sampler, | | | f16vec3 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy, | | | out float16_t texel) | | | int sparseTextureGradARB(f16samplerCubeArray sampler, | | | f16vec4 P, f16vec3 dPdx, | | | f16vec3 dPdy, out f16vec4 texel) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGradOffsetARB(f16sampler2D sampler, | Do a filtered texture lookup | | f16vec2 P, f16vec2 dPdx, | as in textureGradOffset(), | | f16vec2 dPdy, ivec2 offset, | but return texture access | | out f16vec4 texel) | residency information from | | int sparseTextureGradOffsetARB(f16sampler3D sampler, | the function and the filtered| | f16vec3 P, f16vec3 dPdx, | lookup result in the out | | f16vec3 dPdy, ivec3 offset, | parameter . | | out f16vec4 texel) | | | int sparseTextureGradOffsetARB(f16sampler2DRect sampler, | | | f16vec2 P, f16vec2 dPdx, | | | f16vec2 dPdy, ivec2 offset, | | | out f16vec4 texel) | | | int sparseTextureGradOffsetARB(f16sampler2DRectShadow | | | sampler, vec3 P, vec2 dPdx, | | | vec2 dPdy, ivec2 offset, | | | out float16_t texel) | | | int sparseTextureGradOffsetARB(f16sampler2DRectShadow | | | sampler, f16vec2 P, | | | float compare, f16vec2 dPdx, | | | f16vec2 dPdy, ivec2 offset, | | | out float16_t texel) | | | int sparseTextureGradOffsetARB(f16sampler2DShadow sampler, | | | vec3 P, vec2 dPdx, vec2 dPdy, | | | ivec2 offset, | | | out float16_t texel) | | | int sparseTextureGradOffsetARB(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy, | | | ivec2 offset, | | | out float16_t texel) | | | int sparseTextureGradOffsetARB(f16sampler2DArray sampler, | | | f16vec3 P, f16vec2 dPdx, | | | f16vec2 dPdy, ivec2 offset, | | | out f16vec4 texel) | | | int sparseTextureGradOffsetARB(f16sampler2DArrayShadow | | | sampler, vec4 P, | | | vec2 dPdx, vec2 dPdy, | | | ivec2 offset, | | | out float16_t texel) | | | int sparseTextureGradOffsetARB(f16sampler2DArrayShadow | | | sampler, f16vec3 P, | | | float compare, f16vec2 dPdx, | | | f16vec2 dPdy, ivec2 offset, | | | out float16_t texel) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGatherARB(f16sampler2D sampler, f16vec2 P, | Do a texture gather operation| | out f16vec4 texel [, int comp]) | as in textureGather(), but | | int sparseTextureGatherARB(f16sampler2DArray sampler, vec3 P,| return texture access | | out f16vec4 texel [, int comp]) | residency information from | | int sparseTextureGatherARB(f16samplerCube sampler, f16vec3 P,| the function and the filtered| | out f16vec4 texel [, int comp]) | lookup result in the out | | int sparseTextureGatherARB(f16samplerCubeArray sampler, | parameter . | | f16vec4 P, out f16vec4 texel | | | [, int comp]) | | | int sparseTextureGatherARB(f16sampler2DRect sampler, | | | f16vec2 P, out f16vec4 texel | | | [, int comp]) | | | int sparseTextureGatherARB(f16sampler2DShadow sampler, | | | vec2 P, float refZ, | | | out f16vec4 texel) | | | int sparseTextureGatherARB(f16sampler2DShadow sampler, | | | f16vec2 P, float refZ, | | | out f16vec4 texel) | | | int sparseTextureGatherARB(f16sampler2DArrayShadow sampler, | | | vec3 P, float refZ, | | | out f16vec4 texel) | | | int sparseTextureGatherARB(f16sampler2DArrayShadow sampler, | | | f16vec3 P, float refZ, | | | out f16vec4 texel) | | | int sparseTextureGatherARB(f16samplerCubeShadow sampler, | | | vec3 P, float refZ, | | | out f16vec4 texel) | | | int sparseTextureGatherARB(f16samplerCubeShadow sampler, | | | f16vec3 P, float refZ, | | | out f16vec4 texel) | | | int sparseTextureGatherARB(f16samplerCubeArrayShadow sampler,| | | vec4 P, float refZ, | | | out f16vec4 texel) | | | int sparseTextureGatherARB(f16samplerCubeArrayShadow sampler,| | | f16vec4 P, float refZ, | | | out f16vec4 texel) | | | int sparseTextureGatherARB(f16sampler2DRectShadow sampler, | | | vec2 P, float refZ, | | | out f16vec4 texel) | | | int sparseTextureGatherARB(f16sampler2DRectShadow sampler, | | | f16vec2 P, float refZ, | | | out f16vec4 texel) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGatherOffsetARB(f16sampler2D sampler, | Do a texture gather operation| | f16vec2 P, ivec2 offset, | as in textureGatherOffset(), | | out f16vec4 texel | but return texture access | | [, int comp]) | residency information from | | int sparseTextureGatherOffsetARB(f16sampler2DArray sampler, | the function and the filtered| | f16vec3 P, ivec2 offset, | lookup result in the out | | out f16vec4 texel | parameter . | | [, int comp]) | | | int sparseTextureGatherOffsetARB(f16sampler2DRect sampler, | | | f16vec2 P, ivec2 offset, | | | out f16vec4 texel | | | [, int comp]) | | | int sparseTextureGatherOffsetARB(f16sampler2DShadow sampler, | | | vec2 P, float refZ, | | | ivec2 offset, | | | out f16vec4 texel) | | | int sparseTextureGatherOffsetARB(f16sampler2DShadow sampler, | | | f16vec2 P, float refZ, | | | ivec2 offset, | | | out f16vec4 texel) | | | int sparseTextureGatherOffsetARB(f16sampler2DArrayShadow | | | sampler, vec3 P, float refZ,| | | ivec2 offset, | | | out f16vec4 texel) | | | int sparseTextureGatherOffsetARB(f16sampler2DArrayShadow | | | sampler, f16vec3 P, | | | float refZ, ivec2 offset, | | | out f16vec4 texel) | | | int sparseTextureGatherOffsetARB(f16sampler2DRectShadow | | | sampler, vec2 P, float refZ,| | | ivec2 offset, | | | out f16vec4 texel) | | | int sparseTextureGatherOffsetARB(f16sampler2DRectShadow | | | sampler, f16vec2 P, | | | float refZ, ivec2 offset, | | | out f16vec4 texel) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGatherOffsetsARB(f16sampler2D sampler, | Do a texture gather operation| | f16vec2 P, | as in textureGatherOffsets(),| | ivec2 offsets[4], | but return texture access | | out f16vec4 texel | residency information from | | [, int comp]) | the function and the filtered| | int sparseTextureGatherOffsetsARB(f16sampler2DArray sampler, | lookup result in the out | | f16vec3 P, | parameter . | | ivec2 offsets[4], | | | out f16vec4 texel | | | [, int comp]) | | | int sparseTextureGatherOffsetsARB(f16sampler2DRect sampler, | | | f16vec2 P, | | | ivec2 offsets[4], | | | out f16vec4 texel | | | [, int comp]) | | | int sparseTextureGatherOffsetsARB(f16sampler2DShadow sampler,| | | vec2 P, float refZ, | | | ivec2 offsets[4], | | | out f16vec4 texel) | | | int sparseTextureGatherOffsetsARB(f16sampler2DShadow sampler,| | | f16vec2 P, float refZ, | | | ivec2 offsets[4], | | | out f16vec4 texel) | | | int sparseTextureGatherOffsetsARB(f16sampler2DArrayShadow | | | sampler, vec3 P, | | | float refZ, | | | ivec2 offsets[4], | | | out f16vec4 texel) | | | int sparseTextureGatherOffsetsARB(f16sampler2DArrayShadow | | | sampler, f16vec3 P, | | | float refZ, | | | ivec2 offsets[4], | | | out f16vec4 texel) | | | int sparseTextureGatherOffsetsARB(f16sampler2DRectShadow | | | sampler, vec2 P, | | | float refZ, | | | ivec2 offsets[4], | | | out f16vec4 texel) | | | int sparseTextureGatherOffsetsARB(f16sampler2DRectShadow | | | sampler, f16vec2 P, | | | float refZ, | | | ivec2 offsets[4], | | | out f16vec4 texel) | | +--------------------------------------------------------------+------------------------------+ Dependencies on ARB_sparse_texture_clamp If the shader enables ARB_sparse_texture_clamp, this extension adds additional texture lookup functions, whose prototypes are different from those existing ones. +--------------------------------------------------------------+------------------------------+ | Syntax | Description | +--------------------------------------------------------------+------------------------------+ | int sparseTextureClampARB(f16sampler2D sampler, f16vec2 P, | Do a filtered texture lookup | | float16_t lodClamp, | as in texture(), but return | | out f16vec4 texel | texture access residency | | [, float16_t bias]) | information from the function| | int sparseTextureClampARB(f16sampler3D sampler, f16vec3 P, | and the filtered lookup | | float16_t lodClamp, | result in the out parameter | | out f16vec4 texel | . Additionally, | | [, float16_t bias]) | clamp the automatically | | int sparseTextureClampARB(f16samplerCube sampler, f16vec3 P, | computed level of detail to | | float16_t lodClamp, | be greater than or equal to | | out f16vec4 texel | . | | [, float16_t bias]) | | | int sparseTextureClampARB(f16sampler2DShadow sampler, vec3 P,| | | float lodClamp, out float16_t texel| | | [, float bias]) | | | int sparseTextureClampARB(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | float16_t lodClamp, | | | out float16_t texel | | | [, float16_t bias]) | | | int sparseTextureClampARB(f16samplerCubeShadow sampler, | | | vec4 P, float lodClamp, | | | out float16_t texel | | | [, float bias]) | | | int sparseTextureClampARB(f16samplerCubeShadow sampler, | | | f16vec3 P, float compare, | | | float16_t lodClamp, | | | out float16_t texel | | | [, float16_t bias]) | | | int sparseTextureClampARB(f16sampler2DArray sampler, | | | f16vec3 P, float16_t lodClamp, | | | out f16vec4 texel | | | [, float16_t bias]) | | | int sparseTextureClampARB(f16samplerCubeArray sampler, | | | f16vec4 P, float16_t lodClamp, | | | out f16vec4 texel | | | [, float16_t bias]) | | | int sparseTextureClampARB(f16sampler2DArrayShadow sampler, | | | vec4 P, float lodClamp, | | | out float16_t texel) | | | int sparseTextureClampARB(f16sampler2DArrayShadow sampler, | | | f16vec3 P, float compare, | | | float16_t lodClamp, | | | out float16_t texel) | | | int sparseTextureClampARB(f16samplerCubeArrayShadow sampler, | | | vec4 P, float compare, | | | float lodClamp, | | | out float16_t texel) | | | int sparseTextureClampARB(f16samplerCubeArrayShadow sampler, | | | f16vec4 P, float compare, | | | float16_t lodClamp, | | | out float16_t texel) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureClampARB(f16sampler1D sampler, float16_t P, | Do a filtered texture lookup | | float lodClamp [, float16_t bias]) | as in texture(), but clamp | | f16vec4 textureClampARB(f16sampler2D sampler, vec2 P, | the automatically computed | | float lodClamp [, float16_t bias]) | level of detail to be greater| | f16vec4 textureClampARB(f16sampler3D sampler, vec3 P, | than or equal to . | | float lodClamp [, float16_t bias]) | | | f16vec4 textureClampARB(f16samplerCube sampler, vec3 P, | | | float lodClamp [, float16_t bias]) | | | float16_t textureClampARB(f16sampler1DShadow sampler, vec3 P,| | | float lodClamp [, float bias]) | | | float16_t textureClampARB(f16sampler1DShadow sampler, | | | f16vec2 P, float compare, | | | float16_t lodClamp | | | [, float16_t bias]) | | | float16_t textureClampARB(f16sampler2DShadow sampler, vec3 P,| | | float lodClamp [, float bias]) | | | float16_t textureClampARB(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | float16_t lodClamp | | | [, float16_t bias]) | | | float16_t textureClampARB(f16samplerCubeShadow sampler, | | | vec4 P, float lodClamp | | | [, float bias]) | | | float16_t textureClampARB(f16samplerCubeShadow sampler, | | | f16vec3 P, float compare, | | | float16_t lodClamp | | | [, float16_t bias]) | | | f16vec4 textureClampARB(f16sampler1DArray sampler, | | | f16vec2 P, float16_t lodClamp | | | [, float16_t bias]) | | | f16vec4 textureClampARB(f16sampler2DArray sampler, | | | f16vec3 P, float16_t lodClamp | | | [, float16_t bias]) | | | f16vec4 textureClampARB(f16samplerCubeArray sampler, | | | f16vec4 P, float16_t lodClamp | | | [, float16_t bias]) | | | float16_t textureClampARB(f16sampler1DArrayShadow sampler, | | | vec3 P, float lodClamp | | | [, float bias]) | | | float16_t textureClampARB(f16sampler1DArrayShadow sampler, | | | f16vec2 P, float compare, | | | float16_t lodClamp | | | [, float16_t bias]) | | | float16_t textureClampARB(f16sampler2DArrayShadow sampler, | | | vec4 P, float lodClamp) | | | float16_t textureClampARB(f16sampler2DArrayShadow sampler, | | | f16vec3 P, float compare, | | | float16_t lodClamp) | | | float16_t textureClampARB(f16samplerCubeArrayShadow sampler, | | | vec4 P, float compare, | | | float lodClamp) | | | float16_t textureClampARB(f16samplerCubeArrayShadow sampler, | | | f16vec4 P, float compare, | | | float16_t lodClamp) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureOffsetClampARB(f16sampler2D sampler, | Do a filtered texture lookup | | f16vec2 P, ivec2 offset, | as in textureOffset(), but | | float16_t lodClamp, | return texture access | | out f16vec4 texel | residency information from | | [, float16_t bias]) | the function and the filtered| | int sparseTextureOffsetClampARB(f16sampler3D sampler, | lookup result in the out | | f16vec3 P, ivec3 offset, | parameter . | | float16_t lodClamp, | Additionally, clamp the | | out f16vec4 texel | automatically computed level | | [, float16_t bias]) | of detail to be greater than | | int sparseTextureOffsetClampARB(f16sampler2DShadow sampler, | or equal to . | | vec3 P, ivec2 offset, | | | float lodClamp, | | | out float16_t texel | | | [, float bias]) | | | int sparseTextureOffsetClampARB(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | ivec2 offset, | | | float16_t lodClamp, | | | out float16_t texel | | | [, float16_t bias]) | | | int sparseTextureOffsetClampARB(f16sampler2DArray sampler, | | | f16vec3 P, ivec2 offset, | | | float16_t lodClamp, | | | out f16vec4 texel | | | [, float16_t bias]) | | | int sparseTextureOffsetClampARB(f16sampler2DArrayShadow | | | sampler, vec4 P, | | | ivec2 offset, float lodClamp,| | | out float16_t texel) | | | int sparseTextureOffsetClampARB(f16sampler2DArrayShadow | | | sampler, f16vec3 P, | | | float compare, ivec2 offset, | | | float16_t lodClamp, | | | out float16_t texel) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureOffsetClampARB(f16sampler1D sampler, | Do a filtered texture lookup | | float16_t P, int offset, | as in textureOffset(), but | | float16_t lodClamp | clamp the automatically | | [, float16_t bias]) | computed level of detail to | | f16vec4 textureOffsetClampARB(f16sampler2D sampler, | be greater than or equal to | | f16vec2 P, ivec2 offset, | . | | float16_t lodClamp | | | [, float16_t bias]) | | | f16vec4 textureOffsetClampARB(f16sampler3D sampler, | | | f16vec3 P, ivec3 offset, | | | float16_t lodClamp | | | [, float16_t bias]) | | | float16_t textureOffsetClampARB(f16sampler1DShadow sampler, | | | vec3 P, int offset, | | | float lodClamp | | | [, float bias]) | | | float16_t textureOffsetClampARB(f16sampler1DShadow sampler, | | | f16vec2 P, float compare, | | | int offset, | | | float16_t lodClamp | | | [, float16_t bias]) | | | float16_t textureOffsetClampARB(f16sampler2DShadow sampler, | | | vec3 P, ivec2 offset, | | | float lodClamp | | | [, float bias]) | | | float16_t textureOffsetClampARB(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | ivec2 offset, | | | float16_t lodClamp | | | [, float16_t bias]) | | | f16vec4 textureOffsetClampARB(f16sampler1DArray sampler, | | | f16vec2 P, int offset, | | | float16_t lodClamp | | | [, float16_t bias]) | | | f16vec4 textureOffsetClampARB(f16sampler2DArray sampler, | | | f16vec3 P, ivec2 offset, | | | float16_t lodClamp | | | [, float16_t bias]) | | | float16_t textureOffsetClampARB(f16sampler1DArrayShadow | | | sampler, vec3 P, int offset, | | | float lodClamp | | | [, float bias]) | | | float16_t textureOffsetClampARB(f16sampler1DArrayShadow | | | sampler, f16vec2 P, | | | float compare, int offset, | | | float16_t lodClamp | | | [, float16_t bias]) | | | float16_t textureOffsetClampARB(f16sampler2DArrayShadow | | | sampler, vec4 P, | | | ivec2 offset, | | | float lodClamp) | | | float16_t textureOffsetClampARB(f16sampler2DArrayShadow | | | sampler, f16vec3 P, | | | float compare, ivec2 offset, | | | float16_t lodClamp) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGradClampARB(f16sampler2D sampler, | Do a filtered texture lookup | | f16vec2 P, f16vec2 dPdx, | as in textureGrad(), but | | f16vec2 dPdy, | return texture access | | float16_t lodClamp, | residency information from | | out f16vec4 texel) | the function and the filtered| | int sparseTextureGradClampARB(f16sampler3D sampler, | lookup result in the out | | f16vec3 P, f16vec3 dPdx, | parameter . | | f16vec3 dPdy, | Additionally, clamp the | | float16_t lodClamp, | automatically computed level | | out f16vec4 texel) | of detail to be greater than | | int sparseTextureGradClampARB(f16samplerCube sampler, | or equal to . | | f16vec3 P, f16vec3 dPdx, | | | f16vec3 dPdy, | | | float16_t lodClamp, | | | out f16vec4 texel) | | | int sparseTextureGradClampARB(f16sampler2DShadow sampler, | | | vec3 P, vec2 dPdx, vec2 dPdy, | | | float lodClamp, | | | out float16_t texel) | | | int sparseTextureGradClampARB(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy, | | | float16_t lodClamp, | | | out float16_t texel) | | | int sparseTextureGradClampARB(f16samplerCubeShadow sampler, | | | vec4 P, vec3 dPdx, vec3 dPdy, | | | float lodClamp, | | | out float16_t texel) | | | int sparseTextureGradClampARB(f16samplerCubeShadow sampler, | | | f16vec3 P, float compare, | | | f16vec3 dPdx, f16vec3 dPdy, | | | float16_t lodClamp, | | | out float16_t texel) | | | int sparseTextureGradClampARB(f16sampler2DArray sampler, | | | f16vec3 P, f16vec2 dPdx, | | | f16vec2 dPdy, | | | float16_t lodClamp, | | | out f16vec4 texel) | | | int sparseTextureGradClampARB(f16sampler2DArrayShadow | | | sampler, vec4 P, vec2 dPdx, | | | vec2 dPdy, float lodClamp, | | | out float16_t texel) | | | int sparseTextureGradClampARB(f16sampler2DArrayShadow | | | sampler, f16vec3 P, | | | float compare, f16vec2 dPdx, | | | f16vec2 dPdy, | | | float16_t lodClamp, | | | out float16_t texel) | | | int sparseTextureGradClampARB(f16samplerCubeArray sampler, | | | f16vec4 P, f16vec3 dPdx, | | | f16vec3 dPdy, | | | float16_t lodClamp, | | | out f16vec4 texel) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGradClampARB(f16sampler1D sampler, | Do a filtered texture lookup | | float16_t P, float16_t dPdx, | as in textureGrad(), but | | float16_t dPdy, | clamp the automatically | | float16_t lodClamp) | computed level of detail to | | f16vec4 textureGradClampARB(f16sampler2D sampler, | be greater than or equal to | | f16vec2 P, f16vec2 dPdx, | . | | f16vec2 dPdy, | | | float16_t lodClamp) | | | f16vec4 textureGradClampARB(f16sampler3D sampler, | | | f16vec3 P, f16vec3 dPdx, | | | f16vec3 dPdy, | | | float16_t lodClamp) | | | f16vec4 textureGradClampARB(f16samplerCube sampler, | | | f16vec3 P, f16vec3 dPdx, | | | f16vec3 dPdy, | | | float16_t lodClamp) | | | float16_t textureGradClampARB(f16sampler1DShadow sampler, | | | vec3 P, float dPdx, float dPdy,| | | float lodClamp) | | | float16_t textureGradClampARB(f16sampler1DShadow sampler, | | | f16vec2 P, float compare, | | | float16_t dPdx, float16_t dPdy,| | | float16_t lodClamp) | | | float16_t textureGradClampARB(f16sampler2DShadow sampler, | | | vec3 P, vec2 dPdx, vec2 dPdy, | | | float lodClamp) | | | float16_t textureGradClampARB(f16sampler2DShadow sampler, | | | f16vec2 P, float compare, | | | f16vec2 dPdx, f16vec2 dPdy, | | | float16_t lodClamp) | | | float16_t textureGradClampARB(f16samplerCubeShadow sampler, | | | vec4 P, vec3 dPdx, vec3 dPdy, | | | float lodClamp) | | | float16_t textureGradClampARB(f16samplerCubeShadow sampler, | | | f16vec3 P, float compare, | | | f16vec3 dPdx, f16vec3 dPdy, | | | float16_t lodClamp) | | | f16vec4 textureGradClampARB(f16sampler1DArray sampler, | | | f16vec2 P, float16_t dPdx, | | | float16_t dPdy, | | | float16_t lodClamp) | | | f16vec4 textureGradClampARB(f16sampler2DArray sampler, | | | f16vec3 P, f16vec2 dPdx, | | | f16vec2 dPdy, | | | float16_t lodClamp) | | | float16_t textureGradClampARB(f16sampler1DArrayShadow | | | sampler, vec3 P, float dPdx, | | | float dPdy, float lodClamp) | | | float16_t textureGradClampARB(f16sampler1DArrayShadow | | | sampler, f16vec2 P, | | | float compare, float16_t dPdx, | | | float16_t dPdy, | | | float16_t lodClamp) | | | float16_t textureGradClampARB(f16sampler2DArrayShadow | | | sampler, vec4 P, vec2 dPdx, | | | vec2 dPdy, float lodClamp) | | | float16_t textureGradClampARB(f16sampler2DArrayShadow | | | sampler, f16vec3 P, | | | float compare, f16vec2 dPdx, | | | f16vec2 dPdy, | | | float16_t lodClamp) | | | f16vec4 textureGradClampARB(f16samplerCubeArray sampler, | | | f16vec4 P, f16vec3 dPdx, | | | f16vec3 dPdy, | | | float16_t lodClamp) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGradOffsetClampARB(f16sampler2D sampler, | Do a filtered texture lookup | | f16vec2 P, f16vec2 dPdx, | as in textureGradOffset(), | | f16vec2 dPdy, | but return texture access | | ivec2 offset, | residency information from | | float16_t lodClamp, | the function and the filtered| | out f16vec4 texel) | lookup result in the out | | int sparseTextureGradOffsetClampARB(f16sampler3D sampler, | parameter . | | f16vec3 P, f16vec3 dPdx, | Additionally, clamp the | | f16vec3 dPdy, | automatically computed level | | ivec3 offset, | of detail to be greater than | | float16_t lodClamp, | or equal to . | | out f16vec4 texel) | | | int sparseTextureGradOffsetClampARB(f16sampler2DShadow | | | sampler, vec3 P, | | | vec2 dPdx, vec2 dPdy, | | | ivec2 offset, | | | float lodClamp, | | | out float16_t texel) | | | int sparseTextureGradOffsetClampARB(f16sampler2DShadow | | | sampler, f16vec2 P, | | | float compare, | | | f16vec2 dPdx, | | | f16vec2 dPdy, | | | ivec2 offset, | | | float16_t lodClamp, | | | out float16_t texel) | | | int sparseTextureGradOffsetClampARB(f16sampler2DArray | | | sampler, f16vec3 P, | | | f16vec2 dPdx, | | | f16vec2 dPdy, | | | ivec2 offset, | | | float16_t lodClamp, | | | out f16vec4 texel) | | | int sparseTextureGradOffsetClampARB(f16sampler2DArrayShadow | | | sampler, vec4 P, | | | vec2 dPdx, vec2 dPdy, | | | ivec2 offset, | | | float lodClamp, | | | out float16_t texel) | | | int sparseTextureGradOffsetClampARB(f16sampler2DArrayShadow | | | sampler, f16vec3 P, | | | float compare, | | | f16vec2 dPdx, | | | f16vec2 dPdy, | | | ivec2 offset, | | | float16_t lodClamp, | | | out float16_t texel) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGradOffsetClampARB(f16sampler1D sampler, | Do a filtered texture lookup | | float16_t P, | as in textureGradOffset(), | | float16_t dPdx, | but clamp the automatically | | float16_t dPdy, | computed level of detail to | | int offset, | be greater than or equal to | | float16_t lodClamp) | . | | f16vec4 textureGradOffsetClampARB(f16sampler2D sampler, | | | f16vec2 P, f16vec2 dPdx, | | | f16vec2 dPdy, | | | ivec2 offset, | | | float16_t lodClamp) | | | f16vec4 textureGradOffsetClampARB(f16sampler3D sampler, | | | f16vec3 P, f16vec3 dPdx, | | | f16vec3 dPdy, | | | ivec3 offset, | | | float16_t lodClamp) | | | float16_t textureGradOffsetClampARB(f16sampler1DShadow | | | sampler, vec3 P, | | | float dPdx, float dPdy, | | | int offset, | | | float lodClamp) | | | float16_t textureGradOffsetClampARB(f16sampler1DShadow | | | sampler, f16vec2 P, | | | float compare, | | | float16_t dPdx, | | | float16_t dPdy, | | | int offset, | | | float16_t lodClamp) | | | float16_t textureGradOffsetClampARB(f16sampler2DShadow | | | sampler, vec3 P, | | | vec2 dPdx, vec2 dPdy, | | | ivec2 offset, | | | float lodClamp) | | | float16_t textureGradOffsetClampARB(f16sampler2DShadow | | | sampler, f16vec2 P, | | | float compare, | | | f16vec2 dPdx, | | | f16vec2 dPdy, | | | ivec2 offset, | | | float16_t lodClamp) | | | f16vec4 textureGradOffsetClampARB(f16sampler1DArray | | | sampler, f16vec2 P, | | | float16_t dPdx, | | | float16_t dPdy, | | | int offset, | | | float16_t lodClamp) | | | f16vec4 textureGradOffsetClampARB(f16sampler2DArray | | | sampler, f16vec3 P, | | | f16vec2 dPdx, | | | f16vec2 dPdy, | | | ivec2 offset, | | | float16_t lodClamp) | | | float16_t textureGradOffsetClampARB(f16sampler1DArrayShadow | | | sampler, vec3 P, | | | float dPdx, float dPdy, | | | int offset, | | | float lodClamp) | | | float16_t textureGradOffsetClampARB(f16sampler1DArrayShadow | | | sampler, f16vec2 P, | | | float compare, | | | float16_t dPdx, | | | float16_t dPdy, | | | int offset, | | | float16_t lodClamp) | | | float16_t textureGradOffsetClampARB(f16sampler2DArrayShadow | | | sampler, vec4 P, | | | vec2 dPdx, vec2 dPdy, | | | ivec2 offset, | | | float lodClamp) | | | float16_t textureGradOffsetClampARB(f16sampler2DArrayShadow | | | sampler, f16vec3 P, | | | float compare, | | | f16vec2 dPdx, | | | f16vec2 dPdy, | | | ivec2 offset, | | | float16_t lodClamp) | | +--------------------------------------------------------------+------------------------------+ Dependencies on KHR_vulkan_glsl Modify Section, Overview - Subpass Inputs (add new types prefixed by "f16" to the list of the second paragraph) Subpasses are read through a new set of types, available only to fragment shaders: subpassInput subpassInputMS f16subpassInput f16subpassInputMS ... Modify Section, Changes to Chapter 3 of the OpenGL Shading Language Specification (add new keyword prefixed by "f16" to the list of the second paragraph) Add the following keywords to section 3.6 Keywords: texture1D texture2D texture3D textureCube texture2DRect texture1DArray texture2DArray textureBuffer texture2DMS texture2DMSArray textureCubeArray f16texture1D f16texture2D f16texture3D f16textureCube f16texture2DRect f16texture1DArray f16texture2DArray f16textureBuffer f16texture2DMS f16texture2DMSArray f16textureCubeArray ... subpassInput f16subpassInput isubpassInput usubpassInput subpassInputMS f16subpassInputMS isubpassInputMS usubpassInputMS Modify Section, Changes to Chapter 4 of the OpenGL Shading Language Specification (add new types to the list of "Floating-Point Opaque Types", interleaved with the existing types) Floating-Point Opaque Types f16texture1D f16texture2D f16texture3D f16textureCube f16texture2DRect f16texture1DArray f16texture2DArray f16textureBuffer f16texture2DMS f16texture2DMSArray f16textureCubeArray f16subpassInput f16subpassInputMS Dependencies on AMD_texture_gather_bias_lod If the shader enables AMD_texture_gather_bias_lod, this extension adds additional texture gather functions, whose prototypes are different from those existing ones. +--------------------------------------------------------------+------------------------------+ | Syntax | Description | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGather(f16sampler2D sampler, vec2 P | Returns the value | | [, int comp [, float bias]]) | | | f16vec4 textureGather(f16sampler2D sampler, f16vec2 P | gvec4( | | [, int comp [, float16_t bias]]) | Sample_i0_j1( | | f16vec4 textureGather(f16sampler2DArray sampler, vec3 P | P, base, bias).comp, | | [, int comp [, float bias]]) | Sample_i1_j1( | | f16vec4 textureGather(f16sampler2DArray sampler, f16vec3 P | P, base, bias).comp, | | [, int comp [, float16_t bias]]) | Sample_i1_j0( | | f16vec4 textureGather(f16samplerCube sampler, vec3 P | P, base, bias).comp, | | [, int comp [, float bias]]) | Sample_i0_j0( | | f16vec4 textureGather(f16samplerCube sampler, f16vec3 P | P, base, bias).comp, | | [, int comp [, float16_t bias]]) | ... | | f16vec4 textureGather(f16samplerCubeArray sampler, vec4 P | | | [, int comp [, float bias]]) | | | f16vec4 textureGather(f16samplerCubeArray sampler, f16vec4 P | | | [, int comp [, float16_t bias]]) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGatherOffset(f16sampler2D sampler, vec2 P, | Perform a texture gather | | ivec2 offset [, int comp | operation as in | | [, float bias]]) | textureGather() by | | f16vec4 textureGatherOffset(f16sampler2D sampler, f16vec2 P, | as described in | | ivec2 offset [, int comp | textureOffset() except that | | [, float16_t bias]]) | the can be variable | | f16vec4 textureGatherOffset(f16sampler2DArray sampler, | (non constant) and ... | | vec3 P, ivec2 offset | | | [, int comp [, float bias]]) | | | f16vec4 textureGatherOffset(f16sampler2DArray sampler, | | | f16vec3 P, ivec2 offset | | | [, int comp [, float16_t bias]]) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGatherOffsets(f16sampler2D sampler, vec2 P, | Operate identically to | | ivec2 offsets[4] [, int comp | textureGatherOffset() except | | [, float bias]]) | that is used to | | f16vec4 textureGatherOffsets(f16sampler2D sampler, f16vec2 P,| determine the location of the| | ivec2 offsets[4] [, int comp | four texels to sample. ... | | [, float16_t bias]]) | | | f16vec4 textureGatherOffsets(f16sampler2DArray sampler, | | | vec3 P, ivec2 offsets[4] | | | [, int comp [, float bias]]) | | | f16vec4 textureGatherOffsets(f16sampler2DArray sampler, | | | f16vec3 P, ivec2 offsets[4] | | | [, int comp [, float16_t bias]])| | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGatherLodAMD(f16sampler2D sampler, vec2 P, | Perform a texture gather | | float lod [, int comp]) | operation as in | | f16vec4 textureGatherLodAMD(f16sampler2D sampler, f16vec2 P, | textureGather() with explicit| | float16_t lod [, int comp]) | LOD, but the four-texel | | f16vec4 textureGatherLodAMD(f16sampler2DArray sampler, | sampling is modified as | | vec3 P, float lod [, int comp]) | follow: | | f16vec4 textureGatherLodAMD(f16sampler2DArray sampler, | | | f16vec3 P, float16_t lod | gvec4( | | [, int comp]) | Sample_i0_j1(P, lod).comp, | | f16vec4 textureGatherLodAMD(f16samplerCube sampler, | Sample_i1_j1(P, lod).comp, | | vec3 P, float lod [, int comp]) | Sample_i1_j0(P, lod).comp, | | f16vec4 textureGatherLodAMD(f16samplerCube sampler, | Sample_i0_j0(P, lod).comp) | | f16vec3 P, float16_t lod | | | [, int comp]) | | | f16vec4 textureGatherLodAMD(f16samplerCubeArray sampler, | | | vec4 P, float lod [, int comp]) | | | f16vec4 textureGatherLodAMD(f16samplerCubeArray sampler, | | | f16vec4 P, float16_t lod | | | [, int comp]) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGatherLodOffsetAMD(f16sampler2D sampler, | Perform a texture gather | | vec2 P, float lod, | operation as in | | ivec2 offset [, int comp]) | textureGatherOffset() but | | f16vec4 textureGatherLodOffsetAMD(f16sampler2D sampler, | with explicit LOD. | | f16vec2 P, float16_t lod, | | | ivec2 offset [, int comp]) | | | f16vec4 textureGatherLodOffsetAMD(f16sampler2DArray sampler, | | | vec3 P, float lod, | | | ivec2 offset [, int comp]) | | | f16vec4 textureGatherLodOffsetAMD(f16sampler2DArray sampler, | | | f16vec3 P, float16_t lod, | | | ivec2 offset [, int comp]) | | +--------------------------------------------------------------+------------------------------+ | f16vec4 textureGatherLodOffsetsAMD(f16sampler2D sampler, | Perform a texture gather | | vec2 P, float lod, | operation as in | | ivec2 offsets[4] | textureGatherOffsets() but | | [, int comp]) | with explicit LOD. | | f16vec4 textureGatherLodOffsetsAMD(f16sampler2D sampler, | | | f16vec2 P, float16_t lod, | | | ivec2 offsets[4] | | | [, int comp]) | | | f16vec4 textureGatherLodOffsetsAMD(f16sampler2DArray sampler,| | | vec3 P, float lod, | | | ivec2 offsets[4] | | | [, int comp]) | | | f16vec4 textureGatherLodOffsetsAMD(f16sampler2DArray sampler,| | | f16vec3 P, float16_t lod, | | | ivec2 offsets[4] | | | [, int comp]) | | +--------------------------------------------------------------+------------------------------+ If the shader enables both AMD_texture_gather_bias_lod and ARB_sparse_texture2, this extension adds additional sparse texture gather functions, whose prototypes are different from those existing ones. +--------------------------------------------------------------+------------------------------+ | Syntax | Description | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGatherARB(f16sampler2D sampler, vec2 P, | Do a texture gather operation| | out f16vec4 texel [, int comp | as in textureGather(), but | | [, float bias]]) | return texture access | | int sparseTextureGatherARB(f16sampler2D sampler, f16vec2 P, | residency information from | | out f16vec4 texel [, int comp | the function and the filtered| | [, float16_t bias]]) | lookup result in the out | | int sparseTextureGatherARB(f16sampler2DArray sampler, | parameter . | | vec3 P, out f16vec4 texel | | | [, int comp [, float bias]]) | | | int sparseTextureGatherARB(f16sampler2DArray sampler, | | | f16vec3 P, out f16vec4 texel | | | [, int comp [, float16_t bias]]) | | | int sparseTextureGatherARB(f16samplerCube sampler, vec3 P, | | | out f16vec4 texel [, int comp | | | [, float bias]]) | | | int sparseTextureGatherARB(f16samplerCube sampler, f16vec3 P,| | | out f16vec4 texel [, int comp | | | [, float16_t bias]]) | | | int sparseTextureGatherARB(f16samplerCubeArray sampler, | | | vec4 P, out f16vec4 texel | | | [, int comp [, float bias]]) | | | int sparseTextureGatherARB(f16samplerCubeArray sampler, | | | f16vec4 P, out f16vec4 texel | | | [, int comp [, float16_t bias]]) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGatherOffsetARB(f16sampler2D sampler, | Do a texture gather operation| | vec2 P, ivec2 offset, | as in textureGatherOffset(), | | out f16vec4 texel | but return texture access | | [, int comp [, float bias]])| residency information from | | int sparseTextureGatherOffsetARB(f16sampler2D sampler, | the function and the filtered| | f16vec2 P, ivec2 offset, | lookup result in the out | | out f16vec4 texel | parameter . | | [, int comp | | | [, float16_t bias]]) | | | int sparseTextureGatherOffsetARB(f16sampler2DArray sampler, | | | vec3 P, ivec2 offset, | | | out f16vec4 texel | | | [, int comp [, float bias]])| | | int sparseTextureGatherOffsetARB(f16sampler2DArray sampler, | | | f16vec3 P, ivec2 offset, | | | out f16vec4 texel | | | [, int comp | | | [, float16_t bias]]) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGatherOffsetsARB(f16sampler2D sampler, | Do a texture gather operation| | vec2 P, ivec2 offsets[4], | as in textureGatherOffsets(),| | out f16vec4 texel | but return texture access | | [, int comp | residency information from | | [, float bias]]) | the function and the filtered| | int sparseTextureGatherOffsetsARB(f16sampler2D sampler, | lookup result in the out | | f16vec2 P, | parameter . | | ivec2 offsets[4], | | | out f16vec4 texel | | | [, int comp | | | [, float16_t bias]]) | | | int sparseTextureGatherOffsetsARB(f16sampler2DArray sampler, | | | vec3 P, ivec2 offsets[4], | | | out f16vec4 texel | | | [, int comp | | | [, float bias]]) | | | int sparseTextureGatherOffsetsARB(f16sampler2DArray sampler, | | | f16vec3 P, | | | ivec2 offsets[4], | | | out f16vec4 texel | | | [, int comp | | | [, float16_t bias]]) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGatherLodAMD(f16sampler2D sampler, | Do a texture gather operation| | vec2 P, float lod, | as in textureGather() with, | | out f16vec4 texel [, int comp])| explicit LOD, but return | | int sparseTextureGatherLodAMD(f16sampler2D sampler, | texture access residency | | f16vec2 P, float16_t lod, | information from the function| | out f16vec4 texel [, int comp])| and the filtered lookup | | int sparseTextureGatherLodAMD(f16sampler2DArray sampler, | result in the out parameter | | vec3 P, float lod, | . | | out f16vec4 texel [, int comp])| | | int sparseTextureGatherLodAMD(f16sampler2DArray sampler, | | | f16vec3 P, float16_t lod, | | | out f16vec4 texel [, int comp])| | | int sparseTextureGatherLodAMD(f16samplerCube sampler, | | | vec3 P, float lod, | | | out f16vec4 texel [, int comp])| | | int sparseTextureGatherLodAMD(f16samplerCube sampler, | | | f16vec3 P, float16_t lod, | | | out f16vec4 texel [, int comp])| | | int sparseTextureGatherLodAMD(f16samplerCubeArray sampler, | | | vec4 P, float lod, | | | out f16vec4 texel [, int comp])| | | int sparseTextureGatherLodAMD(f16samplerCubeArray sampler, | | | f16vec4 P, float16_t lod, | | | out f16vec4 texel [, int comp])| | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGatherLodOffsetAMD(f16sampler2D sampler, | Do a texture gather operation| | vec2 P, float lod, | as in textureGatherOffset() | | ivec2 offset, | with explicit LOD, but return| | out f16vec4 texel | texture access residency | | [, int comp]) | information from the function| | int sparseTextureGatherLodOffsetAMD(f16sampler2D sampler, | and the filtered lookup | | f16vec2 P, float16_t lod,| result in the out parameter | | ivec2 offset, | . | | out f16vec4 texel | | | [, int comp]) | | | int sparseTextureGatherLodOffsetAMD(f16sampler2DArray | | | sampler, vec3 P, | | | float lod, | | | ivec2 offset, | | | out f16vec4 texel | | | [, int comp]) | | | int sparseTextureGatherLodOffsetAMD(f16sampler2DArray | | | sampler, f16vec3 P, | | | float16_t lod, | | | ivec2 offset, | | | out f16vec4 texel | | | [, int comp]) | | +--------------------------------------------------------------+------------------------------+ | int sparseTextureGatherLodOffsetsAMD(f16sampler2D sampler, | Do a texture gather operation| | vec2 P, float lod, | as in textureGatherOffsets() | | ivec2 offsets[4], | with explicit LOD, but return| | out f16vec4 texel | texture access residency | | [, int comp]) | information from the function| | int sparseTextureGatherLodOffsetsAMD(f16sampler2D sampler, | and the filtered lookup | | f16vec2 P, | result in the out parameter | | float16_t lod, | . | | ivec2 offsets[4], | | | out f16vec4 texel | | | [, int comp]) | | | int sparseTextureGatherLodOffsetsAMD(f16sampler2DArray | | | sampler, vec3 P, | | | float lod, | | | ivec2 offsets[4], | | | out f16vec4 texel | | | [, int comp]) | | | int sparseTextureGatherLodOffsetsAMD(f16sampler2DArray | | | sampler, f16vec3 P, | | | float16_t lod, | | | ivec2 offsets[4], | | | out f16vec4 texel | | | [, int comp]) | | +--------------------------------------------------------------+------------------------------+ Errors None. New State None. New Implementation Dependent State None. Issues (1) What is the intention of this extension? RESOLVED: This extension is designed to support half-precision floating-point fetch operations in shader texture functions and shader image memory functions. We define new opaque types and built-in functions to achieve this goal and minimize type conversion between single-precision and half-precision floating-point. Data types, other than opaque sampler and image types, that could be half float include: texture lookup result, float texture coordinates, explicit float LOD, LOD bias, minimum LOD clamp, input data for image store, output data from image load. (2) I see there are two half-precision floating-point forms for the same texture lookup function, why? RESOLVED: The difference between these two forms are: in the one form, only texture lookup result and opaque sampler types are half-precision floating-point while in the other form, other arguments become half-precision floating-point as well, such as texture coordinates, explicit LOD, LOD bias, and minimum LOD clamp. The motive is to provide flexibility for the shader and to minimize type conversion that might be involved. Still, you have to pay special attention to the depth reference value (denoted as or in the function syntax). They are always single float typed. We do not want to introduce unexpected incorrectness of depth comparison because of insufficient precision of the depth reference value. Revision History Rev. Date Author Changes ---- -------- -------- --------------------------------------------------------------------- 6 3/9/18 rexu Add some missing function prototypes when this extension interacts with AMD_texture_gather_bias_lod. 5 9/20/17 dwitczak Fix incorrect definitions of some of the textureClampARB(), textureGradClampARB(), textureLod() and textureProjLodOffset() function prototypes. Remove duplicate function prototype definitions. 4 11/24/16 rexu Clarify that when is present in shadow forms of textureProj*(), the resulting , by divding its initial value with the last component of

, is used as . 3 11/21/16 rexu Add the interaction with AMD_texture_gather_bias_lod. 2 11/14/16 rexu Rename this extension from AMD_gpu_shader_half_float_texture to AMD_gpu_shader_half_float_fetch. The former name is somewhat confusing, which could also refer to F16 texture internal format used in OpenGL APIs. Clarify that when half-precision floating-point opaque types are used in shader texture functions and shader image memory functions, the results are half-precision if they are floating-point typed. 1 11/03/16 rexu Initial draft.