1#include <metal_stdlib> 2#include <simd/simd.h> 3using namespace metal; 4struct Uniforms { 5 half2 ah; 6 half2 bh; 7 float2 af; 8 float2 bf; 9}; 10struct Inputs { 11}; 12struct Outputs { 13 half4 sk_FragColor [[color(0)]]; 14}; 15float cross_length_2d_ff2f2(float2 a, float2 b); 16half cross_length_2d_hh2h2(half2 a, half2 b); 17float cross_length_2d_ff2f2(float2 a, float2 b) { 18 return determinant(float2x2(a, b)); 19} 20half cross_length_2d_hh2h2(half2 a, half2 b) { 21 return determinant(half2x2(a, b)); 22} 23fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { 24 Outputs _out; 25 (void)_out; 26 _out.sk_FragColor.x = cross_length_2d_hh2h2(_uniforms.ah, _uniforms.bh); 27 _out.sk_FragColor.y = half(cross_length_2d_ff2f2(_uniforms.af, _uniforms.bf)); 28 return _out; 29} 30