glsl: test loop unroll with uint overflow
[piglit.git] / tests / spec / arb_tessellation_shader / execution / tess_with_geometry.shader_test
blob1a9c2d680e58dd48d41436221bdfc98faaa0e793
1 [require]
2 GLSL >= 1.50
3 GL_ARB_tessellation_shader
5 [vertex shader passthrough]
6 [tessellation evaluation shader]
7 #extension GL_ARB_tessellation_shader : require
8 layout(triangles) in;
9 out vec4 color;
11 void main() {
12         gl_Position =
13                 gl_in[0].gl_Position * gl_TessCoord[0] +
14                 gl_in[1].gl_Position * gl_TessCoord[1] +
15                 gl_in[2].gl_Position * gl_TessCoord[2];
16         color = tan(vec4(gl_TessCoord[0], gl_TessCoord[1], gl_TessCoord[2], 1.0));
19 [geometry shader]
20 layout(triangles) in;
21 layout(triangle_strip, max_vertices = 3) out;
22 in vec4 color[3];
24 out vec4 color2;
25 out vec3 bary;
27 void main() {
28         color2 = color[0];
29         bary = vec3(1.0, 0.0, 0.0);
30         gl_Position = gl_in[0].gl_Position;
31         EmitVertex();
33         color2 = color[1];
34         bary = vec3(0.0, 1.0, 0.0);
35         gl_Position = gl_in[1].gl_Position;
36         EmitVertex();
38         color2 = color[2];
39         bary = vec3(0.0, 0.0, 1.0);
40         gl_Position = gl_in[2].gl_Position;
41         EmitVertex();
44 [fragment shader]
45 in vec4 color2;
46 in vec3 bary;
48 void main()
50         // antialias lines to make it a bit easier to see the gradient behind - note half
51         // of the line belongs to this triangle, half to the neighboring one,
52         // linewidth = 1 pixel
53         vec3 a = smoothstep(vec3(0.0), fwidth(bary), bary);
54         float halfedge = min(min(a.x, a.y), a.z);
55         gl_FragColor = mix(vec4(1.0), color2, halfedge);
58 [vertex data]
59 piglit_vertex/float/2
60 -1.0 -1.0
61  1.0 -1.0
62 -1.0  1.0
63 -1.0  1.0
64  1.0 -1.0
65  1.0  1.0
68 [test]
69 patch parameter default level outer 1 1 1 1
70 patch parameter default level inner 4 4
72 clear color 0.5 0.5 0.5 1.0
73 clear
74 patch parameter vertices 3
76 draw arrays GL_PATCHES 0 6
78 tolerance 0.15 0.15 0.15 0.0
80 # first patch check colors close to the corners are correct
81 relative probe rgba ( 0.064 , 0.016 ) ( 1.0 , 0.0 , 0.0 , 1.0 )
82 relative probe rgba ( 0.872 , 0.016 ) ( 0.0 , 1.0 , 0.0 , 1.0 )
83 relative probe rgba ( 0.016 , 0.872 ) ( 0.0 , 0.0 , 1.0 , 1.0 )
85 # second patch
86 relative probe rgba ( 0.064 , 0.984 ) ( 1.0 , 0.0 , 0.0 , 1.0 )
87 relative probe rgba ( 0.98 , 0.12 ) ( 0.0 , 1.0 , 0.0 , 1.0 )
88 relative probe rgba ( 0.888 , 0.872 ) ( 0.0 , 0.0 , 1.0 , 1.0 )
90 # check that color close to center of first patch is correct
91 # since the vertex color computation is nonlinear we can tell if the patches
92 # have been tessellated or not
93 relative probe rgba ( 0.364, 0.336 ) ( 0.306, 0.388, 0.353, 1.0 )
95 # second patch
96 relative probe rgba ( 0.624, 0.66 ) ( 0.306, 0.388, 0.353, 1.0 )