• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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