1cb93a386Sopenharmony_ci#include <metal_stdlib>
2cb93a386Sopenharmony_ci#include <simd/simd.h>
3cb93a386Sopenharmony_ciusing namespace metal;
4cb93a386Sopenharmony_cistruct Uniforms {
5cb93a386Sopenharmony_ci    half4 colorWhite;
6cb93a386Sopenharmony_ci};
7cb93a386Sopenharmony_cistruct Inputs {
8cb93a386Sopenharmony_ci};
9cb93a386Sopenharmony_cistruct Outputs {
10cb93a386Sopenharmony_ci    half4 sk_FragColor [[color(0)]];
11cb93a386Sopenharmony_ci};
12cb93a386Sopenharmony_cifragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
13cb93a386Sopenharmony_ci    Outputs _out;
14cb93a386Sopenharmony_ci    (void)_out;
15cb93a386Sopenharmony_ci    half4 x = _uniforms.colorWhite;
16cb93a386Sopenharmony_ci    for (half r = -5.0h;r < 5.0h; r += 1.0h) {
17cb93a386Sopenharmony_ci        x.x = saturate(r);
18cb93a386Sopenharmony_ci        if (x.x == 0.0h) break;
19cb93a386Sopenharmony_ci    }
20cb93a386Sopenharmony_ci    for (half b = 5.0h;b >= 0.0h; b -= 1.0h) {
21cb93a386Sopenharmony_ci        x.z = b;
22cb93a386Sopenharmony_ci        if (x.w == 1.0h) continue;
23cb93a386Sopenharmony_ci        x.y = 0.0h;
24cb93a386Sopenharmony_ci    }
25cb93a386Sopenharmony_ci    _out.sk_FragColor = x;
26cb93a386Sopenharmony_ci    return _out;
27cb93a386Sopenharmony_ci}
28