1# simple dvec2 through vs->tcs->tes->fs. 2[require] 3GLSL >= 1.50 4GL_ARB_tessellation_shader 5GL_ARB_gpu_shader_fp64 6 7[vertex shader] 8#extension GL_ARB_gpu_shader_fp64: require 9in vec4 vertex; 10 11out dvec2 vs_var0; 12 13void main() 14{ 15 gl_Position = vertex; 16 vs_var0 = dvec2(1.0LF, 2.0LF); 17} 18 19 20[tessellation control shader] 21#extension GL_ARB_tessellation_shader: require 22#extension GL_ARB_gpu_shader_fp64: require 23layout(vertices = 3) out; 24 25in dvec2 vs_var0[]; 26out dvec2 tcs_var0[]; 27 28void main() { 29 gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; 30 gl_TessLevelOuter = float[4](1.0, 1.0, 1.0, 0.0); 31 gl_TessLevelInner = float[2](0.0, 0.0); 32 tcs_var0[gl_InvocationID] = vs_var0[gl_InvocationID] + dvec2(2.0LF, 3.0LF); 33} 34 35 36[tessellation evaluation shader] 37#extension GL_ARB_tessellation_shader: require 38#extension GL_ARB_gpu_shader_fp64: require 39layout(triangles) in; 40 41in dvec2 tcs_var0[]; 42flat out dvec2 tes_var0; 43 44void main() { 45 dvec2 temp; 46 gl_Position = gl_in[0].gl_Position * gl_TessCoord[0] 47 + gl_in[1].gl_Position * gl_TessCoord[1] 48 + gl_in[2].gl_Position * gl_TessCoord[2]; 49 50 tes_var0 = tcs_var0[0] + dvec2(3.0LF, 4.0LF); 51} 52 53 54[fragment shader] 55#extension GL_ARB_gpu_shader_fp64: require 56flat in dvec2 tes_var0; 57 58void main() 59{ 60 if (tes_var0 == dvec2(6.0LF, 9.0LF)) 61 gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); 62 else 63 gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); 64} 65 66[vertex data] 67vertex/float/2 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 1.0 1.0 74 75[test] 76clear color 0.1 0.1 0.1 0.1 77clear 78patch parameter vertices 3 79draw arrays GL_PATCHES 0 6 80probe all rgba 0.0 1.0 0.0 1.0 81