Spaces:
Build error
Build error
uniform sampler2D InSampler; | |
in vec2 texCoord; | |
in vec2 sampleStep; | |
uniform float Radius; | |
out vec4 fragColor; | |
// This shader relies on GL_LINEAR sampling to reduce the amount of texture samples in half. | |
// Instead of sampling each pixel position with a step of 1 we sample between pixels with a step of 2. | |
// In the end we sample the last pixel with a half weight, since the amount of pixels to sample is always odd (actualRadius * 2 + 1). | |
void main() { | |
vec4 blurred = vec4(0.0); | |
float actualRadius = round(Radius); | |
for (float a = -actualRadius + 0.5; a <= actualRadius; a += 2.0) { | |
blurred += texture(InSampler, texCoord + sampleStep * a); | |
} | |
blurred += texture(InSampler, texCoord + sampleStep * actualRadius) / 2.0; | |
fragColor = blurred / (actualRadius + 0.5); | |
} | |