blob: 5850049f6891be4f6f84bae39529583e451ba98f [file] [log] [blame]
group types "Types"
case float
version 310 es
desc "uniform of type float"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform float val0 = -1.25;
uniform float val1 = 1.0;
output float out0 = 0.75;
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump float tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump float tc_out[];
out mediump float te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in mediump float te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case vec2
version 310 es
desc "uniform of type vec2"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform vec2 val0 = [ vec2(-1.25, 1.25) ];
uniform vec2 val1 = [ vec2(1.0, 1.5) ];
output vec2 out0 = [ vec2(0.75, 4.25) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump vec2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump vec2 tc_out[];
out mediump vec2 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in vec2 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case vec3
version 310 es
desc "uniform of type vec3"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform vec3 val0 = [ vec3(-1.25, 1.25, -9.5) ];
uniform vec3 val1 = [ vec3( 1.0, 1.5, 2.5) ];
output vec3 out0 = [ vec3(0.75, 4.25, -4.5) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump vec3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump vec3 tc_out[];
out mediump vec3 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in vec3 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case vec4
version 310 es
desc "uniform of type vec4"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform vec4 val0 = [ vec4(-1.25, 1.25, -9.5, -12.2) ];
uniform vec4 val1 = [ vec4(1.0, 1.5, 2.5, -1.0) ];
output vec4 out0 = [ vec4(0.75, 4.25, -4.5, -14.2) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump vec4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump vec4 tc_out[];
out mediump vec4 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in vec4 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat2
version 310 es
desc "uniform of type mat2"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform mat2 val0 = [ mat2(-1.25, 1.25, -9.5, -12.2) ];
uniform mat2 val1 = [ mat2(1.0, 1.5, 2.5, -1.0) ];
output mat2 out0 = [ mat2(0.75, 4.25, -4.5, -14.2) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump mat2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat2 tc_out[];
out mediump mat2 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in mat2 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat2x3
version 310 es
desc "uniform of type mat2x3"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform mat2x3 val0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
uniform mat2x3 val1 = [ mat2x3(1.0, 1.5, 2.5, -1.0, 2.0, 1.0) ];
output mat2x3 out0 = [ mat2x3(0.75, 4.25, -4.5, -14.2, -21.65, -5.25) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump mat2x3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat2x3 tc_out[];
out mediump mat2x3 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in mat2x3 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat2x4
version 310 es
desc "uniform of type mat2x4"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform mat2x4 val0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
uniform mat2x4 val1 = [ mat2x4(1.0, 1.5, 2.5, -1.0, 2.0, 1.0, 3.0, 4.0) ];
output mat2x4 out0 = [ mat2x4(0.75, 4.25, -4.5, -14.2, -21.65, -5.25, 20.21, -69.7) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump mat2x4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat2x4 tc_out[];
out mediump mat2x4 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in mat2x4 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat3x2
version 310 es
desc "uniform of type mat3x2"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform mat3x2 val0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
uniform mat3x2 val1 = [ mat3x2(1.0, 1.5, 2.5, -1.0, 2.0, 1.0) ];
output mat3x2 out0 = [ mat3x2(0.75, 4.25, -4.5, -14.2, -21.65, -5.25) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump mat3x2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat3x2 tc_out[];
out mediump mat3x2 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in mat3x2 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat3
version 310 es
desc "uniform of type mat3"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform mat3 val0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) ];
uniform mat3 val1 = [ mat3(1.0, 1.5, 2.5, -1.0, 2.0, 1.0, 3.0, 4.0, -1.0) ];
output mat3 out0 = [ mat3(0.75, 4.25, -4.5, -14.2, -21.65, -5.25, 20.21, -69.7, 7.9) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump mat3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat3 tc_out[];
out mediump mat3 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in mat3 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat3x4
version 310 es
desc "uniform of type mat3x4"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform mat3x4 val0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ];
uniform mat3x4 val1 = [ mat3x4(1.0, 1.5, 2.5, -1.0, 2.0, 1.0, 3.0, 4.0, -1.0, 3.0, 4.5, -1.5) ];
output mat3x4 out0 = [ mat3x4(0.75, 4.25, -4.5, -14.2, -21.65, -5.25, 20.21, -69.7, -2.0, 7.0, 8.0, -1.0) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump mat3x4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat3x4 tc_out[];
out mediump mat3x4 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in mat3x4 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat4x2
version 310 es
desc "uniform of type mat4x2"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform mat4x2 val0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
uniform mat4x2 val1 = [ mat4x2(1.0, 1.5, 2.5, -1.0, 2.0, 1.0, 3.0, 4.0) ];
output mat4x2 out0 = [ mat4x2(0.75, 4.25, -4.5, -14.2, -21.65, -5.25, 20.21, -69.7) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump mat4x2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat4x2 tc_out[];
out mediump mat4x2 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in mat4x2 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat4x3
version 310 es
desc "uniform of type mat4x3"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform mat4x3 val0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ];
uniform mat4x3 val1 = [ mat4x3(1.0, 1.5, 2.5, -1.0, 2.0, 1.0, 3.0, 4.0, -1.0, 3.0, 4.5, -1.5) ];
output mat4x3 out0 = [ mat4x3(0.75, 4.25, -4.5, -14.2, -21.65, -5.25, 20.21, -69.7, -2.0, 7.0, 8.0, -1.0) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump mat4x3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat4x3 tc_out[];
out mediump mat4x3 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in mat4x3 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat4
version 310 es
desc "uniform of type mat4"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform mat4 val0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ];
uniform mat4 val1 = [ mat4(1.0, 1.5, 2.5, -1.0, 2.0, 1.0, 3.0, 4.0, -1.0, 3.0, 4.5, -1.5, 3.5, 2.0, 5.0, 0.5) ];
output mat4 out0 = [ mat4(0.75, 4.25, -4.5, -14.2, -21.65, -5.25, 20.21, -69.7, -2.0, 7.0, 8.0, -1.0, 9.25, 6.25, 32.5, 226.0) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
out mediump mat4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat4 tc_out[];
out mediump mat4 te_out;
void main()
{
te_out = tc_out[2] + 2.0 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp float;
${FRAGMENT_DECLARATIONS}
in mat4 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case int
version 310 es
desc "uniform of type int"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform int val0 = [ -1 ];
uniform int val1 = [ 2 ];
output int out0 = [ 3 ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_SETUP}
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat out mediump int tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump int tc_out[];
flat out mediump int te_out;
void main()
{
te_out = tc_out[2] + 2 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp int;
${FRAGMENT_DECLARATIONS}
flat in int te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case ivec2
version 310 es
desc "uniform of type ivec2"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform ivec2 val0 = [ ivec2(-1, 1) ];
uniform ivec2 val1 = [ ivec2(2, 3) ];
output ivec2 out0 = [ ivec2(3, 7) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_SETUP}
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat out mediump ivec2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump ivec2 tc_out[];
flat out mediump ivec2 te_out;
void main()
{
te_out = tc_out[2] + 2 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp int;
${FRAGMENT_DECLARATIONS}
flat in ivec2 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case ivec3
version 310 es
desc "uniform of type ivec3"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform ivec3 val0 = [ ivec3(-1, 1, -2) ];
uniform ivec3 val1 = [ ivec3(2, 3, -2) ];
output ivec3 out0 = [ ivec3(3, 7, -6) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_SETUP}
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat out mediump ivec3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump ivec3 tc_out[];
flat out mediump ivec3 te_out;
void main()
{
te_out = tc_out[2] + 2 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp int;
${FRAGMENT_DECLARATIONS}
flat in ivec3 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case ivec4
version 310 es
desc "uniform of type ivec4"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform ivec4 val0 = [ ivec4(-1, 1, -2, 2) ];
uniform ivec4 val1 = [ ivec4(2, 3, -2, 1) ];
output ivec4 out0 = [ ivec4(3, 7, -6, 4) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_SETUP}
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat out mediump ivec4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump ivec4 tc_out[];
flat out mediump ivec4 te_out;
void main()
{
te_out = tc_out[2] + 2 * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp int;
${FRAGMENT_DECLARATIONS}
flat in ivec4 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case uint
version 310 es
desc "uniform of type int"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform uint val0 = [ 1 ];
uniform uint val1 = [ 2 ];
output uint out0 = [ 5 ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_SETUP}
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat out mediump uint tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump uint tc_out[];
flat out mediump uint te_out;
void main()
{
te_out = tc_out[2] + 2u * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp int;
${FRAGMENT_DECLARATIONS}
flat in uint te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case uvec2
version 310 es
desc "uniform of type uvec2"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform uvec2 val0 = [ uvec2(1, 1) ];
uniform uvec2 val1 = [ uvec2(2, 3) ];
output uvec2 out0 = [ uvec2(5, 7) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_SETUP}
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat out mediump uvec2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump uvec2 tc_out[];
flat out mediump uvec2 te_out;
void main()
{
te_out = tc_out[2] + 2u * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp int;
${FRAGMENT_DECLARATIONS}
flat in uvec2 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case uvec3
version 310 es
desc "uniform of type uvec3"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform uvec3 val0 = [ uvec3(1, 1, 2) ];
uniform uvec3 val1 = [ uvec3(2, 3, 4) ];
output uvec3 out0 = [ uvec3(5, 7, 10) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_SETUP}
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat out mediump uvec3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump uvec3 tc_out[];
flat out mediump uvec3 te_out;
void main()
{
te_out = tc_out[2] + 2u * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp int;
${FRAGMENT_DECLARATIONS}
flat in uvec3 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case uvec4
version 310 es
desc "uniform of type uvec4"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform uvec4 val0 = [ uvec4(1, 1, 2, 2) ];
uniform uvec4 val1 = [ uvec4(2, 3, 4, 1) ];
output uvec4 out0 = [ uvec4(5, 7, 10, 4) ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_SETUP}
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat out mediump uvec4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = val0;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump uvec4 tc_out[];
flat out mediump uvec4 te_out;
void main()
{
te_out = tc_out[2] + 2u * val1;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision highp int;
${FRAGMENT_DECLARATIONS}
flat in uvec4 te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
case float_struct
version 310 es
desc "varying of struct type containing float"
require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
values
{
uniform float u_struct.val = [ 3.0 ];
output float out0 = [ 6.0 ];
}
vertex ""
#version 310 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_SETUP}
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 310 es
${TESSELLATION_CONTROL_DECLARATIONS}
struct S { mediump float val; };
uniform S u_struct;
out mediump float tc_out[];
void main()
{
tc_out[gl_InvocationID] = u_struct.val;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 310 es
${TESSELLATION_EVALUATION_DECLARATIONS}
struct S { mediump float val; };
uniform S u_struct;
in mediump float tc_out[];
out mediump float te_out;
void main()
{
te_out = tc_out[2] + u_struct.val;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
fragment ""
#version 310 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in mediump float te_out;
void main()
{
out0 = te_out;
${FRAGMENT_OUTPUT}
}
""
end
end