#version 330 layout(std140) uniform SamplerInfo { vec2 OutSize; vec2 InSize; }; layout(std140) uniform BlurConfig { vec2 BlurDir; float Radius; }; uniform sampler2D InSampler; in vec2 texCoord; out vec4 fragColor; void main() { vec2 oneTexel = 1.0 / InSize; vec2 sampleStep = oneTexel * BlurDir; vec4 blurred = vec4(0.0); float radius = 2.0; for (float a = -radius + 0.5; a <= radius; a += 2.0) { blurred += texture(InSampler, texCoord + sampleStep * a); } blurred += texture(InSampler, texCoord + sampleStep * radius) / 2.0; fragColor = vec4((blurred / (radius + 0.5)).rgb, blurred.a); }