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}; 16float3x3 float3x3_from_float2x3(float2x3 x0) { 17 return float3x3(float3(x0[0].xyz), float3(x0[1].xyz), float3(0.0, 0.0, 1.0)); 18} 19float3x3 float3x3_from_float3x2(float3x2 x0) { 20 return float3x3(float3(x0[0].xy, 0.0), float3(x0[1].xy, 0.0), float3(x0[2].xy, 1.0)); 21} 22float4x4 float4x4_from_float4x3(float4x3 x0) { 23 return float4x4(float4(x0[0].xyz, 0.0), float4(x0[1].xyz, 0.0), float4(x0[2].xyz, 0.0), float4(x0[3].xyz, 1.0)); 24} 25float4x3 float4x3_from_float4x2(float4x2 x0) { 26 return float4x3(float3(x0[0].xy, 0.0), float3(x0[1].xy, 0.0), float3(x0[2].xy, 1.0), float3(x0[3].xy, 0.0)); 27} 28float4x4 float4x4_from_float3x4(float3x4 x0) { 29 return float4x4(float4(x0[0].xyzw), float4(x0[1].xyzw), float4(x0[2].xyzw), float4(0.0, 0.0, 0.0, 1.0)); 30} 31float3x4 float3x4_from_float2x4(float2x4 x0) { 32 return float3x4(float4(x0[0].xyzw), float4(x0[1].xyzw), float4(0.0, 0.0, 1.0, 0.0)); 33} 34float2x4 float2x4_from_float4x2(float4x2 x0) { 35 return float2x4(float4(x0[0].xy, 0.0, 0.0), float4(x0[1].xy, 0.0, 0.0)); 36} 37float4x2 float4x2_from_float2x4(float2x4 x0) { 38 return float4x2(float2(x0[0].xy), float2(x0[1].xy), float2(0.0, 0.0), float2(0.0, 0.0)); 39} 40fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { 41 Outputs _out; 42 (void)_out; 43 float result = 0.0; 44 float3x3 g = float3x3_from_float2x3(float2x3(1.0)); 45 result += g[0].x; 46 float3x3 h = float3x3_from_float3x2(float3x2(1.0)); 47 result += h[0].x; 48 float4x4 i = float4x4_from_float4x3(float4x3_from_float4x2(float4x2(1.0))); 49 result += i[0].x; 50 float4x4 j = float4x4_from_float3x4(float3x4_from_float2x4(float2x4(1.0))); 51 result += j[0].x; 52 float2x4 k = float2x4_from_float4x2(float4x2(1.0)); 53 result += k[0].x; 54 float4x2 l = float4x2_from_float2x4(float2x4(1.0)); 55 result += l[0].x; 56 _out.sk_FragColor = result == 6.0 ? _uniforms.colorGreen : _uniforms.colorRed; 57 return _out; 58} 59