| # ------------------------------------------------- |
| # 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 |