2 # Use all 6 clip planes to clip a rectangle to a hexagon shape.
4 # In this test, gl_Position and gl_ClipVertex are different to verify
5 # that gl_Position determines screen position and gl_ClipVertex
11 GL_ARB_tessellation_shader
14 #version 150 compatibility
16 in vec4 piglit_vertex;
20 gl_Position = gl_ModelViewProjectionMatrix * piglit_vertex;
22 // Transform gl_ClipVertex in an arbitrary way so that
23 // we can verify it is being used for clipping instead of
25 gl_ClipVertex = piglit_vertex * vec4(10.0, 10.0, 1.0, 1.0);
28 [tessellation control shader]
29 #version 150 compatibility
30 #extension GL_ARB_tessellation_shader: require
32 layout(vertices = 3) out;
35 gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
36 gl_out[gl_InvocationID].gl_ClipVertex = gl_in[gl_InvocationID].gl_ClipVertex;
37 gl_TessLevelOuter = float[4](1.0, 1.0, 1.0, 0.0);
38 gl_TessLevelInner = float[2](0.0, 0.0);
41 [tessellation evaluation shader]
42 #version 150 compatibility
43 #extension GL_ARB_tessellation_shader: require
48 gl_Position = gl_in[0].gl_Position * gl_TessCoord[0]
49 + gl_in[1].gl_Position * gl_TessCoord[1]
50 + gl_in[2].gl_Position * gl_TessCoord[2];
52 gl_ClipVertex = gl_in[0].gl_ClipVertex * gl_TessCoord[0]
53 + gl_in[1].gl_ClipVertex * gl_TessCoord[1]
54 + gl_in[2].gl_ClipVertex * gl_TessCoord[2];
58 #version 150 compatibility
61 layout(triangle_strip, max_vertices = 3) out;
65 for (int i = 0; i < 3; i++) {
66 gl_Position = gl_in[i].gl_Position;
67 gl_ClipVertex = gl_in[i].gl_ClipVertex;
77 gl_FragColor = vec4(1, 1, 1, 1);
90 clear color 0.0 0.0 0.0 0.0
93 clip plane 0 0 1 0 -2.5
95 clip plane 2 -1 -1 0 14
96 clip plane 3 0 -1 0 7.5
100 enable GL_CLIP_PLANE1
101 enable GL_CLIP_PLANE2
102 enable GL_CLIP_PLANE3
103 enable GL_CLIP_PLANE4
104 enable GL_CLIP_PLANE5
106 patch parameter vertices 3
107 draw arrays GL_PATCHES 0 6
109 # Test points inside each hexagon edge
110 relative probe rgba (0.3, 0.4) (1.0, 1.0, 1.0, 1.0)
111 relative probe rgba (0.5, 0.3) (1.0, 1.0, 1.0, 1.0)
112 relative probe rgba (0.7, 0.4) (1.0, 1.0, 1.0, 1.0)
113 relative probe rgba (0.7, 0.6) (1.0, 1.0, 1.0, 1.0)
114 relative probe rgba (0.5, 0.7) (1.0, 1.0, 1.0, 1.0)
115 relative probe rgba (0.3, 0.6) (1.0, 1.0, 1.0, 1.0)
117 # Test points outside each hexagon edge
118 relative probe rgba (0.2, 0.3) (0.0, 0.0, 0.0, 0.0)
119 relative probe rgba (0.5, 0.2) (0.0, 0.0, 0.0, 0.0)
120 relative probe rgba (0.8, 0.3) (0.0, 0.0, 0.0, 0.0)
121 relative probe rgba (0.8, 0.7) (0.0, 0.0, 0.0, 0.0)
122 relative probe rgba (0.5, 0.8) (0.0, 0.0, 0.0, 0.0)
123 relative probe rgba (0.2, 0.7) (0.0, 0.0, 0.0, 0.0)