]> git.tdb.fi Git - libs/gl.git/blobdiff - tests/glsl/unsigned_int.glsl
Add support for uint types in GLSL
[libs/gl.git] / tests / glsl / unsigned_int.glsl
diff --git a/tests/glsl/unsigned_int.glsl b/tests/glsl/unsigned_int.glsl
new file mode 100644 (file)
index 0000000..b83f5e3
--- /dev/null
@@ -0,0 +1,51 @@
+uniform sampler2D tex;
+vec2 hammersley(uint i, uint count)
+{
+       float y = bitfieldReverse(i)*2.3283064e-10;
+       return vec2(float(i)/count, y);
+}
+const uint sample_count = 128;
+
+#pragma MSP stage(vertex)
+layout(location=0) in vec4 position;
+void main()
+{
+       gl_Position = position;
+       out vec2 texcoord = position.xy*0.5+0.5;
+}
+
+#pragma MSP stage(fragment)
+layout(location=0) out vec4 frag_color;
+void main()
+{
+       vec4 sum = vec4(0.0);
+       for(int i=0; i<sample_count; ++i)
+               sum += texture(tex, texcoord+pow(hammersley(i, sample_count), vec2(2.0)));
+       frag_color = sum/sample_count;
+}
+
+/* Expected output: vertex
+layout(location=0) in vec4 position;
+layout(location=0) out vec2 texcoord;
+void main()
+{
+       gl_Position = position;
+       texcoord = position.xy*0.5+0.5;
+}
+*/
+
+/* Expected output: fragment
+layout(location=0, binding=71) uniform sampler2D tex;
+layout(location=0) out vec4 frag_color;
+layout(location=0) in vec2 texcoord;
+void main()
+{
+       vec4 sum = vec4(0.0);
+       for(int i=0; uint(i)<128u; ++i)
+       {
+               uint i_1 = uint(i);
+               sum += texture(tex, texcoord+pow(vec2(float(i_1)/128.0, float(bitfieldReverse(i_1))*2.3283064e-10), vec2(2.0)));
+       }
+       frag_color = sum/128.0;
+}
+*/