1cb93a386Sopenharmony_ci#include <metal_stdlib> 2cb93a386Sopenharmony_ci#include <simd/simd.h> 3cb93a386Sopenharmony_ciusing namespace metal; 4cb93a386Sopenharmony_cistruct Uniforms { 5cb93a386Sopenharmony_ci float4x4 colorXform; 6cb93a386Sopenharmony_ci}; 7cb93a386Sopenharmony_cistruct Inputs { 8cb93a386Sopenharmony_ci}; 9cb93a386Sopenharmony_cistruct Outputs { 10cb93a386Sopenharmony_ci half4 sk_FragColor [[color(0)]]; 11cb93a386Sopenharmony_ci}; 12cb93a386Sopenharmony_cistruct Globals { 13cb93a386Sopenharmony_ci texture2d<half> s; 14cb93a386Sopenharmony_ci sampler sSmplr; 15cb93a386Sopenharmony_ci}; 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_cithread bool operator==(const float4x4 left, const float4x4 right); 18cb93a386Sopenharmony_cithread bool operator!=(const float4x4 left, const float4x4 right); 19cb93a386Sopenharmony_cithread bool operator==(const float4x4 left, const float4x4 right) { 20cb93a386Sopenharmony_ci return all(left[0] == right[0]) && 21cb93a386Sopenharmony_ci all(left[1] == right[1]) && 22cb93a386Sopenharmony_ci all(left[2] == right[2]) && 23cb93a386Sopenharmony_ci all(left[3] == right[3]); 24cb93a386Sopenharmony_ci} 25cb93a386Sopenharmony_cithread bool operator!=(const float4x4 left, const float4x4 right) { 26cb93a386Sopenharmony_ci return !(left == right); 27cb93a386Sopenharmony_ci} 28cb93a386Sopenharmony_cifragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], texture2d<half> s[[texture(0)]], sampler sSmplr[[sampler(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { 29cb93a386Sopenharmony_ci Globals _globals{s, sSmplr}; 30cb93a386Sopenharmony_ci (void)_globals; 31cb93a386Sopenharmony_ci Outputs _out; 32cb93a386Sopenharmony_ci (void)_out; 33cb93a386Sopenharmony_ci float4 tmpColor; 34cb93a386Sopenharmony_ci _out.sk_FragColor = (tmpColor = float4(_globals.s.sample(_globals.sSmplr, float2(1.0))) , half4(_uniforms.colorXform != float4x4(1.0) ? float4(clamp((_uniforms.colorXform * float4(tmpColor.xyz, 1.0)).xyz, 0.0, tmpColor.w), tmpColor.w) : tmpColor)); 35cb93a386Sopenharmony_ci return _out; 36cb93a386Sopenharmony_ci} 37