第十章 OpenGL ES 基础-图像USM锐化
第一章 OpenGL ES 基础-屏幕、纹理、顶点坐标
第二章 OpenGL ES 基础-GLSL语法简单总结
第三章 OpenGL ES 基础-GLSL渲染纹理
第四章 OpenGL ES 基础-位移、缩放、旋转原理
第五章 OpenGL ES 基础-透视投影矩阵与正交投影矩阵
第六章 OpenGL ES 基础-FBO、VBO理解与运用
第七章 OpenGL ES 基础-输入输出框架思维
第八章 OpenGL ES 基础-MVP矩阵理解
第九章 OpenGL ES 基础-高斯模糊原理
第十章 OpenGL ES 基础-图像USM锐化
第十一章 OpenGL ES 基础-基础光照
第十二章 OpenGL ES 基础-色温、色调、亮度、对比度、饱和度、高光
第十三章 OpenGL ES-RGB、HSV、HSL模型介绍
第十四章 OpenGL ES-方框模糊(均值模糊)
第十五章 OpenGL ES-VR 全景模式原理
第十六章 OpenGL ES-桶形畸变算法-常用VR
为什么要锐化?
图片调整后的颜色应用于原始图像的RGB值,以使得图像看起来更加清晰和/或改变外观。
流程
1、图片高斯模糊
2、获取高斯模糊像素点,根据USM锐化公式计算每个像素点锐化之后的像素
USM公式
image为原图图片
gauss为原图进行高斯模糊图片
mask=image.rgb - gauss.rgb
rgba=vec4(vec3(image.rgb + factor * mask.rgb), image.a);
GLSL代码
static const char* usm_vertex_shader ="attribute vec4 position;\n"
"attribute vec2 texCoord;\n"
"varying vec2 vTexCoord;\n"
"\n"
"void main()\n"
"{\n"
" gl_Position = position;\n"
" vTexCoord = vec2(texCoord.x,texCoord.y);\n"
"}";
static const char* usm_fragment_shader ="precision highp float;\n"
"varying vec2 vTexCoord;\n"
"uniform sampler2D texture;\n"
"uniform sampler2D texture1;\n"
"uniform mediump float factor;\n"
"\n"
"void main()\n"
"{\n"
" vec4 image = texture2D(texture, vTexCoord);\n"
" vec4 gauss = texture2D(texture1, vTexCoord);\n"
" vec3 mask = vec3(image.rgb - gauss.rgb);\n"
" gl_FragColor = vec4(vec3(image.rgb + factor * mask.rgb), image.a);\n"
"}";