1[require]
2GLSL >= 1.50
3GL_ARB_tessellation_shader
4
5
6[vertex shader]
7#version 150
8in vec4 vertex;
9
10void main()
11{
12	gl_Position = vertex;
13}
14
15[tessellation control shader]
16#version 150
17#extension GL_ARB_tessellation_shader: require
18
19layout(vertices = 3) out;
20
21void main()
22{
23        gl_TessLevelInner[0] = 1.0;
24        gl_TessLevelInner[1] = 1.0;
25        gl_TessLevelOuter[0] = 1.0;
26        gl_TessLevelOuter[1] = 1.0;
27        gl_TessLevelOuter[2] = 1.0;
28        gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
29}
30
31[tessellation evaluation shader]
32#version 150
33#extension GL_ARB_tessellation_shader: require
34
35layout(triangles) in;
36
37void main()
38{
39        int index = int(gl_TessCoord.y + (2 * gl_TessCoord.z));
40        gl_Position = gl_in[index].gl_Position;
41}
42
43[fragment shader]
44#version 150
45
46void main()
47{
48	gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
49}
50
51[vertex data]
52vertex/float/2
53-1.0 -1.0
54 1.0 -1.0
55-1.0  1.0
56-1.0  1.0
57 1.0 -1.0
58 1.0  1.0
59
60[test]
61clear color 0.1 0.1 0.1 0.1
62clear
63patch parameter vertices 3
64draw arrays GL_PATCHES 0 6
65probe all rgba 0.0 1.0 0.0 1.0
66