procedural-3d-engine/shaders/slang/ssao/blur.slang
2025-05-19 18:20:23 +02:00

30 lines
No EOL
626 B
Text

/* Copyright (c) 2025, Sascha Willems
*
* SPDX-License-Identifier: MIT
*
*/
import types;
Sampler2D samplerSSAO;
[shader("fragment")]
float4 fragmentMain(VSOutput input)
{
const int blurRange = 2;
int n = 0;
int2 texDim;
samplerSSAO.GetDimensions(texDim.x, texDim.y);
float2 texelSize = 1.0 / (float2)texDim;
float result = 0.0;
for (int x = -blurRange; x <= blurRange; x++)
{
for (int y = -blurRange; y <= blurRange; y++)
{
float2 offset = float2(float(x), float(y)) * texelSize;
result += samplerSSAO.Sample(input.UV + offset).r;
n++;
}
}
return result / (float(n));
}