/** * @ Version: SCREEN SPACE SHADERS - UPDATE 20 * @ Description: Volumetric Blur Phase * @ Modified time: 2024-02-21 13:02 * @ Author: https://www.moddb.com/members/ascii1457 * @ Mod: https://www.moddb.com/mods/stalker-anomaly/addons/screen-space-shaders */ #include "common.h" #ifndef USE_MSAA Texture2D vol_buffer; #else #ifndef SM_5 Texture2DMS vol_buffer; #else Texture2DMS vol_buffer; #endif #endif uniform float4 blur_setup; // Buffer Res [ x:width | y:height | z:scale | w:offset size ] //uniform float4 shader_param_6; float4 main ( p_screen I ) : SV_Target { float4 Blur = 0; #ifndef USE_MSAA // Scale sample to use the linear filtering float2 tc = I.tc0.xy * blur_setup.ww; float2 offset = ((blur_setup.zz + 0.5f) / (blur_setup.xy / blur_setup.ww));// * shader_param_6.x; Blur += vol_buffer.SampleLevel(smp_linear, tc + offset, 0); Blur += vol_buffer.SampleLevel(smp_linear, tc - offset, 0); offset = float2(-offset.x, offset.x); Blur += vol_buffer.SampleLevel(smp_linear, tc + offset, 0); Blur += vol_buffer.SampleLevel(smp_linear, tc - offset, 0); #else float2 tc = I.tc0.xy; float2 offset = ((blur_setup.zz + 0.5f) / blur_setup.xy);// * shader_param_6.x; Blur += vol_buffer.Load(int3((tc + offset) * blur_setup.xy, 0), 0); Blur += vol_buffer.Load(int3((tc - offset) * blur_setup.xy, 0), 0); offset = float2(-offset.x, offset.x); Blur += vol_buffer.Load(int3((tc + offset) * blur_setup.xy, 0), 0); Blur += vol_buffer.Load(int3((tc - offset) * blur_setup.xy, 0), 0); #endif return Blur / 4.0f; }