Blur changes to avoid darkening the edges

This commit is contained in:
RaveYard 2023-09-06 19:44:53 +02:00 committed by Christoph Oelckers
parent eb7e3faf06
commit dae78e2a2c

View file

@ -4,20 +4,29 @@ layout(set = 0, binding = 0) uniform sampler2D tex;
layout(location = 0) in vec3 worldpos;
layout(location = 0) out vec4 fragcolor;
vec4 centerFragColor;
vec4 clampedSample(vec4 f)
{
return f != vec4(0, 0, 0, 0) ? f : centerFragColor;
}
void main()
{
ivec2 size = textureSize(tex, 0);
vec2 texCoord = gl_FragCoord.xy / vec2(size);
centerFragColor = textureOffset(tex, texCoord, ivec2(0, 0));
#if defined(BLUR_HORIZONTAL)
fragcolor =
textureOffset(tex, texCoord, ivec2( 0, 0)) * 0.5 +
textureOffset(tex, texCoord, ivec2( 1, 0)) * 0.25 +
textureOffset(tex, texCoord, ivec2(-1, 0)) * 0.25;
centerFragColor * 0.5 +
clampedSample(textureOffset(tex, texCoord, ivec2( 1, 0))) * 0.25 +
clampedSample(textureOffset(tex, texCoord, ivec2(-1, 0))) * 0.25;
#else
fragcolor =
textureOffset(tex, texCoord, ivec2(0, 0)) * 0.5 +
textureOffset(tex, texCoord, ivec2(0, 1)) * 0.25 +
textureOffset(tex, texCoord, ivec2(0,-1)) * 0.25;
centerFragColor * 0.5 +
clampedSample(textureOffset(tex, texCoord, ivec2(0, 1))) * 0.25 +
clampedSample(textureOffset(tex, texCoord, ivec2(0,-1))) * 0.25;
#endif
}