cbuffer passParams : register(b1) { float _156_passTime : packoffset(c0); }; Texture2D mask1Texture : register(t1); SamplerState _mask1Texture_sampler : register(s1); Texture2D atlasTexture : register(t0); SamplerState _atlasTexture_sampler : register(s0); static float4 gl_FragCoord; static uint vFlags; static float2 vUV; static float4 fragColor; static float3 vTint; static float4 lightColor; struct SPIRV_Cross_Input { float2 vUV : TEXCOORD0; nointerpolation uint vFlags : TEXCOORD1; float3 vTint : TEXCOORD2; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 fragColor : SV_Target0; float4 lightColor : SV_Target1; }; uint2 spvTextureSize(Texture2D Tex, uint Level, out uint Param) { uint2 ret; Tex.GetDimensions(Level, ret.x, ret.y, Param); return ret; } float4 getFragColor(float4 color, float3 tint, uint flags) { float4 finalColor = float4(color.xyz * tint, color.w); bool4 _48 = ((flags & 4u) != 0u).xxxx; return float4(_48.x ? 0.0f.xxxx.x : finalColor.x, _48.y ? 0.0f.xxxx.y : finalColor.y, _48.z ? 0.0f.xxxx.z : finalColor.z, _48.w ? 0.0f.xxxx.w : finalColor.w); } float4 getLightColor(float4 color, float mask, uint flags) { if ((flags & 36u) != 0u) { return float4(color.xyz * (mask * mask), 0.0f); } float _73; if ((flags & 64u) == 0u) { _73 = color.w; } else { _73 = 0.0f; } return float4(0.0f, 0.0f, 0.0f, _73); } void frag_main() { uint _101_dummy_parameter; float mask = mask1Texture.SampleLevel(_mask1Texture_sampler, (gl_FragCoord.xy * 0.25f) / float2(int2(spvTextureSize(mask1Texture, uint(0), _101_dummy_parameter))), 0.0f).w; mask = lerp(float(((vFlags & 65280u) >> uint(8)) >> uint(1)) / 127.0f, 1.0f, mask); if ((vFlags & 256u) == 0u) { mask = 1.0f; } float4 color = atlasTexture.Sample(_atlasTexture_sampler, vUV) * mask; float4 param = color; float3 param_1 = vTint; uint param_2 = vFlags; fragColor = getFragColor(param, param_1, param_2); float4 param_3 = color; float param_4 = 1.0f; uint param_5 = vFlags; lightColor = getLightColor(param_3, param_4, param_5); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; vFlags = stage_input.vFlags; vUV = stage_input.vUV; vTint = stage_input.vTint; frag_main(); SPIRV_Cross_Output stage_output; stage_output.fragColor = fragColor; stage_output.lightColor = lightColor; return stage_output; }