convolution3x3FragmentShader top-level property
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;
}
"""
]);