[Piglit] [PATCH 3/3] glsl-1.20: Add tests for clip vertex.
Paul Berry
stereotype441 at gmail.com
Wed Jun 22 13:57:57 PDT 2011
Test the functionality of gl_ClipVertex by creating 6 clip planes that
chop a rectangle into a hexagon, and then probe to verify the
hexagon's shape.
---
.../execution/vs-clip-vertex-01.shader_test | 55 ++++++++++++++++++
.../execution/vs-clip-vertex-02.shader_test | 60 ++++++++++++++++++++
2 files changed, 115 insertions(+), 0 deletions(-)
create mode 100644 tests/spec/glsl-1.20/execution/vs-clip-vertex-01.shader_test
create mode 100644 tests/spec/glsl-1.20/execution/vs-clip-vertex-02.shader_test
diff --git a/tests/spec/glsl-1.20/execution/vs-clip-vertex-01.shader_test b/tests/spec/glsl-1.20/execution/vs-clip-vertex-01.shader_test
new file mode 100644
index 0000000..40fbb62
--- /dev/null
+++ b/tests/spec/glsl-1.20/execution/vs-clip-vertex-01.shader_test
@@ -0,0 +1,55 @@
+# [description]
+# Use all 6 clip planes to clip a rectangle to a hexagon shape.
+#
+# In this test, gl_Position and gl_ClipVertex are the same.
+
+[require]
+GLSL >= 1.20
+
+[vertex shader]
+#version 120
+void main(void)
+{
+ gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+
+ gl_ClipVertex = gl_Position;
+}
+
+[fragment shader]
+#version 120
+void main(void)
+{
+ gl_FragColor = vec4(1, 1, 1, 1);
+}
+
+[test]
+ortho
+clip plane 0 0 1 0 0.5
+clip plane 1 -1 1 0 0.8
+clip plane 2 -1 -1 0 0.8
+clip plane 3 0 -1 0 0.5
+clip plane 4 1 -1 0 0.8
+clip plane 5 1 1 0 0.8
+enable GL_CLIP_PLANE0
+enable GL_CLIP_PLANE1
+enable GL_CLIP_PLANE2
+enable GL_CLIP_PLANE3
+enable GL_CLIP_PLANE4
+enable GL_CLIP_PLANE5
+draw rect 25 25 200 200
+
+# Test points inside each hexagon edge
+probe rgba 75 100 1.0 1.0 1.0 1.0
+probe rgba 125 75 1.0 1.0 1.0 1.0
+probe rgba 175 100 1.0 1.0 1.0 1.0
+probe rgba 175 150 1.0 1.0 1.0 1.0
+probe rgba 125 175 1.0 1.0 1.0 1.0
+probe rgba 75 150 1.0 1.0 1.0 1.0
+
+# Test points outside each hexagon edge
+probe rgba 50 75 0.0 0.0 0.0 0.0
+probe rgba 125 50 0.0 0.0 0.0 0.0
+probe rgba 200 75 0.0 0.0 0.0 0.0
+probe rgba 200 175 0.0 0.0 0.0 0.0
+probe rgba 125 200 0.0 0.0 0.0 0.0
+probe rgba 50 175 0.0 0.0 0.0 0.0
diff --git a/tests/spec/glsl-1.20/execution/vs-clip-vertex-02.shader_test b/tests/spec/glsl-1.20/execution/vs-clip-vertex-02.shader_test
new file mode 100644
index 0000000..c640806
--- /dev/null
+++ b/tests/spec/glsl-1.20/execution/vs-clip-vertex-02.shader_test
@@ -0,0 +1,60 @@
+# [description]
+# Use all 6 clip planes to clip a rectangle to a hexagon shape.
+#
+# In this test, gl_Position and gl_ClipVertex are different to verify
+# that gl_Position determines screen position and gl_ClipVertex
+# determines clipping.
+
+[require]
+GLSL >= 1.20
+
+[vertex shader]
+#version 120
+void main(void)
+{
+ gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+
+ // Set gl_ClipVertex to gl_Vertex rather than gl_Position so
+ // that we can verify it is being used for clipping instead of
+ // gl_Position.
+ gl_ClipVertex = gl_Vertex;
+}
+
+[fragment shader]
+#version 120
+void main(void)
+{
+ gl_FragColor = vec4(1, 1, 1, 1);
+}
+
+[test]
+ortho
+clip plane 0 0 1 0 -62.5
+clip plane 1 -1 1 0 100
+clip plane 2 -1 -1 0 350
+clip plane 3 0 -1 0 187.5
+clip plane 4 1 -1 0 100
+clip plane 5 1 1 0 -150
+enable GL_CLIP_PLANE0
+enable GL_CLIP_PLANE1
+enable GL_CLIP_PLANE2
+enable GL_CLIP_PLANE3
+enable GL_CLIP_PLANE4
+enable GL_CLIP_PLANE5
+draw rect 25 25 200 200
+
+# Test points inside each hexagon edge
+probe rgba 75 100 1.0 1.0 1.0 1.0
+probe rgba 125 75 1.0 1.0 1.0 1.0
+probe rgba 175 100 1.0 1.0 1.0 1.0
+probe rgba 175 150 1.0 1.0 1.0 1.0
+probe rgba 125 175 1.0 1.0 1.0 1.0
+probe rgba 75 150 1.0 1.0 1.0 1.0
+
+# Test points outside each hexagon edge
+probe rgba 50 75 0.0 0.0 0.0 0.0
+probe rgba 125 50 0.0 0.0 0.0 0.0
+probe rgba 200 75 0.0 0.0 0.0 0.0
+probe rgba 200 175 0.0 0.0 0.0 0.0
+probe rgba 125 200 0.0 0.0 0.0 0.0
+probe rgba 50 175 0.0 0.0 0.0 0.0
--
1.7.5.4
More information about the Piglit
mailing list