Bu > 0<%xlatMtlMain#include #include using namespace metal; constant uint32_t rp_output_remap_mask [[ function_constant(1) ]]; constant const uint rp_output_remap_0 = (rp_output_remap_mask >> 0) & 0xF; constant const uint rp_output_remap_1 = (rp_output_remap_mask >> 4) & 0xF; constant const uint rp_output_remap_2 = (rp_output_remap_mask >> 8) & 0xF; constant const uint rp_output_remap_3 = (rp_output_remap_mask >> 12) & 0xF; struct FGlobals_Type { float2 _TileSize; float2 _Position1; float2 _Position2; float2 _Position3; float2 _Position4; float2 _Position5; float2 _Scale1; float2 _Scale2; float2 _Scale3; float2 _Scale4; float2 _Scale5; float _Rotation1; float _Rotation2; float _Rotation3; float _Rotation4; float _Rotation5; float _BorderSize; float _OuterGapWidth; float4 _BorderColor; int _TextureCount; }; struct Mtl_FragmentIn { float2 TEXCOORD0 [[ user(TEXCOORD0) ]] ; float3 TEXCOORD1 [[ user(TEXCOORD1) ]] ; }; struct Mtl_FragmentOut { float4 SV_Target0 [[ color(rp_output_remap_0) ]]; float4 SV_Target1 [[ color(rp_output_remap_1) ]]; float4 SV_Target2 [[ color(rp_output_remap_2) ]]; float4 SV_Target3 [[ color(rp_output_remap_3) ]]; }; fragment Mtl_FragmentOut xlatMtlMain( constant FGlobals_Type& FGlobals [[ buffer(0) ]], sampler sampler_Tex1 [[ sampler (0) ]], sampler sampler_Tex2 [[ sampler (1) ]], sampler sampler_Tex3 [[ sampler (2) ]], sampler sampler_Tex4 [[ sampler (3) ]], sampler sampler_Tex5 [[ sampler (4) ]], texture2d _Tex1 [[ texture(0) ]] , texture2d _Tex2 [[ texture(1) ]] , texture2d _Tex3 [[ texture(2) ]] , texture2d _Tex4 [[ texture(3) ]] , texture2d _Tex5 [[ texture(4) ]] , Mtl_FragmentIn input [[ stage_in ]]) { Mtl_FragmentOut output; float4 u_xlat0; int u_xlati0; bool2 u_xlatb0; float4 u_xlat1; int2 u_xlati1; bool4 u_xlatb1; float4 u_xlat2; int2 u_xlati2; bool4 u_xlatb2; float3 u_xlat3; bool4 u_xlatb3; float4 u_xlat4; bool2 u_xlatb4; float4 u_xlat5; float3 u_xlat6; float2 u_xlat7; bool2 u_xlatb7; float u_xlat8; int u_xlati8; bool u_xlatb8; float2 u_xlat14; bool2 u_xlatb14; float2 u_xlat15; bool2 u_xlatb15; float2 u_xlat16; bool2 u_xlatb16; float u_xlat22; bool u_xlatb22; u_xlat0 = input.TEXCOORD0.xyxy * FGlobals._TileSize.xyxx.xyxy; u_xlat0 = fract(u_xlat0); u_xlatb1.xy = (u_xlat0.zw=float4(FGlobals._Scale1.x, FGlobals._Scale1.y, FGlobals._Scale2.x, FGlobals._Scale2.y)); u_xlati1.xy = int2((uint2(u_xlatb1.yw) * 0xffffffffu) | (uint2(u_xlatb1.xz) * 0xffffffffu)); u_xlati1.xy = ~(u_xlati1.xy); u_xlat15.xy = u_xlat0.zw + (-FGlobals._Position1.xxxy.zw); u_xlat2.x = sin((-FGlobals._Rotation1)); u_xlat3.x = cos((-FGlobals._Rotation1)); u_xlat4.x = (-u_xlat2.x); u_xlat4.y = u_xlat3.x; u_xlat3.x = dot(u_xlat4.yx, u_xlat15.xy); u_xlat4.z = u_xlat2.x; u_xlat3.y = dot(u_xlat4.zy, u_xlat15.xy); u_xlat2 = float4(FGlobals._Scale1.x, FGlobals._Scale1.y, FGlobals._Scale2.x, FGlobals._Scale2.y) * float4(0.5, 0.5, 0.5, 0.5); u_xlatb15.xy = (abs(u_xlat3.xy)=float2(0.0, 0.0)); u_xlatb3.xy = (float2(1.0, 1.0)>=u_xlat1.xz); u_xlatb22 = u_xlatb2.x && u_xlatb3.x; u_xlatb22 = u_xlatb2.y && u_xlatb22; u_xlatb22 = u_xlatb3.y && u_xlatb22; if(u_xlatb22){ u_xlat3.xyz = _Tex1.sample(sampler_Tex1, u_xlat1.xz).xyz; } else { u_xlat3.xyz = FGlobals._BorderColor.xyz; } u_xlat1.xzw = select(float3(0.0, 0.0, 0.0), u_xlat3.xyz, bool3(bool3(u_xlatb22))); } else { u_xlat1.xzw = FGlobals._BorderColor.xyz; } } else { u_xlat1.x = float(0.0); u_xlat1.z = float(0.0); u_xlat1.w = float(0.0); } u_xlatb3 = (int4(FGlobals._TextureCount)>=int4(0x2, 0x3, 0x4, 0x5)); u_xlat4 = u_xlat0.zwzw + (-float4(FGlobals._Position2.x, FGlobals._Position2.y, FGlobals._Position3.x, FGlobals._Position3.y)); u_xlat2.x = sin((-FGlobals._Rotation2)); u_xlat5.x = cos((-FGlobals._Rotation2)); u_xlat6.x = (-u_xlat2.x); u_xlat6.y = u_xlat5.x; u_xlat5.x = dot(u_xlat6.yx, u_xlat4.xy); u_xlat6.z = u_xlat2.x; u_xlat5.y = dot(u_xlat6.zy, u_xlat4.xy); u_xlatb2.xy = (abs(u_xlat5.xy)=float2(0.0, 0.0)); u_xlatb4.xy = (float2(1.0, 1.0)>=u_xlat2.xy); u_xlatb8 = u_xlatb16.x && u_xlatb4.x; u_xlatb8 = u_xlatb16.y && u_xlatb8; u_xlatb8 = u_xlatb4.y && u_xlatb8; if(u_xlatb8){ u_xlat2 = _Tex2.sample(sampler_Tex2, u_xlat2.xy); } else { u_xlat2 = FGlobals._BorderColor; } u_xlat2 = select(float4(0.0, 0.0, 0.0, 0.0), u_xlat2, bool4(bool4(u_xlatb8))); } else { u_xlat2 = FGlobals._BorderColor; } u_xlat2.xyz = (-u_xlat1.xzw) + u_xlat2.xyz; u_xlat1.xzw = fma(u_xlat2.www, u_xlat2.xyz, u_xlat1.xzw); } u_xlatb2 = (float4(0.0, 0.0, 0.0, 0.0)>=float4(FGlobals._Scale3.x, FGlobals._Scale3.y, FGlobals._Scale4.x, FGlobals._Scale4.y)); u_xlati2.xy = int2((uint2(u_xlatb2.yw) * 0xffffffffu) | (uint2(u_xlatb2.xz) * 0xffffffffu)); u_xlati2.xy = ~(u_xlati2.xy); u_xlat3.x = sin((-FGlobals._Rotation3)); u_xlat4.x = cos((-FGlobals._Rotation3)); u_xlat5.x = (-u_xlat3.x); u_xlat5.y = u_xlat4.x; u_xlat4.x = dot(u_xlat5.yx, u_xlat4.zw); u_xlat5.z = u_xlat3.x; u_xlat4.y = dot(u_xlat5.zy, u_xlat4.zw); u_xlat5 = float4(FGlobals._Scale3.x, FGlobals._Scale3.y, FGlobals._Scale4.x, FGlobals._Scale4.y) * float4(0.5, 0.5, 0.5, 0.5); u_xlatb16.xy = (abs(u_xlat4.xy)=float2(0.0, 0.0)); u_xlatb4.xy = (float2(1.0, 1.0)>=u_xlat2.xz); u_xlatb8 = u_xlatb3.x && u_xlatb4.x; u_xlatb8 = u_xlatb3.y && u_xlatb8; u_xlatb8 = u_xlatb4.y && u_xlatb8; if(u_xlatb8){ u_xlat4 = _Tex3.sample(sampler_Tex3, u_xlat2.xz); } else { u_xlat4 = FGlobals._BorderColor; } u_xlat4 = select(float4(0.0, 0.0, 0.0, 0.0), u_xlat4, bool4(bool4(u_xlatb8))); } else { u_xlat4 = FGlobals._BorderColor; } u_xlat2.xzw = (-u_xlat1.xzw) + u_xlat4.xyz; u_xlat1.xzw = fma(u_xlat4.www, u_xlat2.xzw, u_xlat1.xzw); } u_xlat0 = u_xlat0 + (-float4(FGlobals._Position4.x, FGlobals._Position4.y, FGlobals._Position5.x, FGlobals._Position5.y)); u_xlat2.x = sin((-FGlobals._Rotation4)); u_xlat3.x = cos((-FGlobals._Rotation4)); u_xlat4.x = (-u_xlat2.x); u_xlat4.y = u_xlat3.x; u_xlat3.x = dot(u_xlat4.yx, u_xlat0.xy); u_xlat4.z = u_xlat2.x; u_xlat3.y = dot(u_xlat4.zy, u_xlat0.xy); u_xlatb0.xy = (abs(u_xlat3.xy)=float2(0.0, 0.0)); u_xlatb16.xy = (float2(1.0, 1.0)>=u_xlat0.xy); u_xlatb8 = u_xlatb16.x && u_xlatb2.x; u_xlatb8 = u_xlatb2.y && u_xlatb8; u_xlatb8 = u_xlatb16.y && u_xlatb8; if(u_xlatb8){ u_xlat2 = _Tex4.sample(sampler_Tex4, u_xlat0.xy); } else { u_xlat2 = FGlobals._BorderColor; } u_xlat2 = select(float4(0.0, 0.0, 0.0, 0.0), u_xlat2, bool4(bool4(u_xlatb8))); } else { u_xlat2 = FGlobals._BorderColor; } u_xlat2.xyz = (-u_xlat1.xzw) + u_xlat2.xyz; u_xlat1.xzw = fma(u_xlat2.www, u_xlat2.xyz, u_xlat1.xzw); } u_xlatb0.xy = (float2(0.0, 0.0)>=FGlobals._Scale5.xyxx.xy); u_xlatb0.x = u_xlatb0.y || u_xlatb0.x; u_xlati0 = ~((int(u_xlatb0.x) * int(0xffffffffu))); u_xlat2.x = sin((-FGlobals._Rotation5)); u_xlat3.x = cos((-FGlobals._Rotation5)); u_xlat4.x = (-u_xlat2.x); u_xlat4.y = u_xlat3.x; u_xlat3.x = dot(u_xlat4.yx, u_xlat0.zw); u_xlat4.z = u_xlat2.x; u_xlat3.y = dot(u_xlat4.zy, u_xlat0.zw); u_xlat7.xy = FGlobals._Scale5.xyxx.xy * float2(0.5, 0.5); u_xlatb7.xy = (abs(u_xlat3.xy)=float2(0.0, 0.0)); u_xlatb2.xy = (float2(1.0, 1.0)>=u_xlat0.xy); u_xlatb14.x = u_xlatb14.x && u_xlatb2.x; u_xlatb14.x = u_xlatb14.y && u_xlatb14.x; u_xlatb14.x = u_xlatb2.y && u_xlatb14.x; if(u_xlatb14.x){ u_xlat2 = _Tex5.sample(sampler_Tex5, u_xlat0.xy); } else { u_xlat2 = FGlobals._BorderColor; } u_xlat0 = select(float4(0.0, 0.0, 0.0, 0.0), u_xlat2, bool4(u_xlatb14.xxxx)); } else { u_xlat0 = FGlobals._BorderColor; } u_xlat0.xyz = (-u_xlat1.xzw) + u_xlat0.xyz; u_xlat1.xzw = fma(u_xlat0.www, u_xlat0.xyz, u_xlat1.xzw); } } else { u_xlat1.x = float(0.0); u_xlat1.z = float(0.0); u_xlat1.w = float(0.0); } output.SV_Target0.xyz = u_xlat1.xzw * float3(0.959999979, 0.959999979, 0.959999979); output.SV_Target0.w = 1.0; output.SV_Target1 = float4(0.0399999991, 0.0399999991, 0.0399999991, 0.0); output.SV_Target2.xyz = fma(input.TEXCOORD1.xyz, float3(0.5, 0.5, 0.5), float3(0.5, 0.5, 0.5)); output.SV_Target2.w = 1.0; output.SV_Target3 = float4(1.0, 1.0, 1.0, 1.0); return output; } FGlobals _TileSize _Position1 _Position2 _Position3 _Position4 _Position5(_Scale10_Scale28_Scale3@_Scale4H_Scale5P _Rotation1X _Rotation2\ _Rotation3` _Rotation4d _Rotation5h _BorderSizel_OuterGapWidthp _BorderColor _TextureCount_Tex1_Tex2_Tex3_Tex4_Tex5FGlobals