| uniform half4 colorGreen, colorRed; |
| |
| bool test_scalar() { |
| mediump float mp = 0.5; |
| highp float hp = mp; |
| highp int ihp = 2; |
| mediump int imp = ihp; |
| |
| return mp == hp && ihp == imp; |
| } |
| |
| bool test_vector() { |
| mediump vec2 mp2 = vec2(2); |
| highp vec2 hp2 = mp2; |
| mediump vec3 mp3 = vec3(3); |
| highp vec3 hp3 = mp3; |
| mediump vec4 mp4 = vec4(4); |
| highp vec4 hp4 = mp4; |
| |
| highp ivec2 ihp2 = ivec2(2); |
| mediump ivec2 imp2 = ihp2; |
| highp ivec3 ihp3 = ivec3(3); |
| mediump ivec3 imp3 = ihp3; |
| highp ivec4 ihp4 = ivec4(4); |
| mediump ivec4 imp4 = ihp4; |
| |
| return mp2 == hp2 && hp3 == mp3 && mp4 == hp4 && |
| imp2 == ihp2 && ihp3 == imp3 && imp4 == ihp4; |
| } |
| |
| bool test_matrix() { |
| mediump mat2 mp2 = mat2(2); |
| highp mat2 hp2 = mp2; |
| mediump mat3 mp3 = mat3(3); |
| highp mat3 hp3 = mp3; |
| mediump mat4 mp4 = mat4(4); |
| highp mat4 hp4 = mp4; |
| |
| return mp2 == hp2 && hp3 == mp3 && mp4 == hp4; |
| } |
| |
| bool test_array() { |
| mediump float mf[1]; mf[0] = 1; |
| highp float hf[1]; hf[0] = 1; |
| mediump vec2 mv[2]; mv[0] = vec2(0, 1); mv[1] = vec2(2, 3); |
| highp vec2 hv[2]; hv[0] = vec2(0, 1); hv[1] = vec2(2, 3); |
| |
| return mf[0] == hf[0] && hv[0] == mv[0] && mv[1] == hv[1]; |
| } |
| |
| bool highp_param (highp float value) { return value == 1; } |
| bool mediump_param(mediump float value) { return value == 2; } |
| bool lowp_param (lowp float value) { return value == 3; } |
| |
| vec4 main(vec2 coords) { |
| highp vec4 zero = vec4(0); |
| mediump vec4 one = vec4(1); |
| lowp vec4 green = colorGreen; |
| green = green * one + zero; |
| |
| highp vec4 red = colorRed; |
| red = (red + zero) * one; |
| |
| return (test_scalar() && test_vector() && test_matrix() && test_array() && |
| highp_param(1) && mediump_param(2) && lowp_param(3)) ? green : red; |
| } |