fyrox-impl 0.36.2

Feature-rich, easy-to-use, 2D/3D game engine with a scene editor. Like Godot, but in Rust.
Documentation
uniform sampler2D image;

layout (std140) uniform Uniforms {
    mat4 worldViewProjection;
    vec2 pixelSize;
    bool horizontal;
};

in vec2 texCoord;

out vec4 outColor;

void main()
{
    const float weights[5] = float[](0.227027, 0.1945946, 0.1216216, 0.054054, 0.016216);

    vec4 center = texture(image, texCoord);

    vec3 result = center.rgb * weights[0];

    if (horizontal) {
        for (int i = 1; i < 5; ++i) {
            float fi = float(i);

            result += texture(image, texCoord + vec2(pixelSize.x * fi, 0.0)).rgb * weights[i];
            result += texture(image, texCoord - vec2(pixelSize.x * fi, 0.0)).rgb * weights[i];
        }
    } else {
        for (int i = 1; i < 5; ++i) {
            float fi = float(i);

            result += texture(image, texCoord + vec2(0.0, pixelSize.y * fi)).rgb * weights[i];
            result += texture(image, texCoord - vec2(0.0, pixelSize.y * fi)).rgb * weights[i];
        }
    }

    outColor = vec4(result, center.a);
}