blob: eaf76a4d84f7f3e5f945aeedc6d8774c652a01d2 [file] [log] [blame]
# -------------------------------------------------
# drawElements Quality Program OpenGL ES 3.2 Module
# -------------------------------------------------
#
# Copyright 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
group types "Types"
case float
version 320 es
desc "varying of type float"
values
{
input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump float vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump float vtx_var[];
out mediump float tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump float tc_out[];
out mediump float te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump float te_out[];
out mediump float geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in mediump float geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case vec2
version 320 es
desc "varying of type vec2"
values
{
input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ];
output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump vec2 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump vec2 vtx_var[];
out mediump vec2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump vec2 tc_out[];
out mediump vec2 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump vec2 te_out[];
out mediump vec2 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in vec2 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case vec3
version 320 es
desc "varying of type vec3"
values
{
input vec3 in0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ];
output vec3 out0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump vec3 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump vec3 vtx_var[];
out mediump vec3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump vec3 tc_out[];
out mediump vec3 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump vec3 te_out[];
out mediump vec3 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in vec3 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case vec4
version 320 es
desc "varying of type vec4"
values
{
input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump vec4 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump vec4 vtx_var[];
out mediump vec4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump vec4 tc_out[];
out mediump vec4 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump vec4 te_out[];
out mediump vec4 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in vec4 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat2
version 320 es
desc "varying of type mat2"
values
{
input mat2 in0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ];
output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump mat2 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump mat2 vtx_var[];
out mediump mat2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat2 tc_out[];
out mediump mat2 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump mat2 te_out[];
out mediump mat2 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in mat2 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat2x3
version 320 es
desc "varying of type mat2x3"
values
{
input mat2x3 in0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
output mat2x3 out0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump mat2x3 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump mat2x3 vtx_var[];
out mediump mat2x3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat2x3 tc_out[];
out mediump mat2x3 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump mat2x3 te_out[];
out mediump mat2x3 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in mat2x3 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat2x4
version 320 es
desc "varying of type mat2x4"
values
{
input mat2x4 in0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
output mat2x4 out0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump mat2x4 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump mat2x4 vtx_var[];
out mediump mat2x4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat2x4 tc_out[];
out mediump mat2x4 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump mat2x4 te_out[];
out mediump mat2x4 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in mat2x4 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat3x2
version 320 es
desc "varying of type mat3x2"
values
{
input mat3x2 in0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
output mat3x2 out0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump mat3x2 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump mat3x2 vtx_var[];
out mediump mat3x2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat3x2 tc_out[];
out mediump mat3x2 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump mat3x2 te_out[];
out mediump mat3x2 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in mat3x2 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat3
version 320 es
desc "varying of type mat3"
values
{
input mat3 in0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ];
output mat3 out0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump mat3 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump mat3 vtx_var[];
out mediump mat3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat3 tc_out[];
out mediump mat3 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump mat3 te_out[];
out mediump mat3 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in mat3 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat3x4
version 320 es
desc "varying of type mat3x4"
values
{
input mat3x4 in0 = [ 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) ];
output mat3x4 out0 = [ 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) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump mat3x4 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump mat3x4 vtx_var[];
out mediump mat3x4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat3x4 tc_out[];
out mediump mat3x4 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump mat3x4 te_out[];
out mediump mat3x4 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in mat3x4 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat4x2
version 320 es
desc "varying of type mat4x2"
values
{
input mat4x2 in0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
output mat4x2 out0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump mat4x2 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump mat4x2 vtx_var[];
out mediump mat4x2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat4x2 tc_out[];
out mediump mat4x2 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump mat4x2 te_out[];
out mediump mat4x2 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in mat4x2 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat4x3
version 320 es
desc "varying of type mat4x3"
values
{
input mat4x3 in0 = [ 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) ];
output mat4x3 out0 = [ 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) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump mat4x3 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump mat4x3 vtx_var[];
out mediump mat4x3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat4x3 tc_out[];
out mediump mat4x3 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump mat4x3 te_out[];
out mediump mat4x3 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in mat4x3 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case mat4
version 320 es
desc "varying of type mat4"
values
{
input mat4 in0 = [ 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) ];
output mat4 out0 = [ 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) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out mediump mat4 vtx_var;
void main()
{
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in mediump mat4 vtx_var[];
out mediump mat4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in mediump mat4 tc_out[];
out mediump mat4 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in mediump mat4 te_out[];
out mediump mat4 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in mat4 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case int
version 320 es
desc "varying of type int"
values
{
input int in0 = [ -1 | -25 | 1 | 2 | 3 | 16 ];
output int out0 = [ -1 | -25 | 1 | 2 | 3 | 16 ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
flat out mediump int vtx_var;
void main()
{
${VERTEX_SETUP}
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat in mediump int vtx_var[];
flat out mediump int tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump int tc_out[];
flat out mediump int te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
flat in mediump int te_out[];
flat out mediump int geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
${FRAGMENT_DECLARATIONS}
flat in int geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case ivec2
version 320 es
desc "varying of type ivec2"
values
{
input ivec2 in0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ];
output ivec2 out0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
flat out mediump ivec2 vtx_var;
void main()
{
${VERTEX_SETUP}
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat in mediump ivec2 vtx_var[];
flat out mediump ivec2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump ivec2 tc_out[];
flat out mediump ivec2 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
flat in mediump ivec2 te_out[];
flat out mediump ivec2 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
${FRAGMENT_DECLARATIONS}
flat in ivec2 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case ivec3
version 320 es
desc "varying of type ivec3"
values
{
input ivec3 in0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ];
output ivec3 out0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
flat out mediump ivec3 vtx_var;
void main()
{
${VERTEX_SETUP}
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat in mediump ivec3 vtx_var[];
flat out mediump ivec3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump ivec3 tc_out[];
flat out mediump ivec3 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
flat in mediump ivec3 te_out[];
flat out mediump ivec3 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
${FRAGMENT_DECLARATIONS}
flat in ivec3 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case ivec4
version 320 es
desc "varying of type ivec4"
values
{
input ivec4 in0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ];
output ivec4 out0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
flat out mediump ivec4 vtx_var;
void main()
{
${VERTEX_SETUP}
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat in mediump ivec4 vtx_var[];
flat out mediump ivec4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump ivec4 tc_out[];
flat out mediump ivec4 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
flat in mediump ivec4 te_out[];
flat out mediump ivec4 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
${FRAGMENT_DECLARATIONS}
flat in ivec4 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case uint
version 320 es
desc "varying of type int"
values
{
input uint in0 = [ 1 | 2 | 3 | 16 ];
output uint out0 = [ 1 | 2 | 3 | 16 ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
flat out mediump uint vtx_var;
void main()
{
${VERTEX_SETUP}
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat in mediump uint vtx_var[];
flat out mediump uint tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump uint tc_out[];
flat out mediump uint te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
flat in mediump uint te_out[];
flat out mediump uint geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
${FRAGMENT_DECLARATIONS}
flat in uint geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case uvec2
version 320 es
desc "varying of type uvec2"
values
{
input uvec2 in0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ];
output uvec2 out0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
flat out mediump uvec2 vtx_var;
void main()
{
${VERTEX_SETUP}
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat in mediump uvec2 vtx_var[];
flat out mediump uvec2 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump uvec2 tc_out[];
flat out mediump uvec2 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
flat in mediump uvec2 te_out[];
flat out mediump uvec2 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
${FRAGMENT_DECLARATIONS}
flat in uvec2 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case uvec3
version 320 es
desc "varying of type uvec3"
values
{
input uvec3 in0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ];
output uvec3 out0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
flat out mediump uvec3 vtx_var;
void main()
{
${VERTEX_SETUP}
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat in mediump uvec3 vtx_var[];
flat out mediump uvec3 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump uvec3 tc_out[];
flat out mediump uvec3 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
flat in mediump uvec3 te_out[];
flat out mediump uvec3 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
${FRAGMENT_DECLARATIONS}
flat in uvec3 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case uvec4
version 320 es
desc "varying of type uvec4"
values
{
input uvec4 in0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ];
output uvec4 out0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
flat out mediump uvec4 vtx_var;
void main()
{
${VERTEX_SETUP}
vtx_var = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
flat in mediump uvec4 vtx_var[];
flat out mediump uvec4 tc_out[];
void main()
{
tc_out[gl_InvocationID] = vtx_var[gl_InvocationID];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
flat in mediump uvec4 tc_out[];
flat out mediump uvec4 te_out;
void main()
{
te_out = tc_out[2];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
flat in mediump uvec4 te_out[];
flat out mediump uvec4 geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out = te_out[ndx];
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
${FRAGMENT_DECLARATIONS}
flat in uvec4 geo_out;
void main()
{
out0 = geo_out;
${FRAGMENT_OUTPUT}
}
""
end
case float_struct
version 320 es
desc "varying of struct type containing float"
values
{
input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
struct S { mediump float val; };
out S vtx_var;
void main()
{
${VERTEX_SETUP}
vtx_var.val = in0;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
struct S { mediump float val; };
in S vtx_var[];
out S tc_out[];
void main()
{
tc_out[gl_InvocationID].val = vtx_var[gl_InvocationID].val;
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
struct S { mediump float val; };
in S tc_out[];
out S te_out;
void main()
{
te_out.val = tc_out[2].val;
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
struct S { mediump float val; };
in S te_out[];
out S geo_out;
void main()
{
for (int ndx = 0; ndx < gl_in.length(); ++ndx)
{
geo_out.val = te_out[ndx].val;
gl_Position = gl_in[ndx].gl_Position;
EmitVertex();
}
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
struct S { mediump float val; };
in S geo_out;
void main()
{
out0 = geo_out.val;
${FRAGMENT_OUTPUT}
}
""
end
case float_array
version 320 es
desc "varying of float array type"
values
{
input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ];
output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ];
}
vertex ""
#version 320 es
${VERTEX_DECLARATIONS}
out VtxOutBlockName { mediump float val[2]; } instanceName;
void main()
{
${VERTEX_SETUP}
instanceName.val[0] = in0.x;
instanceName.val[1] = in0.y;
${VERTEX_OUTPUT}
}
""
tessellation_control ""
#version 320 es
${TESSELLATION_CONTROL_DECLARATIONS}
in VtxOutBlockName { mediump float val[2]; } inInstanceName[];
out TCOutBlockName { mediump float val[2]; } outInstanceName[];
void main()
{
outInstanceName[gl_InvocationID].val[0] = inInstanceName[gl_InvocationID].val[0];
outInstanceName[gl_InvocationID].val[1] = inInstanceName[gl_InvocationID].val[1];
${TESSELLATION_CONTROL_OUTPUT}
}
""
tessellation_evaluation ""
#version 320 es
${TESSELLATION_EVALUATION_DECLARATIONS}
in TCOutBlockName { mediump float val[2]; } inInstanceName[];
out TEOutBlockName { mediump float val[2]; } outInstanceName;
void main()
{
outInstanceName.val[0] = inInstanceName[2].val[0];
outInstanceName.val[1] = inInstanceName[2].val[1];
${TESSELLATION_EVALUATION_OUTPUT}
}
""
geometry ""
#version 320 es
${GEOMETRY_DECLARATIONS}
in TEOutBlockName { mediump float val[2]; } inInstanceName[];
out GeoOutBlockName { mediump float val[2]; } outInstanceName;
void main()
{
outInstanceName.val[0] = inInstanceName[0].val[0];
outInstanceName.val[1] = inInstanceName[0].val[1];
gl_Position = gl_in[0].gl_Position;
EmitVertex();
outInstanceName.val[0] = inInstanceName[1].val[0];
outInstanceName.val[1] = inInstanceName[1].val[1];
gl_Position = gl_in[1].gl_Position;
EmitVertex();
outInstanceName.val[0] = inInstanceName[2].val[0];
outInstanceName.val[1] = inInstanceName[2].val[1];
gl_Position = gl_in[2].gl_Position;
EmitVertex();
}
""
fragment ""
#version 320 es
precision mediump float;
${FRAGMENT_DECLARATIONS}
in GeoOutBlockName { mediump float val[2]; } inInstanceName;
void main()
{
out0 = vec2(inInstanceName.val[0], inInstanceName.val[1]);
${FRAGMENT_OUTPUT}
}
""
end
end