summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glslang/Test/spv.sparseTextureClamp.frag
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang/Test/spv.sparseTextureClamp.frag')
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.sparseTextureClamp.frag70
1 files changed, 70 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.sparseTextureClamp.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.sparseTextureClamp.frag
new file mode 100644
index 00000000000..97317938a12
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.sparseTextureClamp.frag
@@ -0,0 +1,70 @@
+#version 450
+#extension GL_ARB_sparse_texture_clamp: enable
+
+uniform sampler2D s2D;
+uniform sampler3D s3D;
+uniform sampler2DShadow s2DShadow;
+uniform samplerCubeShadow sCubeShadow;
+uniform sampler2DArrayShadow s2DArrayShadow;
+uniform sampler2DRectShadow s2DRectShadow;
+uniform samplerCubeArrayShadow sCubeArrayShadow;
+
+uniform isamplerCube isCube;
+uniform isampler2DArray is2DArray;
+
+uniform usamplerCubeArray usCubeArray;
+uniform usampler2DRect us2DRect;
+
+in vec2 c2;
+in vec3 c3;
+in vec4 c4;
+
+in float lodClamp;
+
+out vec4 outColor;
+
+void main()
+{
+ int resident = 0;
+ vec4 texel = vec4(0.0);
+ ivec4 itexel = ivec4(0);
+ uvec4 utexel = uvec4(0);
+
+ resident |= sparseTextureClampARB(s2D, c2, lodClamp, texel);
+ resident |= sparseTextureClampARB(s3D, c3, lodClamp, texel, 2.0);
+ resident |= sparseTextureClampARB(isCube, c3, lodClamp, itexel);
+ resident |= sparseTextureClampARB(s2DShadow, c3, lodClamp, texel.x);
+ resident |= sparseTextureClampARB(sCubeArrayShadow, c4, 1.0, lodClamp, texel.x);
+
+ texel += textureClampARB(s2D, c2, lodClamp);
+ texel += textureClampARB(s3D, c3, lodClamp, 2.0);
+ itexel += textureClampARB(isCube, c3, lodClamp);
+ texel.x += textureClampARB(s2DShadow, c3, lodClamp);
+ texel.x += textureClampARB(sCubeArrayShadow, c4, 1.0, lodClamp);
+
+ resident |= sparseTextureOffsetClampARB(s3D, c3, ivec3(2), lodClamp, texel, 2.0);
+ resident |= sparseTextureOffsetClampARB(us2DRect, c2, ivec2(3), lodClamp, utexel);
+ resident |= sparseTextureOffsetClampARB(s2DArrayShadow, c4, ivec2(5), lodClamp, texel.z);
+
+ texel += textureOffsetClampARB(s3D, c3, ivec3(2), lodClamp, 2.0);
+ utexel += textureOffsetClampARB(us2DRect, c2, ivec2(3), lodClamp);
+ texel.z += textureOffsetClampARB(s2DArrayShadow, c4, ivec2(5), lodClamp);
+
+ resident |= sparseTextureGradClampARB(s3D, c3, c3, c3, lodClamp, texel);
+ resident |= sparseTextureGradClampARB(sCubeShadow, c4, c3, c3, lodClamp, texel.y);
+ resident |= sparseTextureGradClampARB(usCubeArray, c4, c3, c3, lodClamp, utexel);
+
+ texel += textureGradClampARB(s3D, c3, c3, c3, lodClamp);
+ texel.y += textureGradClampARB(sCubeShadow, c4, c3, c3, lodClamp);
+ utexel += textureGradClampARB(usCubeArray, c4, c3, c3, lodClamp);
+
+ resident |= sparseTextureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp, texel);
+ resident |= sparseTextureGradOffsetClampARB(s2DRectShadow, c3, c2, c2, ivec2(6), lodClamp, texel.w);
+ resident |= sparseTextureGradOffsetClampARB(is2DArray, c3, c2, c2, ivec2(2), lodClamp, itexel);
+
+ texel += textureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp);
+ texel.w += textureGradOffsetClampARB(s2DRectShadow, c3, c2, c2, ivec2(6), lodClamp);
+ itexel += textureGradOffsetClampARB(is2DArray, c3, c2, c2, ivec2(2), lodClamp);
+
+ outColor = sparseTexelsResidentARB(resident) ? texel : vec4(itexel) + vec4(utexel);
+} \ No newline at end of file