1#include <metal_stdlib> 2#include <simd/simd.h> 3#ifdef __clang__ 4#pragma clang diagnostic ignored "-Wall" 5#endif 6using namespace metal; 7struct Uniforms { 8 half4 colorGreen; 9 half4 colorRed; 10}; 11struct Inputs { 12}; 13struct Outputs { 14 half4 sk_FragColor [[color(0)]]; 15}; 16fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { 17 Outputs _out; 18 (void)_out; 19 bool ok = true; 20 uint val = uint(_uniforms.colorGreen.x); 21 uint2 mask = uint2(val, ~val); 22 int2 imask = int2(~mask); 23 mask = ~mask & uint2(~imask); 24 ok = ok && all(mask == uint2(0u)); 25 _out.sk_FragColor = ok ? _uniforms.colorGreen : _uniforms.colorRed; 26 return _out; 27} 28