#include #include using namespace metal; struct main0_out { float4 out_var_SV_Target0 [[color(0)]]; }; struct main0_in { float2 in_var_TEXCOORD0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d ColorTexture [[texture(0)]], texture2d EmissiveTexture [[texture(1)]], texture2d SsaoTexture [[texture(2)]], sampler Sampler0 [[sampler(0)]], sampler Sampler1 [[sampler(1)]], sampler Sampler2 [[sampler(2)]]) { main0_out out = {}; float2 _45 = in.in_var_TEXCOORD0; _45.y = (_45.y * (-1.0)) + 1.0; float4 _53 = ColorTexture.sample(Sampler0, _45); float3 _54 = _53.xyz; float3 _68; int _71; _68 = EmissiveTexture.sample(Sampler1, _45).xyz * 0.2270270287990570068359375; _71 = 0; float3 _69; for (; _71 < 5; _68 = _69, _71++) { _69 = _68; for (int _79 = 0; _79 < 5; ) { float2 _87 = float2(float(_71) - 2.5, float(_79)) * float2(0.001953125); _69 = (_69 + (EmissiveTexture.sample(Sampler1, (_45 + _87)).xyz * float3(0.039999999105930328369140625))) + (EmissiveTexture.sample(Sampler1, (_45 - _87)).xyz * float3(0.039999999105930328369140625)); _79++; continue; } } float3 _107 = ((powr((_54 * (float3(1.0) + (_54 * float3(0.00999999977648258209228515625)))) / (float3(1.0) + _54), float3(0.4545454680919647216796875)) + (_68 * 0.0500000007450580596923828125)) * 1.0) * SsaoTexture.sample(Sampler2, _45).x; out.out_var_SV_Target0 = float4(((_107.x * (1.0 + (9.9999999747524270787835121154785e-07 * EmissiveTexture.sample(Sampler1, _45).x))) * (1.0 + (9.9999999747524270787835121154785e-07 * ColorTexture.sample(Sampler0, _45).x))) * (1.0 + (9.9999999747524270787835121154785e-07 * SsaoTexture.sample(Sampler2, _45).x)), _107.yz, 1.0); return out; }