group if "If Statements" case single_statement version 300 es values { input float in0 = [ 0.0 | 1.0 | 2.0 ]; output float out0 = [ 0.0 | 1.0 | 1.0 ]; } both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { out0 = 0.0; if (in0 >= 1.0) out0 = 1.0; ${OUTPUT} } "" end case compound_statement version 300 es values { input float in0 = [ 0.0 | 1.0 | 2.0 ]; output float out0 = [ 0.0 | 1.0 | 1.0 ]; output float out1 = [ 1.0 | 0.0 | 0.0 ]; } both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { out0 = 0.0; out1 = 1.0; if (in0 >= 1.0) { out0 = 1.0; out1 = 0.0; } ${OUTPUT} } "" end case sequence_statements version 300 es values { input float in0 = [ 0.0 | 1.0 | 2.0 ]; output float out0 = [ 0.0 | 1.0 | 1.0 ]; output float out1 = [ 1.0 | 0.0 | 0.0 ]; } both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { out0 = 0.0; out1 = 1.0; if (in0 >= 1.0) out0 = 1.0, out1 = 0.0; ${OUTPUT} } "" end case sequence_condition version 300 es values { input float in0 = [ 0.0 | 1.0 | 2.0 ]; output float out0 = [ 0.0 | 1.0 | 1.0 ]; output float out1 = [ 1.0 | 0.0 | 0.0 ]; } both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { out0 = 0.0; out1 = 1.0; if (false, in0 >= 1.0) out0 = 1.0, out1 = 0.0; ${OUTPUT} } "" end case complex_condition version 300 es values { input float in0 = [ 0.0 | 1.0 | 2.0 ]; output float out0 = [ 0.0 | 1.0 | 1.0 ]; output float out1 = [ 1.0 | 0.0 | 0.0 ]; } both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { out0 = 0.0; out1 = 1.0; if (false || (in0 >= 1.0) && (in0 - 2.0*in0 < 0.0)) out0 = 1.0, out1 = 0.0; ${OUTPUT} } "" end case if_else version 300 es values { input float in0 = [ 0.0 | 1.0 | 2.0 ]; output float out0 = [ 0.0 | 1.0 | 1.0 ]; } both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { if (in0 >= 1.0) out0 = 1.0; else out0 = 0.0; ${OUTPUT} } "" end case if_elseif version 300 es values { input float in0 = [ 0.0 | 1.0 | 2.0 ]; output float out0 = [ 0.0 | 1.0 | 2.0 ]; } both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { out0 = 0.0; if (in0 >= 2.0) out0 = 2.0; else if (in0 >= 1.0) out0 = 1.0; ${OUTPUT} } "" end case if_elseif_else version 300 es values { input float in0 = [ 0.0 | 1.0 | 2.0 ]; output float out0 = [ 0.0 | 1.0 | 2.0 ]; } both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { if (in0 >= 2.0) out0 = 2.0; else if (in0 >= 1.0) out0 = 1.0; else out0 = 0.0; ${OUTPUT} } "" end case mixed_if_elseif_else version 300 es values { input float in0 = [ 0.0 | 1.0 | 2.0 ]; output float out0 = [ 0.0 | 1.0 | 2.0 ]; } both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { if (in0 >= 2.0) { out0 = 2.0; } else if (in0 >= 1.0) out0 = 2.0, out0 = 1.0; else out0 = 0.0; ${OUTPUT} } "" end end # if group invalid_if "Invalid If Conditionals" case missing_parenthesis version 300 es expect compile_fail both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { if true ${POSITION_FRAG_COLOR} = vec4(1.0); } "" end case unclosed_parenthesis version 300 es expect compile_fail both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { if (true ${POSITION_FRAG_COLOR} = vec4(1.0); } "" end case int_condition version 300 es expect compile_fail both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { if (5) ${POSITION_FRAG_COLOR} = vec4(1.0); } "" end case int_zero_condition version 300 es expect compile_fail both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { if (0) ${POSITION_FRAG_COLOR} = vec4(1.0); } "" end case int_one_condition version 300 es expect compile_fail both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { if (1) ${POSITION_FRAG_COLOR} = vec4(1.0); } "" end case int_uniform_condition version 300 es expect compile_fail both "" #version 300 es precision mediump float; precision mediump int; uniform int u0; ${DECLARATIONS} void main() { if (u0) ${POSITION_FRAG_COLOR} = vec4(1.0); } "" end case float_condition version 300 es expect compile_fail both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { if (5.0) ${POSITION_FRAG_COLOR} = vec4(1.0); } "" end case float_zero_condition version 300 es expect compile_fail both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { if (0.0) ${POSITION_FRAG_COLOR} = vec4(1.0); } "" end case float_one_condition version 300 es expect compile_fail both "" #version 300 es precision mediump float; ${DECLARATIONS} void main() { if (1.0) ${POSITION_FRAG_COLOR} = vec4(1.0); } "" end case sampler_condition version 300 es expect compile_fail both "" #version 300 es precision mediump float; uniform sampler2D s0; ${DECLARATIONS} void main() { if (s0) ${POSITION_FRAG_COLOR} = vec4(1.0); } "" end end # invalid_if