1#include <metal_stdlib> 2#include <simd/simd.h> 3#ifdef __clang__ 4#pragma clang diagnostic ignored "-Wall" 5#endif 6using namespace metal; 7constant const int kConstant = 0; 8constant const int kOtherConstant = 1; 9constant const int kAnotherConstant = 2; 10constant const float kFloatConstant = 2.14; 11constant const float kFloatConstantAlias = kFloatConstant; 12constant const half4 kConstVec = half4(1.0h, 0.2h, 2.14h, 1.0h); 13struct Uniforms { 14 half4 colorGreen; 15}; 16struct Inputs { 17}; 18struct Outputs { 19 half4 sk_FragColor [[color(0)]]; 20}; 21fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { 22 Outputs _out; 23 (void)_out; 24 const float kLocalFloatConstant = 3.14; 25 const float kLocalFloatConstantAlias = kLocalFloatConstant; 26 int integerInput = int(_uniforms.colorGreen.y); 27 if (integerInput == kConstant) { 28 _out.sk_FragColor = half4(2.14h); 29 return _out; 30 } else if (integerInput == kOtherConstant) { 31 _out.sk_FragColor = _uniforms.colorGreen; 32 return _out; 33 } else if (integerInput == kAnotherConstant) { 34 _out.sk_FragColor = kConstVec; 35 return _out; 36 } else if (kLocalFloatConstantAlias < float(_uniforms.colorGreen.x) * kLocalFloatConstant) { 37 _out.sk_FragColor = half4(3.14h); 38 return _out; 39 } else if (kFloatConstantAlias >= float(_uniforms.colorGreen.x) * kFloatConstantAlias) { 40 _out.sk_FragColor = half4(0.0h); 41 return _out; 42 } else { 43 _out.sk_FragColor = half4(1.0h, 0.0h, 0.0h, 1.0h); 44 return _out; 45 } 46 return _out; 47} 48