#include using namespace metal; struct xlatMtlShaderInput { float2 xlv_TEXCOORD0; }; struct xlatMtlShaderOutput { half4 _fragData [[color(0)]]; }; struct xlatMtlShaderUniform { float4 _MainTex_TexelSize; }; fragment xlatMtlShaderOutput xlatMtlMain (xlatMtlShaderInput _mtl_i [[stage_in]], constant xlatMtlShaderUniform& _mtl_u [[buffer(0)]] , texture2d _MainTex [[texture(0)]], sampler _mtlsmp__MainTex [[sampler(0)]]) { xlatMtlShaderOutput _mtl_o; float2 rcpFrame_1; rcpFrame_1 = _mtl_u._MainTex_TexelSize.xy; half3 tmpvar_2; bool doneP_4; bool doneN_5; half lumaEndP_6; half lumaEndN_7; float2 offNP_8; float2 posP_9; float2 posN_10; half gradientN_11; float lengthSign_12; half3 rgbL_13; half lumaS_14; half lumaN_15; float4 tmpvar_16; tmpvar_16.zw = float2(0.0, 0.0); tmpvar_16.xy = (_mtl_i.xlv_TEXCOORD0 + (float2(0.0, -1.0) * _mtl_u._MainTex_TexelSize.xy)); half4 tmpvar_17; tmpvar_17 = _MainTex.sample(_mtlsmp__MainTex, (float2)(tmpvar_16.xy), level(0.0)); float4 tmpvar_18; tmpvar_18.zw = float2(0.0, 0.0); tmpvar_18.xy = (_mtl_i.xlv_TEXCOORD0 + (float2(-1.0, 0.0) * _mtl_u._MainTex_TexelSize.xy)); half4 tmpvar_19; tmpvar_19 = _MainTex.sample(_mtlsmp__MainTex, (float2)(tmpvar_18.xy), level(0.0)); half4 tmpvar_20; tmpvar_20 = _MainTex.sample(_mtlsmp__MainTex, (float2)(_mtl_i.xlv_TEXCOORD0), level(0.0)); float4 tmpvar_21; tmpvar_21.zw = float2(0.0, 0.0); tmpvar_21.xy = (_mtl_i.xlv_TEXCOORD0 + (float2(1.0, 0.0) * _mtl_u._MainTex_TexelSize.xy)); half4 tmpvar_22; tmpvar_22 = _MainTex.sample(_mtlsmp__MainTex, (float2)(tmpvar_21.xy), level(0.0)); float4 tmpvar_23; tmpvar_23.zw = float2(0.0, 0.0); tmpvar_23.xy = (_mtl_i.xlv_TEXCOORD0 + (float2(0.0, 1.0) * _mtl_u._MainTex_TexelSize.xy)); half4 tmpvar_24; tmpvar_24 = _MainTex.sample(_mtlsmp__MainTex, (float2)(tmpvar_23.xy), level(0.0)); half tmpvar_25; tmpvar_25 = ((tmpvar_17.y * (half)1.963211) + tmpvar_17.x); lumaN_15 = tmpvar_25; half tmpvar_26; tmpvar_26 = ((tmpvar_19.y * (half)1.963211) + tmpvar_19.x); half tmpvar_27; tmpvar_27 = ((tmpvar_20.y * (half)1.963211) + tmpvar_20.x); half tmpvar_28; tmpvar_28 = ((tmpvar_22.y * (half)1.963211) + tmpvar_22.x); half tmpvar_29; tmpvar_29 = ((tmpvar_24.y * (half)1.963211) + tmpvar_24.x); lumaS_14 = tmpvar_29; half tmpvar_30; tmpvar_30 = max (max (tmpvar_27, tmpvar_25), max (max (tmpvar_26, tmpvar_29), tmpvar_28)); half tmpvar_31; tmpvar_31 = (tmpvar_30 - min (min (tmpvar_27, tmpvar_25), min ( min (tmpvar_26, tmpvar_29) , tmpvar_28))); half tmpvar_32; tmpvar_32 = max ((half)0.04166667, (tmpvar_30 * (half)0.125)); if ((tmpvar_31 < tmpvar_32)) { tmpvar_2 = tmpvar_20.xyz; } else { half tmpvar_33; tmpvar_33 = min ((half)0.75, (max ((half)0.0, ((abs(( (((tmpvar_25 + tmpvar_26) + (tmpvar_28 + tmpvar_29)) * (half)0.25) - tmpvar_27)) / tmpvar_31) - (half)0.25) ) * (half)1.333333)); float4 tmpvar_34; tmpvar_34.zw = float2(0.0, 0.0); tmpvar_34.xy = (_mtl_i.xlv_TEXCOORD0 - _mtl_u._MainTex_TexelSize.xy); half4 tmpvar_35; tmpvar_35 = _MainTex.sample(_mtlsmp__MainTex, (float2)(tmpvar_34.xy), level(0.0)); float4 tmpvar_36; tmpvar_36.zw = float2(0.0, 0.0); tmpvar_36.xy = (_mtl_i.xlv_TEXCOORD0 + (float2(1.0, -1.0) * _mtl_u._MainTex_TexelSize.xy)); half4 tmpvar_37; tmpvar_37 = _MainTex.sample(_mtlsmp__MainTex, (float2)(tmpvar_36.xy), level(0.0)); float4 tmpvar_38; tmpvar_38.zw = float2(0.0, 0.0); tmpvar_38.xy = (_mtl_i.xlv_TEXCOORD0 + (float2(-1.0, 1.0) * _mtl_u._MainTex_TexelSize.xy)); half4 tmpvar_39; tmpvar_39 = _MainTex.sample(_mtlsmp__MainTex, (float2)(tmpvar_38.xy), level(0.0)); float4 tmpvar_40; tmpvar_40.zw = float2(0.0, 0.0); tmpvar_40.xy = (_mtl_i.xlv_TEXCOORD0 + _mtl_u._MainTex_TexelSize.xy); half4 tmpvar_41; tmpvar_41 = _MainTex.sample(_mtlsmp__MainTex, (float2)(tmpvar_40.xy), level(0.0)); rgbL_13 = (((tmpvar_17.xyz + tmpvar_19.xyz) + (tmpvar_20.xyz + tmpvar_22.xyz)) + ((tmpvar_24.xyz + tmpvar_35.xyz) + ( (tmpvar_37.xyz + tmpvar_39.xyz) + tmpvar_41.xyz))); rgbL_13 = (rgbL_13 * (half3)float3(0.1111111, 0.1111111, 0.1111111)); half tmpvar_42; tmpvar_42 = ((tmpvar_35.y * (half)1.963211) + tmpvar_35.x); half tmpvar_43; tmpvar_43 = ((tmpvar_37.y * (half)1.963211) + tmpvar_37.x); half tmpvar_44; tmpvar_44 = ((tmpvar_39.y * (half)1.963211) + tmpvar_39.x); half tmpvar_45; tmpvar_45 = ((tmpvar_41.y * (half)1.963211) + tmpvar_41.x); bool tmpvar_46; tmpvar_46 = ((( abs(((((half)0.25 * tmpvar_42) + ((half)-0.5 * tmpvar_26)) + ((half)0.25 * tmpvar_44))) + abs(((((half)0.5 * tmpvar_25) - tmpvar_27) + ((half)0.5 * tmpvar_29))) ) + abs( ((((half)0.25 * tmpvar_43) + ((half)-0.5 * tmpvar_28)) + ((half)0.25 * tmpvar_45)) )) >= (( abs(((((half)0.25 * tmpvar_42) + ((half)-0.5 * tmpvar_25)) + ((half)0.25 * tmpvar_43))) + abs(((((half)0.5 * tmpvar_26) - tmpvar_27) + ((half)0.5 * tmpvar_28))) ) + abs( ((((half)0.25 * tmpvar_44) + ((half)-0.5 * tmpvar_29)) + ((half)0.25 * tmpvar_45)) ))); float tmpvar_47; if (tmpvar_46) { tmpvar_47 = -(_mtl_u._MainTex_TexelSize.y); } else { tmpvar_47 = -(_mtl_u._MainTex_TexelSize.x); }; lengthSign_12 = tmpvar_47; if (!(tmpvar_46)) { lumaN_15 = tmpvar_26; }; if (!(tmpvar_46)) { lumaS_14 = tmpvar_28; }; half tmpvar_48; tmpvar_48 = abs((lumaN_15 - tmpvar_27)); gradientN_11 = tmpvar_48; half tmpvar_49; tmpvar_49 = abs((lumaS_14 - tmpvar_27)); lumaN_15 = ((lumaN_15 + tmpvar_27) * (half)0.5); lumaS_14 = ((lumaS_14 + tmpvar_27) * (half)0.5); bool tmpvar_50; tmpvar_50 = (tmpvar_48 >= tmpvar_49); if (!(tmpvar_50)) { lumaN_15 = lumaS_14; }; if (!(tmpvar_50)) { gradientN_11 = tmpvar_49; }; if (!(tmpvar_50)) { lengthSign_12 = -(tmpvar_47); }; float tmpvar_51; if (tmpvar_46) { tmpvar_51 = 0.0; } else { tmpvar_51 = (lengthSign_12 * 0.5); }; posN_10.x = (_mtl_i.xlv_TEXCOORD0.x + tmpvar_51); float tmpvar_52; if (tmpvar_46) { tmpvar_52 = (lengthSign_12 * 0.5); } else { tmpvar_52 = 0.0; }; posN_10.y = (_mtl_i.xlv_TEXCOORD0.y + tmpvar_52); gradientN_11 = (gradientN_11 * (half)0.25); posP_9 = posN_10; float2 tmpvar_53; if (tmpvar_46) { float2 tmpvar_54; tmpvar_54.y = 0.0; tmpvar_54.x = rcpFrame_1.x; tmpvar_53 = tmpvar_54; } else { float2 tmpvar_55; tmpvar_55.x = 0.0; tmpvar_55.y = rcpFrame_1.y; tmpvar_53 = tmpvar_55; }; offNP_8 = tmpvar_53; lumaEndN_7 = lumaN_15; lumaEndP_6 = lumaN_15; doneN_5 = bool(bool(0)); doneP_4 = bool(bool(0)); posN_10 = (posN_10 - tmpvar_53); posP_9 = (posP_9 + tmpvar_53); for (int i_3 = 0; i_3 < 16; i_3++) { if (!(doneN_5)) { half4 tmpvar_56; tmpvar_56 = _MainTex.sample(_mtlsmp__MainTex, (float2)(posN_10), level(0.0)); lumaEndN_7 = ((tmpvar_56.y * (half)1.963211) + tmpvar_56.x); }; if (!(doneP_4)) { half4 tmpvar_57; tmpvar_57 = _MainTex.sample(_mtlsmp__MainTex, (float2)(posP_9), level(0.0)); lumaEndP_6 = ((tmpvar_57.y * (half)1.963211) + tmpvar_57.x); }; bool tmpvar_58; if (doneN_5) { tmpvar_58 = bool(bool(1)); } else { tmpvar_58 = (abs((lumaEndN_7 - lumaN_15)) >= gradientN_11); }; doneN_5 = tmpvar_58; bool tmpvar_59; if (doneP_4) { tmpvar_59 = bool(bool(1)); } else { tmpvar_59 = (abs((lumaEndP_6 - lumaN_15)) >= gradientN_11); }; doneP_4 = tmpvar_59; if ((tmpvar_58 && tmpvar_59)) { break; }; if (!(tmpvar_58)) { posN_10 = (posN_10 - offNP_8); }; if (!(tmpvar_59)) { posP_9 = (posP_9 + offNP_8); }; }; float tmpvar_60; if (tmpvar_46) { tmpvar_60 = (_mtl_i.xlv_TEXCOORD0.x - posN_10.x); } else { tmpvar_60 = (_mtl_i.xlv_TEXCOORD0.y - posN_10.y); }; float tmpvar_61; if (tmpvar_46) { tmpvar_61 = (posP_9.x - _mtl_i.xlv_TEXCOORD0.x); } else { tmpvar_61 = (posP_9.y - _mtl_i.xlv_TEXCOORD0.y); }; bool tmpvar_62; tmpvar_62 = (tmpvar_60 < tmpvar_61); half tmpvar_63; if (tmpvar_62) { tmpvar_63 = lumaEndN_7; } else { tmpvar_63 = lumaEndP_6; }; lumaEndN_7 = tmpvar_63; if ((((tmpvar_27 - lumaN_15) < (half)0.0) == ((tmpvar_63 - lumaN_15) < (half)0.0))) { lengthSign_12 = 0.0; }; float tmpvar_64; tmpvar_64 = (tmpvar_61 + tmpvar_60); float tmpvar_65; if (tmpvar_62) { tmpvar_65 = tmpvar_60; } else { tmpvar_65 = tmpvar_61; }; float tmpvar_66; tmpvar_66 = ((0.5 + (tmpvar_65 * (-1.0 / tmpvar_64) )) * lengthSign_12); float tmpvar_67; if (tmpvar_46) { tmpvar_67 = 0.0; } else { tmpvar_67 = tmpvar_66; }; float tmpvar_68; if (tmpvar_46) { tmpvar_68 = tmpvar_66; } else { tmpvar_68 = 0.0; }; float2 tmpvar_69; tmpvar_69.x = (_mtl_i.xlv_TEXCOORD0.x + tmpvar_67); tmpvar_69.y = (_mtl_i.xlv_TEXCOORD0.y + tmpvar_68); half4 tmpvar_70; tmpvar_70 = _MainTex.sample(_mtlsmp__MainTex, (float2)(tmpvar_69), level(0.0)); half3 tmpvar_71; tmpvar_71.x = -(tmpvar_33); tmpvar_71.y = -(tmpvar_33); tmpvar_71.z = -(tmpvar_33); tmpvar_2 = ((tmpvar_71 * tmpvar_70.xyz) + ((rgbL_13 * half3(tmpvar_33)) + tmpvar_70.xyz)); }; half4 tmpvar_72; tmpvar_72.w = half(0.0); tmpvar_72.xyz = tmpvar_2; _mtl_o._fragData = tmpvar_72; return _mtl_o; } // stats: 191 alu 12 tex 26 flow // inputs: 1 // #0: xlv_TEXCOORD0 (high float) 2x1 [-1] // uniforms: 1 (total size: 16) // #0: _MainTex_TexelSize (high float) 4x1 [-1] loc 0 // textures: 1 // #0: _MainTex (low 2d) 0x0 [-1] loc 0