e4s-sdk/gamedata/shaders/d3d11/ssao_blur.ps.hlsl
2026-06-17 23:06:51 +03:00

37 lines
1,002 B
HLSL

uniform float4 screen_res;
uniform Texture2D s_occ;
float ssao_blur_ps(float2 centerTC)
{
// low weight center sample - will be used on edges
float fSumWeight = 0.025f;
float2 centerData = s_occ.Sample(smp_nofilter, centerTC);
float fOcclusion = centerData.r * fSumWeight;
float centerDepth = centerData.g;
float2 arrOffsets[4] =
{
float2(1, -1),
float2(-1, -1),
float2(1, 1),
float2(-1, 1)
};
[unroll]
for (int i = 0; i < 4; i++)
{
float2 sampleTC = centerTC + pos_decompression_params2.zw * arrOffsets[i];
float2 sampleData = s_occ.Sample(smp_nofilter, sampleTC);
float fDepth = sampleData.g;
float fDiff = 8 * abs(fDepth - centerDepth) / min(fDepth, centerDepth);
float fWeight = saturate(1 - fDiff);
fOcclusion += sampleData.r * fWeight;
fSumWeight += fWeight;
}
fOcclusion /= fSumWeight;
return fOcclusion;
}