cbuffer fsConstants : register(b0) { float2 _92_zoom_to_world_params : packoffset(c0); float _92_timer : packoffset(c0.z); float _92_lutSize : packoffset(c0.w); float2 _92_resolution : packoffset(c1); float _92_unused_was_lutAlpha : packoffset(c1.z); float _92_lightMul : packoffset(c1.w); float _92_lightAdd : packoffset(c2); uint _92_debugShowLut : packoffset(c2.y); }; Texture2D gameview : register(t0); SamplerState _gameview_sampler : register(s0); Texture3D sunLut : register(t3); SamplerState _sunLut_sampler : register(s3); Texture3D lightLut : register(t4); SamplerState _lightLut_sampler : register(s4); Texture2D lightmap : register(t1); SamplerState _lightmap_sampler : register(s1); Texture2D detailLightmap : register(t2); SamplerState _detailLightmap_sampler : register(s2); static float2 vUV; static float4 fragColor; struct SPIRV_Cross_Input { float2 vUV : TEXCOORD0; }; struct SPIRV_Cross_Output { float4 fragColor : SV_Target0; }; float3 colorToLut16Index(float3 inputColor) { return (inputColor * 0.9375f) + 0.03125f.xxx; } void frag_main() { float2 uv = vUV; float4 color = gameview.Sample(_gameview_sampler, uv); float3 param = color.xyz; float3 lookupIndex = colorToLut16Index(param); float4 sunlitColor = float4(sunLut.SampleLevel(_sunLut_sampler, lookupIndex, 0.0f).xyz, color.w); float4 artificiallyLitColor = float4(lightLut.SampleLevel(_lightLut_sampler, lookupIndex, 0.0f).xyz, color.w); float4 light = lightmap.Sample(_lightmap_sampler, uv) + detailLightmap.Sample(_detailLightmap_sampler, uv); light = clamp(light, 0.0f.xxxx, 1.0f.xxxx); float4 _88 = light; float3 _104 = (_88.xyz * _92_lightMul.xxx) + _92_lightAdd.xxx; light.x = _104.x; light.y = _104.y; light.z = _104.z; float4 finalColor = lerp(sunlitColor, artificiallyLitColor, light); fragColor = finalColor; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { vUV = stage_input.vUV; frag_main(); SPIRV_Cross_Output stage_output; stage_output.fragColor = fragColor; return stage_output; }