1[require] 2GLSL >= 1.50 3GL_ARB_tessellation_shader 4GL_ARB_gpu_shader_fp64 5 6[vertex shader] 7in vec4 vertex; 8 9void main() 10{ 11 gl_Position = vertex; 12} 13 14 15[tessellation control shader] 16#extension GL_ARB_tessellation_shader: require 17#extension GL_ARB_gpu_shader_fp64: require 18layout(vertices = 3) out; 19 20out block { 21 dvec4 tcs_var0[4]; 22} blk[]; 23 24void main() { 25 gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; 26 gl_TessLevelOuter = float[4](1.0, 1.0, 1.0, 0.0); 27 gl_TessLevelInner = float[2](0.0, 0.0); 28 blk[gl_InvocationID].tcs_var0[0] = dvec4(1.0LF, 0.0LF, 0.0LF, 1.0LF); 29 blk[gl_InvocationID].tcs_var0[1] = dvec4(0.0LF, 1.0LF, 0.0LF, 1.0LF); 30 blk[gl_InvocationID].tcs_var0[2] = dvec4(0.0LF, 0.0LF, 1.0LF, 1.0LF); 31 blk[gl_InvocationID].tcs_var0[3] = dvec4(1.0LF, 1.0LF, 0.0LF, 1.0LF); 32} 33 34 35[tessellation evaluation shader] 36#extension GL_ARB_tessellation_shader: require 37#extension GL_ARB_gpu_shader_fp64: require 38layout(triangles) in; 39 40uniform int index; 41in block { 42 dvec4 tcs_var0[4]; 43} blk[]; 44 45out vec4 color; 46 47void main() { 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]; 51 52 color = vec4(blk[0].tcs_var0[index]); 53} 54 55 56[fragment shader] 57#extension GL_ARB_gpu_shader_fp64: require 58in vec4 color; 59 60void main() 61{ 62 gl_FragColor = color; 63} 64 65[vertex data] 66vertex/float/2 67-1.0 -1.0 68 1.0 -1.0 69-1.0 1.0 70-1.0 1.0 71 1.0 -1.0 72 1.0 1.0 73 74[test] 75clear color 0.1 0.1 0.1 0.1 76clear 77patch parameter vertices 3 78 79uniform int index 0 80draw arrays GL_PATCHES 0 6 81probe all rgba 1.0 0.0 0.0 1.0 82 83uniform int index 1 84draw arrays GL_PATCHES 0 6 85probe all rgba 0.0 1.0 0.0 1.0 86 87uniform int index 2 88draw arrays GL_PATCHES 0 6 89probe all rgba 0.0 0.0 1.0 1.0 90 91uniform int index 3 92draw arrays GL_PATCHES 0 6 93probe all rgba 1.0 1.0 0.0 1.0 94