• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#include <metal_stdlib>
2#include <simd/simd.h>
3using namespace metal;
4struct Uniforms {
5    float4 colorGreen;
6    float4 colorRed;
7};
8struct Inputs {
9};
10struct Outputs {
11    float4 sk_FragColor [[color(0)]];
12};
13float _skOutParamHelper0_frexp(float _var0, thread int4& exp) {
14    int _var1;
15    float _skResult = frexp(_var0, _var1);
16    exp.x = _var1;
17    return _skResult;
18}
19float2 _skOutParamHelper1_frexp(float2 _var0, thread int4& exp) {
20    int2 _var1;
21    float2 _skResult = frexp(_var0, _var1);
22    exp.xy = _var1;
23    return _skResult;
24}
25float3 _skOutParamHelper2_frexp(float3 _var0, thread int4& exp) {
26    int3 _var1;
27    float3 _skResult = frexp(_var0, _var1);
28    exp.xyz = _var1;
29    return _skResult;
30}
31float4 _skOutParamHelper3_frexp(float4 _var0, thread int4& exp) {
32    int4 _var1;
33    float4 _skResult = frexp(_var0, _var1);
34    exp = _var1;
35    return _skResult;
36}
37
38fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
39    Outputs _out;
40    (void)_out;
41    float4 value = _uniforms.colorGreen.yyyy * 6.0;
42    int4 exp;
43    float4 result;
44    bool4 ok;
45    result.x =     _skOutParamHelper0_frexp(value.x, exp);
46    ok.x = result.x == 0.75 && exp.x == 3;
47    result.xy =     _skOutParamHelper1_frexp(value.xy, exp);
48    ok.y = result.y == 0.75 && exp.y == 3;
49    result.xyz =     _skOutParamHelper2_frexp(value.xyz, exp);
50    ok.z = result.z == 0.75 && exp.z == 3;
51    result =     _skOutParamHelper3_frexp(value, exp);
52    ok.w = result.w == 0.75 && exp.w == 3;
53    _out.sk_FragColor = all(ok) ? _uniforms.colorGreen : _uniforms.colorRed;
54    return _out;
55}
56