着色器Shader及Shader的图像处理,Shader Demo

  android-gpuimage里给出了很多滤镜效果,本质都是用shader处理图像。
  使用OpenGL做图像处理,最主要的就是FragShader的实现,以下是几种已经实现了的shader。有黑白照处理,Sephia特效,反相,高斯模糊,Median模糊,锐化,腐蚀,膨胀,拉普拉斯边缘检测等。

-- Android平台OpenGL SE Camera滤镜实现Demo- https://github.com/andev009/AndroidShaderDemo
Image processing based on Shader for Android platform
《Android平台OpenGL SE Camera滤镜实现》
《Android基于Shader的图像处理(1)-灰度和卷积》
《Android基于Shader的图像处理(2)-帧缓冲区对象FBO》
《Android基于Shader的图像处理(3)-马赛克》
《Android基于Shader的图像处理(4)-Sobel边缘检测》
《Android基于Shader的图像处理(5)-Canny边缘检测》
《Android基于Shader的图像处理(6)-Camera开发》
《Android基于Shader的图像处理(7)-颜色表LUT》
《Android基于Shader的图像处理(8)-仿抖音缩放特效》
《Android基于Shader的图像处理(9)-仿抖音闪白特效》
《Android基于Shader的图像处理(10)-仿抖音毛刺特效》
《Android基于Shader的图像处理(11)-仿抖音灵魂出窍》
《Android基于Shader的图像处理(12)-仿抖音抖动特效》
《Android基于Shader的图像处理(13)-相机分屏预览》
《Android基于Shader的图像处理(14)-仿抖音分屏预览》
《Android Native层 OpenGL ES开发》
《Android java层封装EGL》

-- 从Cocos2d-x 2.x版本开始,Cocos2d-x底层图形渲染使用OpenGL ES2.x新特性可编程着色器(Shader),
Shader的使用流程:
1、创建着色器对象:glCreateShader
2、着色器对象关联着色器代码:glShaderSource
3、把着色器源代码编译成目标代码:glCompileShader
4、验证着色器是否已经变异通过:glGetShaderiv、glGetShaderInfoLog
5、创建一个着色器程序:glCreatePragram
6、把着色器链接到着色器程序中:glAttachShader
7、链接着色器程序:glLinkProgram
8、验证着色器程序是否链接成功:glGetProgramiv、glGetProgramInfoLog
9、使用着色器程序进行定点或片段处理:glUseProgram

-- 着色器运算(Shader Arithmetic)
• 顶点处理器基于32位浮点值工作:Vertex Shader使用浮点表示整数。为了避免32位值,设置Vertex Shader程序的输出varing的精度为mediump或lowp。
• Fragment Shader使用16位浮点值工作:其构成为:sign;5位指数,以抵消15;10位尾数,用一个隐含的最显著1位

-- Shader优化, Shader代码实现了我们的算法,想要大幅降低Shader的耗时,降低图像质量实现减少计算量是最有效的办法。在尽量可能保证质量的基础上进行优化,一般有这些办法:
(1)避免在Shader中使用循环或分支判断语句
(2)避免依赖纹理读取。即,避免在Fragment Shader计算纹理坐标,将计算提前到Vertex Shader,减少计算次数。
(3)避免交换纹理坐标分量。这会造成依赖纹理读取。
(4)避免在Fragment Shader做pow等数据计算。同样的,尽可能将计算提前到Vertex Shader,减少计算次数
(5)使用更少的颜色分量参与计算。选择影响结果的主要颜色分量参与计算,这也是减少计算量的有效方法。
(6)降低数据精度。比如,从Vertex Shader传递到Fragment Shader的纹理坐标精度从highp改成mediump也会降低一些消耗。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值