EmergentOrganization/cell-rpg

View on GitHub
android/assets/resources/shaders/tron/Tron_Frag_Blur.glsl

Summary

Maintainability
Test Coverage
#version 120

#ifdef GL_ES
precision mediump float;
#endif
varying vec2[17] v_pixelCoords;
uniform sampler2D u_texture;
uniform float u_brightness;

void main() {
    vec4 pixel = texture2D(u_texture,v_pixelCoords[8]);

    float[10] weights;
    weights[0] = 1.0;
    weights[1] = 0.9f;
    weights[2] = 0.8f;
    weights[3] = 0.7f;
    weights[4] = 0.6f;
    weights[5] = 0.5f;
    weights[6] = 0.4f;
    weights[7] = 0.3f;
    weights[8] = 0.2f;
    weights[9] = 0.1f;

    float normalization = (weights[0] + weights[1] + weights[2] + weights[3] + weights[4] + weights[5] +
                                                weights[6] + weights[7] + weights[8] + weights[9]);
    weights[0] = weights[0] / normalization;
    weights[1] = weights[1] / normalization;
    weights[2] = weights[2] / normalization;
    weights[3] = weights[3] / normalization;
    weights[4] = weights[4] / normalization;
    weights[5] = weights[5] / normalization;
    weights[6] = weights[6] / normalization;
    weights[7] = weights[7] / normalization;
    weights[8] = weights[8] / normalization;
    weights[9] = weights[9] / normalization;

    vec4 color = vec4(0.0, 0.0, 0.0, 0.0);
    color += texture2D(u_texture, v_pixelCoords[0]) * weights[8];
    color += texture2D(u_texture, v_pixelCoords[1]) * weights[7];
    color += texture2D(u_texture, v_pixelCoords[2]) * weights[6];
    color += texture2D(u_texture, v_pixelCoords[3]) * weights[5];
    color += texture2D(u_texture, v_pixelCoords[4]) * weights[4];
    color += texture2D(u_texture, v_pixelCoords[5]) * weights[3];
    color += texture2D(u_texture, v_pixelCoords[6]) * weights[2];
    color += texture2D(u_texture, v_pixelCoords[7]) * weights[1];
    color += pixel * weights[0];
    color += texture2D(u_texture, v_pixelCoords[9]) * weights[1];
    color += texture2D(u_texture, v_pixelCoords[10]) * weights[2];
    color += texture2D(u_texture, v_pixelCoords[11]) * weights[3];
    color += texture2D(u_texture, v_pixelCoords[12]) * weights[4];
    color += texture2D(u_texture, v_pixelCoords[13]) * weights[5];
    color += texture2D(u_texture, v_pixelCoords[14]) * weights[6];
    color += texture2D(u_texture, v_pixelCoords[15]) * weights[7];
    color += texture2D(u_texture, v_pixelCoords[16]) * weights[8];

    color.a = u_brightness;
    gl_FragColor = color;
}