1/*#pragma settings SkVMDebugTrace*/ 2 3uniform float u1[4]; 4float index_by_literal() { 5 return u1[0]; 6} 7 8uniform float u2[4]; 9float index_by_loop() { 10 float sum = 0; 11 for (int i = 3; i >= 0; --i) { 12 sum += u2[i]; 13 } 14 return sum; 15} 16 17uniform float u3[4]; 18float index_by_complex_loop() { 19 float prod = 1; 20 for (int i = 0; i < 4; ++i) { 21 prod *= u3[i < 2 ? 0 : i]; 22 } 23 return prod; 24} 25 26uniform float u4[16]; 27float index_out_of_bounds_checked() { 28 float sum = 0; 29 for (float f = -2.3; f < 17.0; f += 3.7) { 30 if (f > 0 && f < 16) { 31 sum -= u4[int(f)]; 32 } 33 } 34 return sum; 35} 36 37float4 main(float2 xy) { 38 return float4( 39 index_by_literal(), 40 index_by_loop(), 41 index_by_complex_loop(), 42 index_out_of_bounds_checked()); 43} 44