#include #include using namespace metal; struct Uniforms { float4 colorGreen; float4 colorRed; }; struct Inputs { }; struct Outputs { float4 sk_FragColor [[color(0)]]; }; float _skOutParamHelper0_frexp(float _var0, thread int4& exp) { int _var1; float _skResult = frexp(_var0, _var1); exp.x = _var1; return _skResult; } float2 _skOutParamHelper1_frexp(float2 _var0, thread int4& exp) { int2 _var1; float2 _skResult = frexp(_var0, _var1); exp.xy = _var1; return _skResult; } float3 _skOutParamHelper2_frexp(float3 _var0, thread int4& exp) { int3 _var1; float3 _skResult = frexp(_var0, _var1); exp.xyz = _var1; return _skResult; } float4 _skOutParamHelper3_frexp(float4 _var0, thread int4& exp) { int4 _var1; float4 _skResult = frexp(_var0, _var1); exp = _var1; return _skResult; } fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { Outputs _out; (void)_out; float4 value = _uniforms.colorGreen.yyyy * 6.0; int4 exp; float4 result; bool4 ok; result.x = _skOutParamHelper0_frexp(value.x, exp); ok.x = result.x == 0.75 && exp.x == 3; result.xy = _skOutParamHelper1_frexp(value.xy, exp); ok.y = result.y == 0.75 && exp.y == 3; result.xyz = _skOutParamHelper2_frexp(value.xyz, exp); ok.z = result.z == 0.75 && exp.z == 3; result = _skOutParamHelper3_frexp(value, exp); ok.w = result.w == 0.75 && exp.w == 3; _out.sk_FragColor = all(ok) ? _uniforms.colorGreen : _uniforms.colorRed; return _out; }