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