cbuffer _33 { float4 _33_nv_color : packoffset(c0); float4 _33_nv_desaturation_params : packoffset(c1); float4 _33_nv_light_params : packoffset(c2); float2 _33_resolution : packoffset(c3); float2 _33_ztw_params : packoffset(c3.z); float _33_nv_intensity : packoffset(c4); float _33_darkness : packoffset(c4.y); float _33_timer : packoffset(c4.z); uint _33_render_darkness : packoffset(c4.w); }; Texture2D gameview : register(t0); SamplerState _gameview_sampler : register(s0); Texture2D lightmap : register(t1); SamplerState _lightmap_sampler : register(s1); static float2 vUV; static float4 fragColor; struct SPIRV_Cross_Input { float2 vUV : TEXCOORD0; }; struct SPIRV_Cross_Output { float4 fragColor : SV_Target0; }; static bool use_nightvision; float hmix(float a, float b) { return frac(sin((a * 12.98980045318603515625f) + b) * 43758.546875f); } float hash3(float a, float b, float c) { float param = a; float param_1 = b; float ab = hmix(param, param_1); float param_2 = a; float param_3 = c; float ac = hmix(param_2, param_3); float param_4 = b; float param_5 = c; float bc = hmix(param_4, param_5); float param_6 = ac; float param_7 = bc; float param_8 = ab; float param_9 = hmix(param_6, param_7); return hmix(param_8, param_9); } float3 getnoise3(float2 p) { float param = p.x; float param_1 = p.y; float param_2 = floor(_33_timer / 3.0f); return hash3(param, param_1, param_2).xxx; } void frag_main() { use_nightvision = _33_nv_intensity > 0.0f; float2 uv = vUV; float4 color = gameview.Sample(_gameview_sampler, uv); float2 param = uv; float3 _noise = getnoise3(param); float3 _129 = color.xyz + ((_noise * _33_ztw_params.x) + _33_ztw_params.y.xxx); color = float4(_129.x, _129.y, _129.z, color.w); float4 light = lightmap.Sample(_lightmap_sampler, uv); if (use_nightvision) { float luminance = dot(color.xyz, float3(0.2989999949932098388671875f, 0.58700001239776611328125f, 0.114000000059604644775390625f)); float lightLuminance = max(light.x, max(light.y, light.z)); float3 grayscale = (luminance * _33_nv_intensity).xxx; float lightIntensity = (smoothstep(_33_nv_desaturation_params.x, _33_nv_desaturation_params.y, lightLuminance) * _33_nv_desaturation_params.z) + _33_nv_desaturation_params.w; float3 _184 = lerp(grayscale, color.xyz, lightIntensity.xxx); color = float4(_184.x, _184.y, _184.z, color.w); lightIntensity = (smoothstep(_33_nv_light_params.x, _33_nv_light_params.y, lightLuminance) * _33_nv_light_params.z) + _33_nv_light_params.w; fragColor = float4(color.xyz * lightIntensity, color.w); } else { float3 _217 = color.xyz * light.xyz; color = float4(_217.x, _217.y, _217.z, color.w); fragColor = float4(color.xyz, color.w); } } 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; }