#version 450 core | |
#extension GL_ARB_sparse_texture2: enable | |
#extension GL_ARB_sparse_texture_clamp: enable | |
#extension GL_AMD_gpu_shader_half_float: enable | |
#extension GL_AMD_gpu_shader_half_float_fetch: enable | |
#extension GL_AMD_texture_gather_bias_lod: enable | |
layout(set = 0, binding = 0) uniform f16sampler1D s1D; | |
layout(set = 0, binding = 1) uniform f16sampler2D s2D; | |
layout(set = 0, binding = 2) uniform f16sampler3D s3D; | |
layout(set = 0, binding = 3) uniform f16sampler2DRect s2DRect; | |
layout(set = 0, binding = 4) uniform f16samplerCube sCube; | |
layout(set = 0, binding = 5) uniform f16samplerBuffer sBuffer; | |
layout(set = 0, binding = 6) uniform f16sampler2DMS s2DMS; | |
layout(set = 0, binding = 7) uniform f16sampler1DArray s1DArray; | |
layout(set = 0, binding = 8) uniform f16sampler2DArray s2DArray; | |
layout(set = 0, binding = 9) uniform f16samplerCubeArray sCubeArray; | |
layout(set = 0, binding = 10) uniform f16sampler2DMSArray s2DMSArray; | |
layout(set = 0, binding = 11) uniform f16sampler1DShadow s1DShadow; | |
layout(set = 0, binding = 12) uniform f16sampler2DShadow s2DShadow; | |
layout(set = 0, binding = 13) uniform f16sampler2DRectShadow s2DRectShadow; | |
layout(set = 0, binding = 14) uniform f16samplerCubeShadow sCubeShadow; | |
layout(set = 0, binding = 15) uniform f16sampler1DArrayShadow s1DArrayShadow; | |
layout(set = 0, binding = 16) uniform f16sampler2DArrayShadow s2DArrayShadow; | |
layout(set = 0, binding = 17) uniform f16samplerCubeArrayShadow sCubeArrayShadow; | |
layout(set = 1, binding = 0) layout(rgba16f) uniform f16image1D i1D; | |
layout(set = 1, binding = 1) layout(rgba16f) uniform f16image2D i2D; | |
layout(set = 1, binding = 2) layout(rgba16f) uniform f16image3D i3D; | |
layout(set = 1, binding = 3) layout(rgba16f) uniform f16image2DRect i2DRect; | |
layout(set = 1, binding = 4) layout(rgba16f) uniform f16imageCube iCube; | |
layout(set = 1, binding = 5) layout(rgba16f) uniform f16image1DArray i1DArray; | |
layout(set = 1, binding = 6) layout(rgba16f) uniform f16image2DArray i2DArray; | |
layout(set = 1, binding = 7) layout(rgba16f) uniform f16imageCubeArray iCubeArray; | |
layout(set = 1, binding = 8) layout(rgba16f) uniform f16imageBuffer iBuffer; | |
layout(set = 1, binding = 9) layout(rgba16f) uniform f16image2DMS i2DMS; | |
layout(set = 1, binding = 10) layout(rgba16f) uniform f16image2DMSArray i2DMSArray; | |
layout(set = 2, binding = 0) uniform f16texture1D t1D; | |
layout(set = 2, binding = 1) uniform f16texture2D t2D; | |
layout(set = 2, binding = 2) uniform f16texture3D t3D; | |
layout(set = 2, binding = 3) uniform f16texture2DRect t2DRect; | |
layout(set = 2, binding = 4) uniform f16textureCube tCube; | |
layout(set = 2, binding = 5) uniform f16texture1DArray t1DArray; | |
layout(set = 2, binding = 6) uniform f16texture2DArray t2DArray; | |
layout(set = 2, binding = 7) uniform f16textureCubeArray tCubeArray; | |
layout(set = 2, binding = 8) uniform f16textureBuffer tBuffer; | |
layout(set = 2, binding = 9) uniform f16texture2DMS t2DMS; | |
layout(set = 2, binding = 10) uniform f16texture2DMSArray t2DMSArray; | |
layout(set = 2, binding = 11) uniform sampler s; | |
layout(set = 2, binding = 12) uniform samplerShadow sShadow; | |
layout(set = 3, binding = 0, input_attachment_index = 0) uniform f16subpassInput subpass; | |
layout(set = 3, binding = 1, input_attachment_index = 0) uniform f16subpassInputMS subpassMS; | |
layout(location = 0) in float c1; | |
layout(location = 1) in vec2 c2; | |
layout(location = 2) in vec3 c3; | |
layout(location = 3) in vec4 c4; | |
layout(location = 4) in float compare; | |
layout(location = 5) in float lod; | |
layout(location = 6) in float bias; | |
layout(location = 7) in float lodClamp; | |
layout(location = 8) in float dPdxy1; | |
layout(location = 9) in vec2 dPdxy2; | |
layout(location = 10) in vec3 dPdxy3; | |
layout(location = 11) in float16_t f16c1; | |
layout(location = 12) in f16vec2 f16c2; | |
layout(location = 13) in f16vec3 f16c3; | |
layout(location = 14) in f16vec4 f16c4; | |
layout(location = 15) in float16_t f16lod; | |
layout(location = 16) in float16_t f16bias; | |
layout(location = 17) in float16_t f16lodClamp; | |
layout(location = 18) in float16_t f16dPdxy1; | |
layout(location = 19) in f16vec2 f16dPdxy2; | |
layout(location = 20) in f16vec3 f16dPdxy3; | |
const int offset1 = 1; | |
const ivec2 offset2 = ivec2(1); | |
const ivec3 offset3 = ivec3(1); | |
const ivec2 offsets[4] = { offset2, offset2, offset2, offset2 }; | |
layout(location = 0) out vec4 fragColor; | |
f16vec4 testTexture() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += texture(s1D, c1); | |
texel += texture(s1D, f16c1, f16bias); | |
texel += texture(s2D, c2); | |
texel += texture(s2D, f16c2, f16bias); | |
texel += texture(s3D, c3); | |
texel += texture(s3D, f16c3, f16bias); | |
texel += texture(sCube, c3); | |
texel += texture(sCube, f16c3, f16bias); | |
texel.x += texture(s1DShadow, c3); | |
texel.x += texture(s1DShadow, f16c2, compare, f16bias); | |
texel.x += texture(s2DShadow, c3); | |
texel.x += texture(s2DShadow, f16c2, compare, f16bias); | |
texel.x += texture(sCubeShadow, c4); | |
texel.x += texture(sCubeShadow, f16c3, compare, f16bias); | |
texel += texture(s1DArray, c2); | |
texel += texture(s1DArray, f16c2, f16bias); | |
texel += texture(s2DArray, c3); | |
texel += texture(s2DArray, f16c3, f16bias); | |
texel += texture(sCubeArray, c4); | |
texel += texture(sCubeArray, f16c4, f16bias); | |
texel.x += texture(s1DArrayShadow, c3); | |
texel.x += texture(s1DArrayShadow, f16c2, compare, f16bias); | |
texel.x += texture(s2DArrayShadow, c4); | |
texel.x += texture(s2DArrayShadow, f16c3, compare); | |
texel += texture(s2DRect, c2); | |
texel += texture(s2DRect, f16c2); | |
texel.x += texture(s2DRectShadow, c3); | |
texel.x += texture(s2DRectShadow, f16c2, compare); | |
texel.x += texture(sCubeArrayShadow, c4, compare); | |
texel.x += texture(sCubeArrayShadow, f16c4, compare); | |
return texel; | |
} | |
f16vec4 testTextureProj() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureProj(s1D, c2); | |
texel += textureProj(s1D, f16c2, f16bias); | |
texel += textureProj(s1D, c4); | |
texel += textureProj(s1D, f16c4, f16bias); | |
texel += textureProj(s2D, c3); | |
texel += textureProj(s2D, f16c3, f16bias); | |
texel += textureProj(s2D, c4); | |
texel += textureProj(s2D, f16c4, f16bias); | |
texel += textureProj(s3D, c4); | |
texel += textureProj(s3D, f16c4, f16bias); | |
texel.x += textureProj(s1DShadow, c4); | |
texel.x += textureProj(s1DShadow, f16c3, compare, f16bias); | |
texel.x += textureProj(s2DShadow, c4); | |
texel.x += textureProj(s2DShadow, f16c3, compare, f16bias); | |
texel += textureProj(s2DRect, c3); | |
texel += textureProj(s2DRect, f16c3); | |
texel += textureProj(s2DRect, c4); | |
texel += textureProj(s2DRect, f16c4); | |
texel.x += textureProj(s2DRectShadow, c4); | |
texel.x += textureProj(s2DRectShadow, f16c3, compare); | |
return texel; | |
} | |
f16vec4 testTextureLod() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureLod(s1D, c1, lod); | |
texel += textureLod(s1D, f16c1, f16lod); | |
texel += textureLod(s2D, c2, lod); | |
texel += textureLod(s2D, f16c2, f16lod); | |
texel += textureLod(s3D, c3, lod); | |
texel += textureLod(s3D, f16c3, f16lod); | |
texel += textureLod(sCube, c3, lod); | |
texel += textureLod(sCube, f16c3, f16lod); | |
texel.x += textureLod(s1DShadow, c3, lod); | |
texel.x += textureLod(s1DShadow, f16c2, compare, f16lod); | |
texel.x += textureLod(s2DShadow, c3, lod); | |
texel.x += textureLod(s2DShadow, f16c2, compare, f16lod); | |
texel += textureLod(s1DArray, c2, lod); | |
texel += textureLod(s1DArray, f16c2, f16lod); | |
texel += textureLod(s2DArray, c3, lod); | |
texel += textureLod(s2DArray, f16c3, f16lod); | |
texel.x += textureLod(s1DArrayShadow, c3, lod); | |
texel.x += textureLod(s1DArrayShadow, f16c2, compare, f16lod); | |
texel += textureLod(sCubeArray, c4, lod); | |
texel += textureLod(sCubeArray, f16c4, f16lod); | |
return texel; | |
} | |
f16vec4 testTextureOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureOffset(s1D, c1, offset1); | |
texel += textureOffset(s1D, f16c1, offset1, f16bias); | |
texel += textureOffset(s2D, c2, offset2); | |
texel += textureOffset(s2D, f16c2, offset2, f16bias); | |
texel += textureOffset(s3D, c3, offset3); | |
texel += textureOffset(s3D, f16c3, offset3, f16bias); | |
texel += textureOffset(s2DRect, c2, offset2); | |
texel += textureOffset(s2DRect, f16c2, offset2); | |
texel.x += textureOffset(s2DRectShadow, c3, offset2); | |
texel.x += textureOffset(s2DRectShadow, f16c2, compare, offset2); | |
texel.x += textureOffset(s1DShadow, c3, offset1); | |
texel.x += textureOffset(s1DShadow, f16c2, compare, offset1, f16bias); | |
texel.x += textureOffset(s2DShadow, c3, offset2); | |
texel.x += textureOffset(s2DShadow, f16c2, compare, offset2, f16bias); | |
texel += textureOffset(s1DArray, c2, offset1); | |
texel += textureOffset(s1DArray, f16c2, offset1, f16bias); | |
texel += textureOffset(s2DArray, c3, offset2); | |
texel += textureOffset(s2DArray, f16c3, offset2, f16bias); | |
texel.x += textureOffset(s1DArrayShadow, c3, offset1); | |
texel.x += textureOffset(s1DArrayShadow, f16c2, compare, offset1, f16bias); | |
texel.x += textureOffset(s2DArrayShadow, c4, offset2); | |
texel.x += textureOffset(s2DArrayShadow, f16c3, compare, offset2); | |
return texel; | |
} | |
f16vec4 testTextureProjOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureProjOffset(s1D, c2, offset1); | |
texel += textureProjOffset(s1D, f16c2, offset1, f16bias); | |
texel += textureProjOffset(s1D, c4, offset1); | |
texel += textureProjOffset(s1D, f16c4, offset1, f16bias); | |
texel += textureProjOffset(s2D, c3, offset2); | |
texel += textureProjOffset(s2D, f16c3, offset2, f16bias); | |
texel += textureProjOffset(s2D, c4, offset2); | |
texel += textureProjOffset(s2D, f16c4, offset2, f16bias); | |
texel += textureProjOffset(s3D, c4, offset3); | |
texel += textureProjOffset(s3D, f16c4, offset3, f16bias); | |
texel += textureProjOffset(s2DRect, c3, offset2); | |
texel += textureProjOffset(s2DRect, f16c3, offset2); | |
texel += textureProjOffset(s2DRect, c4, offset2); | |
texel += textureProjOffset(s2DRect, f16c4, offset2); | |
texel.x += textureProjOffset(s2DRectShadow, c4, offset2); | |
texel.x += textureProjOffset(s2DRectShadow, f16c3, compare, offset2); | |
texel.x += textureProjOffset(s1DShadow, c4, offset1); | |
texel.x += textureProjOffset(s1DShadow, f16c3, compare, offset1, f16bias); | |
texel.x += textureProjOffset(s2DShadow, c4, offset2); | |
texel.x += textureProjOffset(s2DShadow, f16c3, compare, offset2, f16bias); | |
return texel; | |
} | |
f16vec4 testTextureLodOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureLodOffset(s1D, c1, lod, offset1); | |
texel += textureLodOffset(s1D, f16c1, f16lod, offset1); | |
texel += textureLodOffset(s2D, c2, lod, offset2); | |
texel += textureLodOffset(s2D, f16c2, f16lod, offset2); | |
texel += textureLodOffset(s3D, c3, lod, offset3); | |
texel += textureLodOffset(s3D, f16c3, f16lod, offset3); | |
texel.x += textureLodOffset(s1DShadow, c3, lod, offset1); | |
texel.x += textureLodOffset(s1DShadow, f16c2, compare, f16lod, offset1); | |
texel.x += textureLodOffset(s2DShadow, c3, lod, offset2); | |
texel.x += textureLodOffset(s2DShadow, f16c2, compare, f16lod, offset2); | |
texel += textureLodOffset(s1DArray, c2, lod, offset1); | |
texel += textureLodOffset(s1DArray, f16c2, f16lod, offset1); | |
texel += textureLodOffset(s2DArray, c3, lod, offset2); | |
texel += textureLodOffset(s2DArray, f16c3, f16lod, offset2); | |
texel.x += textureLodOffset(s1DArrayShadow, c3, lod, offset1); | |
texel.x += textureLodOffset(s1DArrayShadow, f16c2, compare, f16lod, offset1); | |
return texel; | |
} | |
f16vec4 testTextureProjLodOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureProjLodOffset(s1D, c2, lod, offset1); | |
texel += textureProjLodOffset(s1D, f16c2, f16lod, offset1); | |
texel += textureProjLodOffset(s1D, c4, lod, offset1); | |
texel += textureProjLodOffset(s1D, f16c4, f16lod, offset1); | |
texel += textureProjLodOffset(s2D, c3, lod, offset2); | |
texel += textureProjLodOffset(s2D, f16c3, f16lod, offset2); | |
texel += textureProjLodOffset(s2D, c4, lod, offset2); | |
texel += textureProjLodOffset(s2D, f16c4, f16lod, offset2); | |
texel += textureProjLodOffset(s3D, c4, lod, offset3); | |
texel += textureProjLodOffset(s3D, f16c4, f16lod, offset3); | |
texel.x += textureProjLodOffset(s1DShadow, c4, lod, offset1); | |
texel.x += textureProjLodOffset(s1DShadow, f16c3, compare, f16lod, offset1); | |
texel.x += textureProjLodOffset(s2DShadow, c4, lod, offset2); | |
texel.x += textureProjLodOffset(s2DShadow, f16c3, compare, f16lod, offset2); | |
return texel; | |
} | |
f16vec4 testTexelFetch() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += texelFetch(s1D, int(c1), int(lod)); | |
texel += texelFetch(s2D, ivec2(c2), int(lod)); | |
texel += texelFetch(s3D, ivec3(c3), int(lod)); | |
texel += texelFetch(s2DRect, ivec2(c2)); | |
texel += texelFetch(s1DArray, ivec2(c2), int(lod)); | |
texel += texelFetch(s2DArray, ivec3(c3), int(lod)); | |
texel += texelFetch(sBuffer, int(c1)); | |
texel += texelFetch(s2DMS, ivec2(c2), 1); | |
texel += texelFetch(s2DMSArray, ivec3(c3), 2); | |
return texel; | |
} | |
f16vec4 testTexelFetchOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += texelFetchOffset(s1D, int(c1), int(lod), offset1); | |
texel += texelFetchOffset(s2D, ivec2(c2), int(lod), offset2); | |
texel += texelFetchOffset(s3D, ivec3(c3), int(lod), offset3); | |
texel += texelFetchOffset(s2DRect, ivec2(c2), offset2); | |
texel += texelFetchOffset(s1DArray, ivec2(c2), int(lod), offset1); | |
texel += texelFetchOffset(s2DArray, ivec3(c3), int(lod), offset2); | |
return texel; | |
} | |
f16vec4 testTextureGrad() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureGrad(s1D, c1, dPdxy1, dPdxy1); | |
texel += textureGrad(s1D, f16c1, f16dPdxy1, f16dPdxy1); | |
texel += textureGrad(s2D, c2, dPdxy2, dPdxy2); | |
texel += textureGrad(s2D, f16c2, f16dPdxy2, f16dPdxy2); | |
texel += textureGrad(s3D, c3, dPdxy3, dPdxy3); | |
texel += textureGrad(s3D, f16c3, f16dPdxy3, f16dPdxy3); | |
texel += textureGrad(sCube, c3, dPdxy3, dPdxy3); | |
texel += textureGrad(sCube, f16c3, f16dPdxy3, f16dPdxy3); | |
texel += textureGrad(s2DRect, c2, dPdxy2, dPdxy2); | |
texel += textureGrad(s2DRect, f16c2, f16dPdxy2, f16dPdxy2); | |
texel.x += textureGrad(s2DRectShadow, c3, dPdxy2, dPdxy2); | |
texel.x += textureGrad(s2DRectShadow, f16c2, compare, f16dPdxy2, f16dPdxy2); | |
texel.x += textureGrad(s1DShadow, c3, dPdxy1, dPdxy1); | |
texel.x += textureGrad(s1DShadow, f16c2, compare, f16dPdxy1, f16dPdxy1); | |
texel.x += textureGrad(s2DShadow, c3, dPdxy2, dPdxy2); | |
texel.x += textureGrad(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2); | |
texel.x += textureGrad(sCubeShadow, c4, dPdxy3, dPdxy3); | |
texel.x += textureGrad(sCubeShadow, f16c3, compare, f16dPdxy3, f16dPdxy3); | |
texel += textureGrad(s1DArray, c2, dPdxy1, dPdxy1); | |
texel += textureGrad(s1DArray, f16c2, f16dPdxy1, f16dPdxy1); | |
texel += textureGrad(s2DArray, c3, dPdxy2, dPdxy2); | |
texel += textureGrad(s2DArray, f16c3, f16dPdxy2, f16dPdxy2); | |
texel.x += textureGrad(s1DArrayShadow, c3, dPdxy1, dPdxy1); | |
texel.x += textureGrad(s1DArrayShadow, f16c2, compare, f16dPdxy1, f16dPdxy1); | |
texel.x += textureGrad(s2DArrayShadow, c4, dPdxy2, dPdxy2); | |
texel.x += textureGrad(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2); | |
texel += textureGrad(sCubeArray, c4, dPdxy3, dPdxy3); | |
texel += textureGrad(sCubeArray, f16c4, f16dPdxy3, f16dPdxy3); | |
return texel; | |
} | |
f16vec4 testTextureGradOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureGradOffset(s1D, c1, dPdxy1, dPdxy1, offset1); | |
texel += textureGradOffset(s1D, f16c1, f16dPdxy1, f16dPdxy1, offset1); | |
texel += textureGradOffset(s2D, c2, dPdxy2, dPdxy2, offset2); | |
texel += textureGradOffset(s2D, f16c2, f16dPdxy2, f16dPdxy2, offset2); | |
texel += textureGradOffset(s3D, c3, dPdxy3, dPdxy3, offset3); | |
texel += textureGradOffset(s3D, f16c3, f16dPdxy3, f16dPdxy3, offset3); | |
texel += textureGradOffset(s2DRect, c2, dPdxy2, dPdxy2, offset2); | |
texel += textureGradOffset(s2DRect, f16c2, f16dPdxy2, f16dPdxy2, offset2); | |
texel.x += textureGradOffset(s2DRectShadow, c3, dPdxy2, dPdxy2, offset2); | |
texel.x += textureGradOffset(s2DRectShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2); | |
texel.x += textureGradOffset(s1DShadow, c3, dPdxy1, dPdxy1, offset1); | |
texel.x += textureGradOffset(s1DShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, offset1); | |
texel.x += textureGradOffset(s2DShadow, c3, dPdxy2, dPdxy2, offset2); | |
texel.x += textureGradOffset(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2); | |
texel += textureGradOffset(s1DArray, c2, dPdxy1, dPdxy1, offset1); | |
texel += textureGradOffset(s1DArray, f16c2, f16dPdxy1, f16dPdxy1, offset1); | |
texel += textureGradOffset(s2DArray, c3, dPdxy2, dPdxy2, offset2); | |
texel += textureGradOffset(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, offset2); | |
texel.x += textureGradOffset(s1DArrayShadow, c3, dPdxy1, dPdxy1, offset1); | |
texel.x += textureGradOffset(s1DArrayShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, offset1); | |
texel.x += textureGradOffset(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2); | |
texel.x += textureGradOffset(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2); | |
return texel; | |
} | |
f16vec4 testTextureProjGrad() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureProjGrad(s1D, c2, dPdxy1, dPdxy1); | |
texel += textureProjGrad(s1D, f16c2, f16dPdxy1, f16dPdxy1); | |
texel += textureProjGrad(s1D, c4, dPdxy1, dPdxy1); | |
texel += textureProjGrad(s1D, f16c4, f16dPdxy1, f16dPdxy1); | |
texel += textureProjGrad(s2D, c3, dPdxy2, dPdxy2); | |
texel += textureProjGrad(s2D, f16c3, f16dPdxy2, f16dPdxy2); | |
texel += textureProjGrad(s2D, c4, dPdxy2, dPdxy2); | |
texel += textureProjGrad(s2D, f16c4, f16dPdxy2, f16dPdxy2); | |
texel += textureProjGrad(s3D, c4, dPdxy3, dPdxy3); | |
texel += textureProjGrad(s3D, f16c4, f16dPdxy3, f16dPdxy3); | |
texel += textureProjGrad(s2DRect, c3, dPdxy2, dPdxy2); | |
texel += textureProjGrad(s2DRect, f16c3, f16dPdxy2, f16dPdxy2); | |
texel += textureProjGrad(s2DRect, c4, dPdxy2, dPdxy2); | |
texel += textureProjGrad(s2DRect, f16c4, f16dPdxy2, f16dPdxy2); | |
texel.x += textureProjGrad(s2DRectShadow, c4, dPdxy2, dPdxy2); | |
texel.x += textureProjGrad(s2DRectShadow, f16c3, compare, f16dPdxy2, f16dPdxy2); | |
texel.x += textureProjGrad(s1DShadow, c4, dPdxy1, dPdxy1); | |
texel.x += textureProjGrad(s1DShadow, f16c3, compare, f16dPdxy1, f16dPdxy1); | |
texel.x += textureProjGrad(s2DShadow, c4, dPdxy2, dPdxy2); | |
texel.x += textureProjGrad(s2DShadow, f16c3, compare, f16dPdxy2, f16dPdxy2); | |
return texel; | |
} | |
f16vec4 testTextureProjGradoffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureProjGradOffset(s1D, c2, dPdxy1, dPdxy1, offset1); | |
texel += textureProjGradOffset(s1D, f16c2, f16dPdxy1, f16dPdxy1, offset1); | |
texel += textureProjGradOffset(s1D, c4, dPdxy1, dPdxy1, offset1); | |
texel += textureProjGradOffset(s1D, f16c4, f16dPdxy1, f16dPdxy1, offset1); | |
texel += textureProjGradOffset(s2D, c3, dPdxy2, dPdxy2, offset2); | |
texel += textureProjGradOffset(s2D, f16c3, f16dPdxy2, f16dPdxy2, offset2); | |
texel += textureProjGradOffset(s2D, c4, dPdxy2, dPdxy2, offset2); | |
texel += textureProjGradOffset(s2D, f16c4, f16dPdxy2, f16dPdxy2, offset2); | |
texel += textureProjGradOffset(s2DRect, c3, dPdxy2, dPdxy2, offset2); | |
texel += textureProjGradOffset(s2DRect, f16c3, f16dPdxy2, f16dPdxy2, offset2); | |
texel += textureProjGradOffset(s2DRect, c4, dPdxy2, dPdxy2, offset2); | |
texel += textureProjGradOffset(s2DRect, f16c4, f16dPdxy2, f16dPdxy2, offset2); | |
texel.x += textureProjGradOffset(s2DRectShadow, c4, dPdxy2, dPdxy2, offset2); | |
texel.x += textureProjGradOffset(s2DRectShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2); | |
texel += textureProjGradOffset(s3D, c4, dPdxy3, dPdxy3, offset3); | |
texel += textureProjGradOffset(s3D, f16c4, f16dPdxy3, f16dPdxy3, offset3); | |
texel.x += textureProjGradOffset(s1DShadow, c4, dPdxy1, dPdxy1, offset1); | |
texel.x += textureProjGradOffset(s1DShadow, f16c3, compare, f16dPdxy1, f16dPdxy1, offset1); | |
texel.x += textureProjGradOffset(s2DShadow, c4, dPdxy2, dPdxy2, offset2); | |
texel.x += textureProjGradOffset(s2DShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2); | |
return texel; | |
} | |
f16vec4 testTextureGather() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureGather(s2D, c2, 0); | |
texel += textureGather(s2D, f16c2, 0, f16bias); | |
texel += textureGather(s2DArray, c3, 0); | |
texel += textureGather(s2DArray, f16c3, 0, f16bias); | |
texel += textureGather(sCube, c3, 0); | |
texel += textureGather(sCube, f16c3, 0, f16bias); | |
texel += textureGather(sCubeArray, c4, 0); | |
texel += textureGather(sCubeArray, f16c4, 0, f16bias); | |
texel += textureGather(s2DRect, c2, 0); | |
texel += textureGather(s2DRect, f16c2, 0); | |
texel += textureGather(s2DShadow, c2, compare); | |
texel += textureGather(s2DShadow, f16c2, compare); | |
texel += textureGather(s2DArrayShadow, c3, compare); | |
texel += textureGather(s2DArrayShadow, f16c3, compare); | |
texel += textureGather(sCubeShadow, c3, compare); | |
texel += textureGather(sCubeShadow, f16c3, compare); | |
texel += textureGather(sCubeArrayShadow, c4, compare); | |
texel += textureGather(sCubeArrayShadow, f16c4, compare); | |
texel += textureGather(s2DRectShadow, c2, compare); | |
texel += textureGather(s2DRectShadow, f16c2, compare); | |
return texel; | |
} | |
f16vec4 testTextureGatherOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureGatherOffset(s2D, c2, offset2, 0); | |
texel += textureGatherOffset(s2D, f16c2, offset2, 0, f16bias); | |
texel += textureGatherOffset(s2DArray, c3, offset2, 0); | |
texel += textureGatherOffset(s2DArray, f16c3, offset2, 0, f16bias); | |
texel += textureGatherOffset(s2DRect, c2, offset2, 0); | |
texel += textureGatherOffset(s2DRect, f16c2, offset2, 0); | |
texel += textureGatherOffset(s2DShadow, c2, compare, offset2); | |
texel += textureGatherOffset(s2DShadow, f16c2, compare, offset2); | |
texel += textureGatherOffset(s2DArrayShadow, c3, compare, offset2); | |
texel += textureGatherOffset(s2DArrayShadow, f16c3, compare, offset2); | |
texel += textureGatherOffset(s2DRectShadow, c2, compare, offset2); | |
texel += textureGatherOffset(s2DRectShadow, f16c2, compare, offset2); | |
return texel; | |
} | |
f16vec4 testTextureGatherOffsets() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureGatherOffsets(s2D, c2, offsets, 0); | |
texel += textureGatherOffsets(s2D, f16c2, offsets, 0, f16bias); | |
texel += textureGatherOffsets(s2DArray, c3, offsets, 0); | |
texel += textureGatherOffsets(s2DArray, f16c3, offsets, 0, f16bias); | |
texel += textureGatherOffsets(s2DRect, c2, offsets, 0); | |
texel += textureGatherOffsets(s2DRect, f16c2, offsets, 0); | |
texel += textureGatherOffsets(s2DShadow, c2, compare, offsets); | |
texel += textureGatherOffsets(s2DShadow, f16c2, compare, offsets); | |
texel += textureGatherOffsets(s2DArrayShadow, c3, compare, offsets); | |
texel += textureGatherOffsets(s2DArrayShadow, f16c3, compare, offsets); | |
texel += textureGatherOffsets(s2DRectShadow, c2, compare, offsets); | |
texel += textureGatherOffsets(s2DRectShadow, f16c2, compare, offsets); | |
return texel; | |
} | |
f16vec4 testTextureGatherLod() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureGatherLodAMD(s2D, c2, lod, 0); | |
texel += textureGatherLodAMD(s2D, f16c2, f16lod, 0); | |
texel += textureGatherLodAMD(s2DArray, c3, lod, 0); | |
texel += textureGatherLodAMD(s2DArray, f16c3, f16lod, 0); | |
texel += textureGatherLodAMD(sCube, c3, lod, 0); | |
texel += textureGatherLodAMD(sCube, f16c3, f16lod, 0); | |
texel += textureGatherLodAMD(sCubeArray, c4, lod, 0); | |
texel += textureGatherLodAMD(sCubeArray, f16c4, f16lod, 0); | |
return texel; | |
} | |
f16vec4 testTextureGatherLodOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureGatherLodOffsetAMD(s2D, c2, lod, offset2, 0); | |
texel += textureGatherLodOffsetAMD(s2D, f16c2, f16lod, offset2, 0); | |
texel += textureGatherLodOffsetAMD(s2DArray, c3, lod, offset2, 0); | |
texel += textureGatherLodOffsetAMD(s2DArray, f16c3, f16lod, offset2, 0); | |
return texel; | |
} | |
f16vec4 testTextureGatherLodOffsets() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureGatherLodOffsetsAMD(s2D, c2, lod, offsets, 0); | |
texel += textureGatherLodOffsetsAMD(s2D, f16c2, f16lod, offsets, 0); | |
texel += textureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, 0); | |
texel += textureGatherLodOffsetsAMD(s2DArray, f16c3, f16lod, offsets, 0); | |
return texel; | |
} | |
ivec4 testTextureSize() | |
{ | |
ivec4 size = ivec4(0); | |
size.x += textureSize(s1D, int(lod)); | |
size.xy += textureSize(s2D, int(lod)); | |
size.xyz += textureSize(s3D, int(lod)); | |
size.xy += textureSize(sCube, int(lod)); | |
size.x += textureSize(s1DShadow, int(lod)); | |
size.xy += textureSize(s2DShadow, int(lod)); | |
size.xy += textureSize(sCubeShadow, int(lod)); | |
size.xyz += textureSize(sCubeArray, int(lod)); | |
size.xyz += textureSize(sCubeArrayShadow, int(lod)); | |
size.xy += textureSize(s2DRect); | |
size.xy += textureSize(s2DRectShadow); | |
size.xy += textureSize(s1DArray, int(lod)); | |
size.xyz += textureSize(s2DArray, int(lod)); | |
size.xy += textureSize(s1DArrayShadow, int(lod)); | |
size.xyz += textureSize(s2DArrayShadow, int(lod)); | |
size.x += textureSize(sBuffer); | |
size.xy += textureSize(s2DMS); | |
size.xyz += textureSize(s2DMSArray); | |
return size; | |
} | |
vec2 testTextureQueryLod() | |
{ | |
vec2 lod = vec2(0.0); | |
lod += textureQueryLod(s1D, c1); | |
lod += textureQueryLod(s1D, f16c1); | |
lod += textureQueryLod(s2D, c2); | |
lod += textureQueryLod(s2D, f16c2); | |
lod += textureQueryLod(s3D, c3); | |
lod += textureQueryLod(s3D, f16c3); | |
lod += textureQueryLod(sCube, c3); | |
lod += textureQueryLod(sCube, f16c3); | |
lod += textureQueryLod(s1DArray, c1); | |
lod += textureQueryLod(s1DArray, f16c1); | |
lod += textureQueryLod(s2DArray, c2); | |
lod += textureQueryLod(s2DArray, f16c2); | |
lod += textureQueryLod(sCubeArray, c3); | |
lod += textureQueryLod(sCubeArray, f16c3); | |
lod += textureQueryLod(s1DShadow, c1); | |
lod += textureQueryLod(s1DShadow, f16c1); | |
lod += textureQueryLod(s2DShadow, c2); | |
lod += textureQueryLod(s2DShadow, f16c2); | |
lod += textureQueryLod(sCubeArrayShadow, c3); | |
lod += textureQueryLod(sCubeArrayShadow, f16c3); | |
lod += textureQueryLod(s1DArrayShadow, c1); | |
lod += textureQueryLod(s1DArrayShadow, f16c1); | |
lod += textureQueryLod(s2DArrayShadow, c2); | |
lod += textureQueryLod(s2DArrayShadow, f16c2); | |
lod += textureQueryLod(sCubeArrayShadow, c3); | |
lod += textureQueryLod(sCubeArrayShadow, f16c3); | |
return lod; | |
} | |
int testTextureQueryLevels() | |
{ | |
int levels = 0; | |
levels += textureQueryLevels(s1D); | |
levels += textureQueryLevels(s2D); | |
levels += textureQueryLevels(s3D); | |
levels += textureQueryLevels(sCube); | |
levels += textureQueryLevels(s1DShadow); | |
levels += textureQueryLevels(s2DShadow); | |
levels += textureQueryLevels(sCubeShadow); | |
levels += textureQueryLevels(sCubeArray); | |
levels += textureQueryLevels(sCubeArrayShadow); | |
levels += textureQueryLevels(s1DArray); | |
levels += textureQueryLevels(s2DArray); | |
levels += textureQueryLevels(s1DArrayShadow); | |
levels += textureQueryLevels(s2DArrayShadow); | |
return levels; | |
} | |
int testTextureSamples() | |
{ | |
int samples = 0; | |
samples += textureSamples(s2DMS); | |
samples += textureSamples(s2DMSArray); | |
return samples; | |
} | |
f16vec4 testImageLoad() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += imageLoad(i1D, int(c1)); | |
texel += imageLoad(i2D, ivec2(c2)); | |
texel += imageLoad(i3D, ivec3(c3)); | |
texel += imageLoad(i2DRect, ivec2(c2)); | |
texel += imageLoad(iCube, ivec3(c3)); | |
texel += imageLoad(iBuffer, int(c1)); | |
texel += imageLoad(i1DArray, ivec2(c2)); | |
texel += imageLoad(i2DArray, ivec3(c3)); | |
texel += imageLoad(iCubeArray, ivec3(c3)); | |
texel += imageLoad(i2DMS, ivec2(c2), 1); | |
texel += imageLoad(i2DMSArray, ivec3(c3), 1); | |
return texel; | |
} | |
void testImageStore(f16vec4 data) | |
{ | |
imageStore(i1D, int(c1), data); | |
imageStore(i2D, ivec2(c2), data); | |
imageStore(i3D, ivec3(c3), data); | |
imageStore(i2DRect, ivec2(c2), data); | |
imageStore(iCube, ivec3(c3), data); | |
imageStore(iBuffer, int(c1), data); | |
imageStore(i1DArray, ivec2(c2), data); | |
imageStore(i2DArray, ivec3(c3), data); | |
imageStore(iCubeArray, ivec3(c3), data); | |
imageStore(i2DMS, ivec2(c2), 1, data); | |
imageStore(i2DMSArray, ivec3(c3), 1, data); | |
} | |
f16vec4 testSparseTexture() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureARB(s2D, c2, texel); | |
sparseTextureARB(s2D, f16c2, texel, f16bias); | |
sparseTextureARB(s3D, c3, texel); | |
sparseTextureARB(s3D, f16c3, texel, f16bias); | |
sparseTextureARB(sCube, c3, texel); | |
sparseTextureARB(sCube, f16c3, texel, f16bias); | |
sparseTextureARB(s2DShadow, c3, texel.x); | |
sparseTextureARB(s2DShadow, f16c2, compare, texel.x, f16bias); | |
sparseTextureARB(sCubeShadow, c4, texel.x); | |
sparseTextureARB(sCubeShadow, f16c3, compare, texel.x, f16bias); | |
sparseTextureARB(s2DArray, c3, texel); | |
sparseTextureARB(s2DArray, f16c3, texel, f16bias); | |
sparseTextureARB(sCubeArray, c4, texel); | |
sparseTextureARB(sCubeArray, f16c4, texel, f16bias); | |
sparseTextureARB(s2DArrayShadow, c4, texel.x); | |
sparseTextureARB(s2DArrayShadow, f16c3, compare, texel.x); | |
sparseTextureARB(s2DRect, c2, texel); | |
sparseTextureARB(s2DRect, f16c2, texel); | |
sparseTextureARB(s2DRectShadow, c3, texel.x); | |
sparseTextureARB(s2DRectShadow, f16c2, compare, texel.x); | |
sparseTextureARB(sCubeArrayShadow, c4, compare, texel.x); | |
sparseTextureARB(sCubeArrayShadow, f16c4, compare, texel.x); | |
return texel; | |
} | |
f16vec4 testSparseTextureLod() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureLodARB(s2D, c2, lod, texel); | |
sparseTextureLodARB(s2D, f16c2, f16lod, texel); | |
sparseTextureLodARB(s3D, c3, lod, texel); | |
sparseTextureLodARB(s3D, f16c3, f16lod, texel); | |
sparseTextureLodARB(sCube, c3, lod, texel); | |
sparseTextureLodARB(sCube, f16c3, f16lod, texel); | |
sparseTextureLodARB(s2DShadow, c3, lod, texel.x); | |
sparseTextureLodARB(s2DShadow, f16c2, compare, f16lod, texel.x); | |
sparseTextureLodARB(s2DArray, c3, lod, texel); | |
sparseTextureLodARB(s2DArray, f16c3, f16lod, texel); | |
sparseTextureLodARB(sCubeArray, c4, lod, texel); | |
sparseTextureLodARB(sCubeArray, f16c4, f16lod, texel); | |
return texel; | |
} | |
f16vec4 testSparseTextureOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureOffsetARB(s2D, c2, offset2, texel); | |
sparseTextureOffsetARB(s2D, f16c2, offset2, texel, f16bias); | |
sparseTextureOffsetARB(s3D, c3, offset3, texel); | |
sparseTextureOffsetARB(s3D, f16c3, offset3, texel, f16bias); | |
sparseTextureOffsetARB(s2DRect, c2, offset2, texel); | |
sparseTextureOffsetARB(s2DRect, f16c2, offset2, texel); | |
sparseTextureOffsetARB(s2DRectShadow, c3, offset2, texel.x); | |
sparseTextureOffsetARB(s2DRectShadow, f16c2, compare, offset2, texel.x); | |
sparseTextureOffsetARB(s2DShadow, c3, offset2, texel.x); | |
sparseTextureOffsetARB(s2DShadow, f16c2, compare, offset2, texel.x, f16bias); | |
sparseTextureOffsetARB(s2DArray, c3, offset2, texel); | |
sparseTextureOffsetARB(s2DArray, f16c3, offset2, texel, f16bias); | |
sparseTextureOffsetARB(s2DArrayShadow, c4, offset2, texel.x); | |
sparseTextureOffsetARB(s2DArrayShadow, f16c3, compare, offset2, texel.x); | |
return texel; | |
} | |
f16vec4 testSparseTextureLodOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureLodOffsetARB(s2D, c2, lod, offset2, texel); | |
sparseTextureLodOffsetARB(s2D, f16c2, f16lod, offset2, texel); | |
sparseTextureLodOffsetARB(s3D, c3, lod, offset3, texel); | |
sparseTextureLodOffsetARB(s3D, f16c3, f16lod, offset3, texel); | |
sparseTextureLodOffsetARB(s2DShadow, c3, lod, offset2, texel.x); | |
sparseTextureLodOffsetARB(s2DShadow, f16c2, compare, f16lod, offset2, texel.x); | |
sparseTextureLodOffsetARB(s2DArray, c3, lod, offset2, texel); | |
sparseTextureLodOffsetARB(s2DArray, f16c3, f16lod, offset2, texel); | |
return texel; | |
} | |
f16vec4 testSparseTextureGrad() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureGradARB(s2D, c2, dPdxy2, dPdxy2, texel); | |
sparseTextureGradARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, texel); | |
sparseTextureGradARB(s3D, c3, dPdxy3, dPdxy3, texel); | |
sparseTextureGradARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, texel); | |
sparseTextureGradARB(sCube, c3, dPdxy3, dPdxy3, texel); | |
sparseTextureGradARB(sCube, f16c3, f16dPdxy3, f16dPdxy3, texel); | |
sparseTextureGradARB(s2DRect, c2, dPdxy2, dPdxy2, texel); | |
sparseTextureGradARB(s2DRect, f16c2, f16dPdxy2, f16dPdxy2, texel); | |
sparseTextureGradARB(s2DRectShadow, c3, dPdxy2, dPdxy2, texel.x); | |
sparseTextureGradARB(s2DRectShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, texel.x); | |
sparseTextureGradARB(s2DShadow, c3, dPdxy2, dPdxy2, texel.x); | |
sparseTextureGradARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, texel.x); | |
sparseTextureGradARB(sCubeShadow, c4, dPdxy3, dPdxy3, texel.x); | |
sparseTextureGradARB(sCubeShadow, f16c3, compare, f16dPdxy3, f16dPdxy3, texel.x); | |
sparseTextureGradARB(s2DArray, c3, dPdxy2, dPdxy2, texel); | |
sparseTextureGradARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, texel); | |
sparseTextureGradARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, texel.x); | |
sparseTextureGradARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, texel.x); | |
sparseTextureGradARB(sCubeArray, c4, dPdxy3, dPdxy3, texel); | |
sparseTextureGradARB(sCubeArray, f16c4, f16dPdxy3, f16dPdxy3, texel); | |
return texel; | |
} | |
f16vec4 testSparseTextureGradOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureGradOffsetARB(s2D, c2, dPdxy2, dPdxy2, offset2, texel); | |
sparseTextureGradOffsetARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, offset2, texel); | |
sparseTextureGradOffsetARB(s3D, c3, dPdxy3, dPdxy3, offset3, texel); | |
sparseTextureGradOffsetARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, offset3, texel); | |
sparseTextureGradOffsetARB(s2DRect, c2, dPdxy2, dPdxy2, offset2, texel); | |
sparseTextureGradOffsetARB(s2DRect, f16c2, f16dPdxy2, f16dPdxy2, offset2, texel); | |
sparseTextureGradOffsetARB(s2DRectShadow, c3, dPdxy2, dPdxy2, offset2, texel.x); | |
sparseTextureGradOffsetARB(s2DRectShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2, texel.x); | |
sparseTextureGradOffsetARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, texel.x); | |
sparseTextureGradOffsetARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2, texel.x); | |
sparseTextureGradOffsetARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, texel); | |
sparseTextureGradOffsetARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, offset2, texel); | |
sparseTextureGradOffsetARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, texel.x); | |
sparseTextureGradOffsetARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2, texel.x); | |
return texel; | |
} | |
f16vec4 testSparseTexelFetch() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTexelFetchARB(s2D, ivec2(c2), int(lod), texel); | |
sparseTexelFetchARB(s3D, ivec3(c3), int(lod), texel); | |
sparseTexelFetchARB(s2DRect, ivec2(c2), texel); | |
sparseTexelFetchARB(s2DArray, ivec3(c3), int(lod), texel); | |
sparseTexelFetchARB(s2DMS, ivec2(c2), 1, texel); | |
sparseTexelFetchARB(s2DMSArray, ivec3(c3), 2, texel); | |
return texel; | |
} | |
f16vec4 testSparseTexelFetchOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTexelFetchOffsetARB(s2D, ivec2(c2), int(lod), offset2, texel); | |
sparseTexelFetchOffsetARB(s3D, ivec3(c3), int(lod), offset3, texel); | |
sparseTexelFetchOffsetARB(s2DRect, ivec2(c2), offset2, texel); | |
sparseTexelFetchOffsetARB(s2DArray, ivec3(c3), int(lod), offset2, texel); | |
return texel; | |
} | |
f16vec4 testSparseTextureGather() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureGatherARB(s2D, c2, texel, 0); | |
sparseTextureGatherARB(s2D, f16c2, texel, 0, f16bias); | |
sparseTextureGatherARB(s2DArray, c3, texel, 0); | |
sparseTextureGatherARB(s2DArray, f16c3, texel, 0, f16bias); | |
sparseTextureGatherARB(sCube, c3, texel, 0); | |
sparseTextureGatherARB(sCube, f16c3, texel, 0, f16bias); | |
sparseTextureGatherARB(sCubeArray, c4, texel, 0); | |
sparseTextureGatherARB(sCubeArray, f16c4, texel, 0, f16bias); | |
sparseTextureGatherARB(s2DRect, c2, texel, 0); | |
sparseTextureGatherARB(s2DRect, f16c2, texel, 0); | |
sparseTextureGatherARB(s2DShadow, c2, compare, texel); | |
sparseTextureGatherARB(s2DShadow, f16c2, compare, texel); | |
sparseTextureGatherARB(s2DArrayShadow, c3, compare, texel); | |
sparseTextureGatherARB(s2DArrayShadow, f16c3, compare, texel); | |
sparseTextureGatherARB(sCubeShadow, c3, compare, texel); | |
sparseTextureGatherARB(sCubeShadow, f16c3, compare, texel); | |
sparseTextureGatherARB(sCubeArrayShadow, c4, compare, texel); | |
sparseTextureGatherARB(sCubeArrayShadow, f16c4, compare, texel); | |
sparseTextureGatherARB(s2DRectShadow, c2, compare, texel); | |
sparseTextureGatherARB(s2DRectShadow, f16c2, compare, texel); | |
return texel; | |
} | |
f16vec4 testSparseTextureGatherOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureGatherOffsetARB(s2D, c2, offset2, texel, 0); | |
sparseTextureGatherOffsetARB(s2D, f16c2, offset2, texel, 0, f16bias); | |
sparseTextureGatherOffsetARB(s2DArray, c3, offset2, texel, 0); | |
sparseTextureGatherOffsetARB(s2DArray, f16c3, offset2, texel, 0, f16bias); | |
sparseTextureGatherOffsetARB(s2DRect, c2, offset2, texel, 0); | |
sparseTextureGatherOffsetARB(s2DRect, f16c2, offset2, texel, 0); | |
sparseTextureGatherOffsetARB(s2DShadow, c2, compare, offset2, texel); | |
sparseTextureGatherOffsetARB(s2DShadow, f16c2, compare, offset2, texel); | |
sparseTextureGatherOffsetARB(s2DArrayShadow, c3, compare, offset2, texel); | |
sparseTextureGatherOffsetARB(s2DArrayShadow, f16c3, compare, offset2, texel); | |
sparseTextureGatherOffsetARB(s2DRectShadow, c2, compare, offset2, texel); | |
sparseTextureGatherOffsetARB(s2DRectShadow, f16c2, compare, offset2, texel); | |
return texel; | |
} | |
f16vec4 testSparseTextureGatherOffsets() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); | |
sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel, 0); | |
sparseTextureGatherOffsetsARB(s2D, f16c2, constOffsets, texel, 0, f16bias); | |
sparseTextureGatherOffsetsARB(s2DArray, c3, constOffsets, texel, 0); | |
sparseTextureGatherOffsetsARB(s2DArray, f16c3, constOffsets, texel, 0, f16bias); | |
sparseTextureGatherOffsetsARB(s2DRect, c2, constOffsets, texel, 0); | |
sparseTextureGatherOffsetsARB(s2DRect, f16c2, constOffsets, texel, 0); | |
sparseTextureGatherOffsetsARB(s2DShadow, c2, compare, constOffsets, texel); | |
sparseTextureGatherOffsetsARB(s2DShadow, f16c2, compare, constOffsets, texel); | |
sparseTextureGatherOffsetsARB(s2DArrayShadow, c3, compare, constOffsets, texel); | |
sparseTextureGatherOffsetsARB(s2DArrayShadow, f16c3, compare, constOffsets, texel); | |
sparseTextureGatherOffsetsARB(s2DRectShadow, c2, compare, constOffsets, texel); | |
sparseTextureGatherOffsetsARB(s2DRectShadow, f16c2, compare, constOffsets, texel); | |
return texel; | |
} | |
f16vec4 testSparseTextureGatherLod() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureGatherLodAMD(s2D, c2, lod, texel, 0); | |
sparseTextureGatherLodAMD(s2D, f16c2, f16lod, texel, 0); | |
sparseTextureGatherLodAMD(s2DArray, c3, lod, texel, 0); | |
sparseTextureGatherLodAMD(s2DArray, f16c3, f16lod, texel, 0); | |
sparseTextureGatherLodAMD(sCube, c3, lod, texel, 0); | |
sparseTextureGatherLodAMD(sCube, f16c3, f16lod, texel, 0); | |
sparseTextureGatherLodAMD(sCubeArray, c4, lod, texel, 0); | |
sparseTextureGatherLodAMD(sCubeArray, f16c4, f16lod, texel, 0); | |
return texel; | |
} | |
f16vec4 testSparseTextureGatherLodOffset() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureGatherLodOffsetAMD(s2D, c2, lod, offset2, texel, 0); | |
sparseTextureGatherLodOffsetAMD(s2D, f16c2, f16lod, offset2, texel, 0); | |
sparseTextureGatherLodOffsetAMD(s2DArray, c3, lod, offset2, texel, 0); | |
sparseTextureGatherLodOffsetAMD(s2DArray, f16c3, f16lod, offset2, texel, 0); | |
return texel; | |
} | |
f16vec4 testSparseTextureGatherLodOffsets() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureGatherLodOffsetsAMD(s2D, c2, lod, offsets, texel, 0); | |
sparseTextureGatherLodOffsetsAMD(s2D, f16c2, f16lod, offsets, texel, 0); | |
sparseTextureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, texel, 0); | |
sparseTextureGatherLodOffsetsAMD(s2DArray, f16c3, f16lod, offsets, texel, 0); | |
return texel; | |
} | |
f16vec4 testSparseImageLoad() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseImageLoadARB(i2D, ivec2(c2), texel); | |
sparseImageLoadARB(i3D, ivec3(c3), texel); | |
sparseImageLoadARB(i2DRect, ivec2(c2), texel); | |
sparseImageLoadARB(iCube, ivec3(c3), texel); | |
sparseImageLoadARB(i2DArray, ivec3(c3), texel); | |
sparseImageLoadARB(iCubeArray, ivec3(c3), texel); | |
sparseImageLoadARB(i2DMS, ivec2(c2), 1, texel); | |
sparseImageLoadARB(i2DMSArray, ivec3(c3), 2, texel); | |
return texel; | |
} | |
f16vec4 testSparseTextureClamp() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureClampARB(s2D, c2, lodClamp, texel); | |
sparseTextureClampARB(s2D, f16c2, f16lodClamp, texel, f16bias); | |
sparseTextureClampARB(s3D, c3, lodClamp, texel); | |
sparseTextureClampARB(s3D, f16c3, f16lodClamp, texel, f16bias); | |
sparseTextureClampARB(sCube, c3, lodClamp, texel); | |
sparseTextureClampARB(sCube, f16c3, f16lodClamp, texel, f16bias); | |
sparseTextureClampARB(s2DShadow, c3, lodClamp, texel.x); | |
sparseTextureClampARB(s2DShadow, f16c2, compare, f16lodClamp, texel.x, f16bias); | |
sparseTextureClampARB(sCubeShadow, c4, lodClamp, texel.x); | |
sparseTextureClampARB(sCubeShadow, f16c3, compare, f16lodClamp, texel.x, f16bias); | |
sparseTextureClampARB(s2DArray, c3, lodClamp, texel); | |
sparseTextureClampARB(s2DArray, f16c3, f16lodClamp, texel, f16bias); | |
sparseTextureClampARB(sCubeArray, c4, lodClamp, texel); | |
sparseTextureClampARB(sCubeArray, f16c4, f16lodClamp, texel, f16bias); | |
sparseTextureClampARB(s2DArrayShadow, c4, lodClamp, texel.x); | |
sparseTextureClampARB(s2DArrayShadow, f16c3, compare, f16lodClamp, texel.x); | |
sparseTextureClampARB(sCubeArrayShadow, c4, compare, lodClamp, texel.x); | |
sparseTextureClampARB(sCubeArrayShadow, f16c4, compare, f16lodClamp, texel.x); | |
return texel; | |
} | |
f16vec4 testTextureClamp() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureClampARB(s1D, c1, lodClamp); | |
texel += textureClampARB(s1D, f16c1, f16lodClamp, f16bias); | |
texel += textureClampARB(s2D, c2, lodClamp); | |
texel += textureClampARB(s2D, f16c2, f16lodClamp, f16bias); | |
texel += textureClampARB(s3D, c3, lodClamp); | |
texel += textureClampARB(s3D, f16c3, f16lodClamp, f16bias); | |
texel += textureClampARB(sCube, c3, lodClamp); | |
texel += textureClampARB(sCube, f16c3, f16lodClamp, f16bias); | |
texel.x += textureClampARB(s1DShadow, c3, lodClamp); | |
texel.x += textureClampARB(s1DShadow, f16c2, compare, f16lodClamp, f16bias); | |
texel.x += textureClampARB(s2DShadow, c3, lodClamp); | |
texel.x += textureClampARB(s2DShadow, f16c2, compare, f16lodClamp, f16bias); | |
texel.x += textureClampARB(sCubeShadow, c4, lodClamp); | |
texel.x += textureClampARB(sCubeShadow, f16c3, compare, f16lodClamp, f16bias); | |
texel += textureClampARB(s1DArray, c2, lodClamp); | |
texel += textureClampARB(s1DArray, f16c2, f16lodClamp, f16bias); | |
texel += textureClampARB(s2DArray, c3, lodClamp); | |
texel += textureClampARB(s2DArray, f16c3, f16lodClamp, f16bias); | |
texel += textureClampARB(sCubeArray, c4, lodClamp); | |
texel += textureClampARB(sCubeArray, f16c4, f16lodClamp, f16bias); | |
texel.x += textureClampARB(s1DArrayShadow, c3, lodClamp); | |
texel.x += textureClampARB(s1DArrayShadow, f16c2, compare, f16lodClamp, f16bias); | |
texel.x += textureClampARB(s2DArrayShadow, c4, lodClamp); | |
texel.x += textureClampARB(s2DArrayShadow, f16c3, compare, f16lodClamp); | |
texel.x += textureClampARB(sCubeArrayShadow, c4, compare, lodClamp); | |
texel.x += textureClampARB(sCubeArrayShadow, f16c4, compare, f16lodClamp); | |
return texel; | |
} | |
f16vec4 testSparseTextureOffsetClamp() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureOffsetClampARB(s2D, c2, offset2, lodClamp, texel); | |
sparseTextureOffsetClampARB(s2D, f16c2, offset2, f16lodClamp, texel, f16bias); | |
sparseTextureOffsetClampARB(s3D, c3, offset3, lodClamp, texel); | |
sparseTextureOffsetClampARB(s3D, f16c3, offset3, f16lodClamp, texel, f16bias); | |
sparseTextureOffsetClampARB(s2DShadow, c3, offset2, lodClamp, texel.x); | |
sparseTextureOffsetClampARB(s2DShadow, f16c2, compare, offset2, f16lodClamp, texel.x, f16bias); | |
sparseTextureOffsetClampARB(s2DArray, c3, offset2, lodClamp, texel); | |
sparseTextureOffsetClampARB(s2DArray, f16c3, offset2, f16lodClamp, texel, f16bias); | |
sparseTextureOffsetClampARB(s2DArrayShadow, c4, offset2, lodClamp, texel.x); | |
sparseTextureOffsetClampARB(s2DArrayShadow, f16c3, compare, offset2, f16lodClamp, texel.x); | |
return texel; | |
} | |
f16vec4 testTextureOffsetClamp() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureOffsetClampARB(s1D, c1, offset1, lodClamp); | |
texel += textureOffsetClampARB(s1D, f16c1, offset1, f16lodClamp, f16bias); | |
texel += textureOffsetClampARB(s2D, c2, offset2, lodClamp); | |
texel += textureOffsetClampARB(s2D, f16c2, offset2, f16lodClamp, f16bias); | |
texel += textureOffsetClampARB(s3D, c3, offset3, lodClamp); | |
texel += textureOffsetClampARB(s3D, f16c3, offset3, f16lodClamp, f16bias); | |
texel.x += textureOffsetClampARB(s1DShadow, c3, offset1, lodClamp); | |
texel.x += textureOffsetClampARB(s1DShadow, f16c2, compare, offset1, f16lodClamp, f16bias); | |
texel.x += textureOffsetClampARB(s2DShadow, c3, offset2, lodClamp); | |
texel.x += textureOffsetClampARB(s2DShadow, f16c2, compare, offset2, f16lodClamp, f16bias); | |
texel += textureOffsetClampARB(s1DArray, c2, offset1, lodClamp); | |
texel += textureOffsetClampARB(s1DArray, f16c2, offset1, f16lodClamp, f16bias); | |
texel += textureOffsetClampARB(s2DArray, c3, offset2, lodClamp); | |
texel += textureOffsetClampARB(s2DArray, f16c3, offset2, f16lodClamp, f16bias); | |
texel.x += textureOffsetClampARB(s1DArrayShadow, c3, offset1, lodClamp); | |
texel.x += textureOffsetClampARB(s1DArrayShadow, f16c2, compare, offset1, f16lodClamp, f16bias); | |
texel.x += textureOffsetClampARB(s2DArrayShadow, c4, offset2, lodClamp); | |
texel.x += textureOffsetClampARB(s2DArrayShadow, f16c3, compare, offset2, f16lodClamp); | |
return texel; | |
} | |
f16vec4 testSparseTextureGradClamp() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureGradClampARB(s2D, c2, dPdxy2, dPdxy2, lodClamp, texel); | |
sparseTextureGradClampARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, f16lodClamp, texel); | |
sparseTextureGradClampARB(s3D, c3, dPdxy3, dPdxy3, lodClamp, texel); | |
sparseTextureGradClampARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, f16lodClamp, texel); | |
sparseTextureGradClampARB(sCube, c3, dPdxy3, dPdxy3, lodClamp, texel); | |
sparseTextureGradClampARB(sCube, f16c3, f16dPdxy3, f16dPdxy3, f16lodClamp, texel); | |
sparseTextureGradClampARB(s2DShadow, c3, dPdxy2, dPdxy2, lodClamp, texel.x); | |
sparseTextureGradClampARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, f16lodClamp, texel.x); | |
sparseTextureGradClampARB(sCubeShadow, c4, dPdxy3, dPdxy3, lodClamp, texel.x); | |
sparseTextureGradClampARB(sCubeShadow, f16c3, compare, f16dPdxy3, f16dPdxy3, f16lodClamp, texel.x); | |
sparseTextureGradClampARB(s2DArray, c3, dPdxy2, dPdxy2, lodClamp, texel); | |
sparseTextureGradClampARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, f16lodClamp, texel); | |
sparseTextureGradClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, lodClamp, texel.x); | |
sparseTextureGradClampARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, f16lodClamp, texel.x); | |
sparseTextureGradClampARB(sCubeArray, c4, dPdxy3, dPdxy3, lodClamp, texel); | |
sparseTextureGradClampARB(sCubeArray, f16c4, f16dPdxy3, f16dPdxy3, f16lodClamp, texel); | |
return texel; | |
} | |
f16vec4 testTextureGradClamp() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureGradClampARB(s1D, c1, dPdxy1, dPdxy1, lodClamp); | |
texel += textureGradClampARB(s1D, f16c1, f16dPdxy1, f16dPdxy1, f16lodClamp); | |
texel += textureGradClampARB(s2D, c2, dPdxy2, dPdxy2, lodClamp); | |
texel += textureGradClampARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, f16lodClamp); | |
texel += textureGradClampARB(s3D, c3, dPdxy3, dPdxy3, lodClamp); | |
texel += textureGradClampARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, f16lodClamp); | |
texel += textureGradClampARB(sCube, c3, dPdxy3, dPdxy3, lodClamp); | |
texel += textureGradClampARB(sCube, f16c3, f16dPdxy3, f16dPdxy3, f16lodClamp); | |
texel.x += textureGradClampARB(s1DShadow, c3, dPdxy1, dPdxy1, lodClamp); | |
texel.x += textureGradClampARB(s1DShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, f16lodClamp); | |
texel.x += textureGradClampARB(s2DShadow, c3, dPdxy2, dPdxy2, lodClamp); | |
texel.x += textureGradClampARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, f16lodClamp); | |
texel.x += textureGradClampARB(sCubeShadow, c4, dPdxy3, dPdxy3, lodClamp); | |
texel.x += textureGradClampARB(sCubeShadow, f16c3, compare, f16dPdxy3, f16dPdxy3, f16lodClamp); | |
texel += textureGradClampARB(s1DArray, c2, dPdxy1, dPdxy1, lodClamp); | |
texel += textureGradClampARB(s1DArray, f16c2, f16dPdxy1, f16dPdxy1, f16lodClamp); | |
texel += textureGradClampARB(s2DArray, c3, dPdxy2, dPdxy2, lodClamp); | |
texel += textureGradClampARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, f16lodClamp); | |
texel.x += textureGradClampARB(s1DArrayShadow, c3, dPdxy1, dPdxy1, lodClamp); | |
texel.x += textureGradClampARB(s1DArrayShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, f16lodClamp); | |
texel.x += textureGradClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, lodClamp); | |
texel.x += textureGradClampARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, f16lodClamp); | |
texel += textureGradClampARB(sCubeArray, c4, dPdxy3, dPdxy3, lodClamp); | |
texel += textureGradClampARB(sCubeArray, f16c4, f16dPdxy3, f16dPdxy3, f16lodClamp); | |
return texel; | |
} | |
f16vec4 testSparseTextureGradOffsetClamp() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
sparseTextureGradOffsetClampARB(s2D, c2, dPdxy2, dPdxy2, offset2, lodClamp, texel); | |
sparseTextureGradOffsetClampARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp, texel); | |
sparseTextureGradOffsetClampARB(s3D, c3, dPdxy3, dPdxy3, offset3, lodClamp, texel); | |
sparseTextureGradOffsetClampARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, offset3, f16lodClamp, texel); | |
sparseTextureGradOffsetClampARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, lodClamp, texel.x); | |
sparseTextureGradOffsetClampARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp, texel.x); | |
sparseTextureGradOffsetClampARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, lodClamp, texel); | |
sparseTextureGradOffsetClampARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp, texel); | |
sparseTextureGradOffsetClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, lodClamp, texel.x); | |
sparseTextureGradOffsetClampARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp, texel.x); | |
return texel; | |
} | |
f16vec4 testTextureGradOffsetClamp() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += textureGradOffsetClampARB(s1D, c1, dPdxy1, dPdxy1, offset1, lodClamp); | |
texel += textureGradOffsetClampARB(s1D, f16c1, f16dPdxy1, f16dPdxy1, offset1, f16lodClamp); | |
texel += textureGradOffsetClampARB(s2D, c2, dPdxy2, dPdxy2, offset2, lodClamp); | |
texel += textureGradOffsetClampARB(s2D, f16c2, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp); | |
texel += textureGradOffsetClampARB(s3D, c3, dPdxy3, dPdxy3, offset3, lodClamp); | |
texel += textureGradOffsetClampARB(s3D, f16c3, f16dPdxy3, f16dPdxy3, offset3, f16lodClamp); | |
texel.x += textureGradOffsetClampARB(s1DShadow, c3, dPdxy1, dPdxy1, offset1, lodClamp); | |
texel.x += textureGradOffsetClampARB(s1DShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, offset1, f16lodClamp); | |
texel.x += textureGradOffsetClampARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, lodClamp); | |
texel.x += textureGradOffsetClampARB(s2DShadow, f16c2, compare, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp); | |
texel += textureGradOffsetClampARB(s1DArray, c2, dPdxy1, dPdxy1, offset1, lodClamp); | |
texel += textureGradOffsetClampARB(s1DArray, f16c2, f16dPdxy1, f16dPdxy1, offset1, f16lodClamp); | |
texel += textureGradOffsetClampARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, lodClamp); | |
texel += textureGradOffsetClampARB(s2DArray, f16c3, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp); | |
texel.x += textureGradOffsetClampARB(s1DArrayShadow, c3, dPdxy1, dPdxy1, offset1, lodClamp); | |
texel.x += textureGradOffsetClampARB(s1DArrayShadow, f16c2, compare, f16dPdxy1, f16dPdxy1, offset1, f16lodClamp); | |
texel.x += textureGradOffsetClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, lodClamp); | |
texel.x += textureGradOffsetClampARB(s2DArrayShadow, f16c3, compare, f16dPdxy2, f16dPdxy2, offset2, f16lodClamp); | |
return texel; | |
} | |
f16vec4 testCombinedTextureSampler() | |
{ | |
f16vec4 texel = f16vec4(0.0hf); | |
texel += texture(f16sampler1D(t1D, s), c1); | |
texel += texture(f16sampler1D(t1D, s), f16c1, f16bias); | |
texel += texture(f16sampler2D(t2D, s), c2); | |
texel += texture(f16sampler2D(t2D, s), f16c2, f16bias); | |
texel += texture(f16sampler3D(t3D, s), c3); | |
texel += texture(f16sampler3D(t3D, s), f16c3, f16bias); | |
texel += texture(f16samplerCube(tCube, s), c3); | |
texel += texture(f16samplerCube(tCube, s), f16c3, f16bias); | |
texel.x += texture(f16sampler1DShadow(t1D, sShadow), c3); | |
texel.x += texture(f16sampler1DShadow(t1D, sShadow), f16c2, compare, f16bias); | |
texel.x += texture(f16sampler2DShadow(t2D, sShadow), c3); | |
texel.x += texture(f16sampler2DShadow(t2D, sShadow), f16c2, compare, f16bias); | |
texel.x += texture(f16samplerCubeShadow(tCube, sShadow), c4); | |
texel.x += texture(f16samplerCubeShadow(tCube, sShadow), f16c3, compare, f16bias); | |
texel += texture(f16sampler1DArray(t1DArray, s), c2); | |
texel += texture(f16sampler1DArray(t1DArray, s), f16c2, f16bias); | |
texel += texture(f16sampler2DArray(t2DArray, s), c3); | |
texel += texture(f16sampler2DArray(t2DArray, s), f16c3, f16bias); | |
texel += texture(f16samplerCubeArray(tCubeArray, s), c4); | |
texel += texture(f16samplerCubeArray(tCubeArray, s), f16c4, f16bias); | |
texel.x += texture(f16sampler1DArrayShadow(t1DArray, sShadow), c3); | |
texel.x += texture(f16sampler1DArrayShadow(t1DArray, sShadow), f16c2, compare, f16bias); | |
texel.x += texture(f16sampler2DArrayShadow(t2DArray, sShadow), c4); | |
texel.x += texture(f16sampler2DArrayShadow(t2DArray, sShadow), f16c3, compare); | |
texel += texture(f16sampler2DRect(t2DRect, s), c2); | |
texel += texture(f16sampler2DRect(t2DRect, s), f16c2); | |
texel.x += texture(f16sampler2DRectShadow(t2DRect, sShadow), c3); | |
texel.x += texture(f16sampler2DRectShadow(t2DRect, sShadow), f16c2, compare); | |
texel.x += texture(f16samplerCubeArrayShadow(tCubeArray, sShadow), c4, compare); | |
texel.x += texture(f16samplerCubeArrayShadow(tCubeArray, sShadow), f16c4, compare); | |
return texel; | |
} | |
f16vec4 testSubpassLoad() | |
{ | |
return subpassLoad(subpass) + subpassLoad(subpassMS, 2); | |
} | |
void main() | |
{ | |
f16vec4 result = f16vec4(0.0hf); | |
result += testTexture(); | |
result += testTextureProj(); | |
result += testTextureLod(); | |
result += testTextureOffset(); | |
result += testTextureLodOffset(); | |
result += testTextureProjLodOffset(); | |
result += testTexelFetch(); | |
result += testTexelFetchOffset(); | |
result += testTextureGrad(); | |
result += testTextureGradOffset(); | |
result += testTextureProjGrad(); | |
result += testTextureProjGradoffset(); | |
result += testTextureGather(); | |
result += testTextureGatherOffset(); | |
result += testTextureGatherOffsets(); | |
result += testTextureGatherLod(); | |
result += testTextureGatherLodOffset(); | |
result += testTextureGatherLodOffsets(); | |
result += f16vec4(testTextureSize()); | |
result.xy += f16vec2(testTextureQueryLod()); | |
result.x += float16_t(testTextureQueryLevels()); | |
result.x += float16_t(testTextureSamples()); | |
result += testImageLoad(); | |
testImageStore(result); | |
result += testSparseTexture(); | |
result += testSparseTextureLod(); | |
result += testSparseTextureOffset(); | |
result += testSparseTextureLodOffset(); | |
result += testSparseTextureGrad(); | |
result += testSparseTextureGradOffset(); | |
result += testSparseTexelFetch(); | |
result += testSparseTexelFetchOffset(); | |
result += testSparseTextureGather(); | |
result += testSparseTextureGatherOffset(); | |
result += testSparseTextureGatherOffsets(); | |
result += testSparseTextureGatherLod(); | |
result += testSparseTextureGatherLodOffset(); | |
result += testSparseTextureGatherLodOffsets(); | |
result += testSparseImageLoad(); | |
result += testSparseTextureClamp(); | |
result += testTextureClamp(); | |
result += testSparseTextureOffsetClamp(); | |
result += testTextureOffsetClamp(); | |
result += testSparseTextureGrad(); | |
result += testTextureGrad(); | |
result += testSparseTextureGradOffsetClamp(); | |
result += testTextureGradOffsetClamp(); | |
result += testCombinedTextureSampler(); | |
result += testSubpassLoad(); | |
fragColor = result; | |
} |