你的位置:首页 > 软件开发 > 操作系统 > iOS滤镜实现之LOMO(美图秀秀经典LOMO)

iOS滤镜实现之LOMO(美图秀秀经典LOMO)

发布时间:2016-10-03 03:00:09
LOMO追求鲜艳色彩,随意、自由的态度,是一种经常使用的滤镜,今天介绍一下iOS 中LOMO滤镜的实现首先它有3张输入图像1.我们要处理的图像。即我们要应用LOMO滤镜的图像2      3在gpuimage中多张输入图像的滤镜需要自己写。在这里我参照本身提供的GPUImageT ...

iOS滤镜实现之LOMO(美图秀秀经典LOMO)

  LOMO追求鲜艳色彩,随意、自由的态度,是一种经常使用的滤镜,今天介绍一下iOS 中LOMO滤镜的实现

首先它有3张输入图像

1.我们要处理的图像。即我们要应用LOMO滤镜的图像

2iOS滤镜实现之LOMO(美图秀秀经典LOMO)      

3iOS滤镜实现之LOMO(美图秀秀经典LOMO)

在gpuimage中多张输入图像的滤镜需要自己写。在这里我参照本身提供的GPUImageTwoInputFilter,自己写了GPUImageThreeInputFilter,用于接收3张输入图像的滤镜。它们都是通过滤镜组的继承来实现,多重滤镜。

  

  片段着色器

NSString *const kFWLomofiShaderString = SHADER_STRING( precision lowp float; varying highp vec2 textureCoordinate; uniform sampler2D inputImageTexture; uniform sampler2D inputImageTexture2; uniform sampler2D inputImageTexture3; void main() {     vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;//获取要处理图像的rgb值向量     vec2 red = vec2(texel.r, 0.16666);   vec2 green = vec2(texel.g, 0.5);   vec2 blue = vec2(texel.b, 0.83333);//使要处理的图像和柔光混合,生成新的像素     texel.rgb = vec3(           texture2D(inputImageTexture2, red).r,           texture2D(inputImageTexture2, green).g,           texture2D(inputImageTexture2, blue).b);//前面生成新的像素再与第二个输入图像的像素进行混合   //使用第三个图像作为暗角模板与前面的像素混合   vec2 tc = (2.0 * textureCoordinate) - 1.0;   float d = dot(tc, tc);   vec2 lookup = vec2(d, texel.r);   texel.r = texture2D(inputImageTexture3, lookup).r;   lookup.y = texel.g;   texel.g = texture2D(inputImageTexture3, lookup).g;   lookup.y = texel.b;   texel.b  = texture2D(inputImageTexture3, lookup).b;
//生成最终的LOMO效果
gl_FragColor = vec4(texel,1.0); } );

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:iOS滤镜实现之LOMO(美图秀秀经典LOMO)

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。