1.效果图

2.shader
"precision highp float;\n" +
"\n" +
"uniform sampler2D inputImageTexture;\n" +
"\n" +
"uniform mediump mat3 convolutionMatrix;\n" +
"\n" +
"varying vec2 textureCoordinate;\n" +
"varying vec2 leftTextureCoordinate;\n" +
"varying vec2 rightTextureCoordinate;\n" +
"\n" +
"varying vec2 topTextureCoordinate;\n" +
"varying vec2 topLeftTextureCoordinate;\n" +
"varying vec2 topRightTextureCoordinate;\n" +
"\n" +
"varying vec2 bottomTextureCoordinate;\n" +
"varying vec2 bottomLeftTextureCoordinate;\n" +
"varying vec2 bottomRightTextureCoordinate;\n" +
"\n" +
"void main()\n" +
"{\n" +
" mediump vec4 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate);\n" +
" mediump vec4 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate);\n" +
" mediump vec4 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate);\n" +
" mediump vec4 centerColor = texture2D(inputImageTexture, textureCoordinate);\n" +
" mediump vec4 leftColor = texture2D(inputImageTexture, leftTextureCoordinate);\n" +
" mediump vec4 rightColor = texture2D(inputImageTexture, rightTextureCoordinate);\n" +
" mediump vec4 topColor = texture2D(inputImageTexture, topTextureCoordinate);\n" +
" mediump vec4 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate);\n" +
" mediump vec4 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate);\n" +
"\n" +
" mediump vec4 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2];\n" +
" resultColor += leftColor * convolutionMatrix[1][0] + centerColor * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2];\n" +
" resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2];\n" +
"\n" +
" gl_FragColor = resultColor;\n" +
3.原理
是周围的9个点乘以3x3的矩阵。
该文章介绍了一种使用OpenGL着色器(shader)进行图像处理的方法,特别是通过3x3的卷积矩阵对周围9个像素点进行操作,以改变图像的视觉效果。着色器代码涉及了纹理坐标和从输入纹理中采样颜色的步骤,最终将计算后的颜色赋值给新的像素点。
283

被折叠的 条评论
为什么被折叠?



