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 half4 colorWhite; 11}; 12struct Inputs { 13}; 14struct Outputs { 15 half4 sk_FragColor [[color(0)]]; 16}; 17void out_half_vh(Uniforms _uniforms, thread half& v) { 18 v = _uniforms.colorWhite.x; 19} 20void out_half2_vh2(Uniforms _uniforms, thread half2& v) { 21 v = half2(_uniforms.colorWhite.y); 22} 23void out_half3_vh3(Uniforms _uniforms, thread half3& v) { 24 v = half3(_uniforms.colorWhite.z); 25} 26void out_half4_vh4(Uniforms _uniforms, thread half4& v) { 27 v = half4(_uniforms.colorWhite.w); 28} 29void out_half2x2_vh22(Uniforms _uniforms, thread half2x2& v) { 30 v = half2x2(_uniforms.colorWhite.x); 31} 32void out_half3x3_vh33(Uniforms _uniforms, thread half3x3& v) { 33 v = half3x3(_uniforms.colorWhite.y); 34} 35void out_half4x4_vh44(Uniforms _uniforms, thread half4x4& v) { 36 v = half4x4(_uniforms.colorWhite.z); 37} 38void out_int_vi(Uniforms _uniforms, thread int& v) { 39 v = int(_uniforms.colorWhite.x); 40} 41void out_int2_vi2(Uniforms _uniforms, thread int2& v) { 42 v = int2(int(_uniforms.colorWhite.y)); 43} 44void out_int3_vi3(Uniforms _uniforms, thread int3& v) { 45 v = int3(int(_uniforms.colorWhite.z)); 46} 47void out_int4_vi4(Uniforms _uniforms, thread int4& v) { 48 v = int4(int(_uniforms.colorWhite.w)); 49} 50void out_float_vf(Uniforms _uniforms, thread float& v) { 51 v = float(_uniforms.colorWhite.x); 52} 53void out_float2_vf2(Uniforms _uniforms, thread float2& v) { 54 v = float2(float(_uniforms.colorWhite.y)); 55} 56void out_float3_vf3(Uniforms _uniforms, thread float3& v) { 57 v = float3(float(_uniforms.colorWhite.z)); 58} 59void out_float4_vf4(Uniforms _uniforms, thread float4& v) { 60 v = float4(float(_uniforms.colorWhite.w)); 61} 62void out_float2x2_vf22(Uniforms _uniforms, thread float2x2& v) { 63 v = float2x2(float(_uniforms.colorWhite.x)); 64} 65void out_float3x3_vf33(Uniforms _uniforms, thread float3x3& v) { 66 v = float3x3(float(_uniforms.colorWhite.y)); 67} 68void out_float4x4_vf44(Uniforms _uniforms, thread float4x4& v) { 69 v = float4x4(float(_uniforms.colorWhite.z)); 70} 71void out_bool_vb(Uniforms _uniforms, thread bool& v) { 72 v = bool(_uniforms.colorWhite.x); 73} 74void out_bool2_vb2(Uniforms _uniforms, thread bool2& v) { 75 v = bool2(bool(_uniforms.colorWhite.y)); 76} 77void out_bool3_vb3(Uniforms _uniforms, thread bool3& v) { 78 v = bool3(bool(_uniforms.colorWhite.z)); 79} 80void out_bool4_vb4(Uniforms _uniforms, thread bool4& v) { 81 v = bool4(bool(_uniforms.colorWhite.w)); 82} 83fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { 84 Outputs _out; 85 (void)_out; 86 half _skTemp0; 87 half2 _skTemp1; 88 half3 _skTemp2; 89 half4 _skTemp3; 90 half _skTemp4; 91 half2 _skTemp5; 92 half4 _skTemp6; 93 half2x2 _skTemp7; 94 half3x3 _skTemp8; 95 half4x4 _skTemp9; 96 half3 _skTemp10; 97 half _skTemp11; 98 half _skTemp12; 99 int _skTemp13; 100 int2 _skTemp14; 101 int3 _skTemp15; 102 int4 _skTemp16; 103 int3 _skTemp17; 104 int _skTemp18; 105 float _skTemp19; 106 float2 _skTemp20; 107 float3 _skTemp21; 108 float4 _skTemp22; 109 float2 _skTemp23; 110 float _skTemp24; 111 float2x2 _skTemp25; 112 float3x3 _skTemp26; 113 float4x4 _skTemp27; 114 float _skTemp28; 115 bool _skTemp29; 116 bool2 _skTemp30; 117 bool3 _skTemp31; 118 bool4 _skTemp32; 119 bool2 _skTemp33; 120 bool _skTemp34; 121 half h; 122 ((out_half_vh(_uniforms, _skTemp0)), (h = _skTemp0)); 123 half2 h2; 124 ((out_half2_vh2(_uniforms, _skTemp1)), (h2 = _skTemp1)); 125 half3 h3; 126 ((out_half3_vh3(_uniforms, _skTemp2)), (h3 = _skTemp2)); 127 half4 h4; 128 ((out_half4_vh4(_uniforms, _skTemp3)), (h4 = _skTemp3)); 129 ((out_half_vh(_uniforms, _skTemp4)), (h3.y = _skTemp4)); 130 ((out_half2_vh2(_uniforms, _skTemp5)), (h3.xz = _skTemp5)); 131 ((out_half4_vh4(_uniforms, _skTemp6)), (h4.zwxy = _skTemp6)); 132 half2x2 h2x2; 133 ((out_half2x2_vh22(_uniforms, _skTemp7)), (h2x2 = _skTemp7)); 134 half3x3 h3x3; 135 ((out_half3x3_vh33(_uniforms, _skTemp8)), (h3x3 = _skTemp8)); 136 half4x4 h4x4; 137 ((out_half4x4_vh44(_uniforms, _skTemp9)), (h4x4 = _skTemp9)); 138 ((out_half3_vh3(_uniforms, _skTemp10)), (h3x3[1] = _skTemp10)); 139 ((out_half_vh(_uniforms, _skTemp11)), (h4x4[3].w = _skTemp11)); 140 ((out_half_vh(_uniforms, _skTemp12)), (h2x2[0].x = _skTemp12)); 141 int i; 142 ((out_int_vi(_uniforms, _skTemp13)), (i = _skTemp13)); 143 int2 i2; 144 ((out_int2_vi2(_uniforms, _skTemp14)), (i2 = _skTemp14)); 145 int3 i3; 146 ((out_int3_vi3(_uniforms, _skTemp15)), (i3 = _skTemp15)); 147 int4 i4; 148 ((out_int4_vi4(_uniforms, _skTemp16)), (i4 = _skTemp16)); 149 ((out_int3_vi3(_uniforms, _skTemp17)), (i4.xyz = _skTemp17)); 150 ((out_int_vi(_uniforms, _skTemp18)), (i2.y = _skTemp18)); 151 float f; 152 ((out_float_vf(_uniforms, _skTemp19)), (f = _skTemp19)); 153 float2 f2; 154 ((out_float2_vf2(_uniforms, _skTemp20)), (f2 = _skTemp20)); 155 float3 f3; 156 ((out_float3_vf3(_uniforms, _skTemp21)), (f3 = _skTemp21)); 157 float4 f4; 158 ((out_float4_vf4(_uniforms, _skTemp22)), (f4 = _skTemp22)); 159 ((out_float2_vf2(_uniforms, _skTemp23)), (f3.xy = _skTemp23)); 160 ((out_float_vf(_uniforms, _skTemp24)), (f2.x = _skTemp24)); 161 float2x2 f2x2; 162 ((out_float2x2_vf22(_uniforms, _skTemp25)), (f2x2 = _skTemp25)); 163 float3x3 f3x3; 164 ((out_float3x3_vf33(_uniforms, _skTemp26)), (f3x3 = _skTemp26)); 165 float4x4 f4x4; 166 ((out_float4x4_vf44(_uniforms, _skTemp27)), (f4x4 = _skTemp27)); 167 ((out_float_vf(_uniforms, _skTemp28)), (f2x2[0].x = _skTemp28)); 168 bool b; 169 ((out_bool_vb(_uniforms, _skTemp29)), (b = _skTemp29)); 170 bool2 b2; 171 ((out_bool2_vb2(_uniforms, _skTemp30)), (b2 = _skTemp30)); 172 bool3 b3; 173 ((out_bool3_vb3(_uniforms, _skTemp31)), (b3 = _skTemp31)); 174 bool4 b4; 175 ((out_bool4_vb4(_uniforms, _skTemp32)), (b4 = _skTemp32)); 176 ((out_bool2_vb2(_uniforms, _skTemp33)), (b4.xw = _skTemp33)); 177 ((out_bool_vb(_uniforms, _skTemp34)), (b3.z = _skTemp34)); 178 bool ok = true; 179 ok = ok && 1.0h == (((((h * h2.x) * h3.x) * h4.x) * h2x2[0].x) * h3x3[0].x) * h4x4[0].x; 180 ok = ok && 1.0 == (((((f * f2.x) * f3.x) * f4.x) * f2x2[0].x) * f3x3[0].x) * f4x4[0].x; 181 ok = ok && 1 == ((i * i2.x) * i3.x) * i4.x; 182 ok = ok && (((b && b2.x) && b3.x) && b4.x); 183 _out.sk_FragColor = ok ? _uniforms.colorGreen : _uniforms.colorRed; 184 return _out; 185} 186