convolution3x3FragmentShader top-level property

ShaderObject convolution3x3FragmentShader
final

Implementation

final ShaderObject convolution3x3FragmentShader =
    ShaderObject("Convolution3x3F")
      ..AddUniformVars([uTexture, uColor, uConvolutionMatrix])
      ..SetBody([
        """
void main() {
    mat3 m = ${uConvolutionMatrix};
    ivec2 center = ivec2(gl_FragCoord.xy);
    vec3 sum = vec3(0.0, 0.0, 0.0);
    for (int x = -1; x <= 1; x++) {
      for (int y = -1; y <= 1; y++) {
        sum += m[x+1][y+1] * texelFetch(${uTexture}, center + ivec2(x, y), 0).rgb;
      }
    }
    ${oFragColor}.rgb = ${uColor} + sum;
}

"""
      ]);