Nashville是Instagram众多滤镜中最惊艳的一款,独特的奶昔色调赋予照片童话般的唯美感觉。
适用范围:营造浪漫唯美的感觉。
的确如此啊
有2张输入图像
顶点着色
有2组坐标
NSString *const kGPUImageTwoInputTextureVertexShaderString = SHADER_STRING
(
attribute vec4 position;
//输入的坐标
attribute vec4 inputTextureCoordinate;
attribute vec4 inputTextureCoordinate2;
//输出的坐标,与片段着色器
varying vec2 textureCoordinate;
varying vec2 textureCoordinate2; void main()
{
//告诉片段着色器,我在处理哪些像素
gl_Position = position;
textureCoordinate = inputTextureCoordinate.xy;
textureCoordinate2 = inputTextureCoordinate2.xy;
}
);
片段着色
NSString *const kFWNashvilleShaderString = SHADER_STRING
(
precision lowp float; varying highp vec2 textureCoordinate; uniform sampler2D inputImageTexture;
uniform sampler2D inputImageTexture2; void main()
{
vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
texel = vec3(
texture2D(inputImageTexture2, vec2(texel.r, .16666)).r,
texture2D(inputImageTexture2, vec2(texel.g, .5)).g,
texture2D(inputImageTexture2, vec2(texel.b, .83333)).b);
gl_FragColor = vec4(texel, 1.0);
}
);
 初始化
- (id)init
{
if (!(self = [super init]))
{
return nil;
} UIImage *image = [UIImage imageNamed:@"nashvilleMap.png"]; imageSource = [[GPUImagePicture alloc] initWithImage:image];
FWFilter1 *filter = [[FWFilter1 alloc] init]; [self addFilter:filter];
[imageSource addTarget:filter atTextureLocation:];
[imageSource processImage]; self.initialFilters = [NSArray arrayWithObjects:filter, nil];
self.terminalFilter = filter; return self;
}


//
// FWNashvilleFilter.h
// FWMeituApp
//
// Created by hzkmn on 16/1/8.
// Copyright © 2016年 ForrestWoo co,.ltd. All rights reserved.
// #import "GPUImageTwoInputFilter.h" @interface FWFilter1 : GPUImageTwoInputFilter @end @interface FWNashvilleFilter : GPUImageFilterGroup
{
GPUImagePicture *imageSource ;
} @end

//
// FWNashvilleFilter.m
// FWMeituApp
//
// Created by hzkmn on 16/1/8.
// Copyright © 2016年 ForrestWoo co,.ltd. All rights reserved.
// #import "FWNashvilleFilter.h" NSString *const kFWNashvilleShaderString = SHADER_STRING
(
precision lowp float; varying highp vec2 textureCoordinate; uniform sampler2D inputImageTexture;
uniform sampler2D inputImageTexture2; void main()
{
vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
texel = vec3(
texture2D(inputImageTexture2, vec2(texel.r, .)).r,
texture2D(inputImageTexture2, vec2(texel.g, .)).g,
texture2D(inputImageTexture2, vec2(texel.b, .)).b);
gl_FragColor = vec4(texel, 1.0);
}
); @implementation FWFilter1 - (id)init;
{
if (!(self = [super initWithFragmentShaderFromString:kFWNashvilleShaderString]))
{
return nil;
} return self;
} @end @implementation FWNashvilleFilter - (id)init
{
if (!(self = [super init]))
{
return nil;
} UIImage *image = [UIImage imageNamed:@"nashvilleMap.png"]; imageSource = [[GPUImagePicture alloc] initWithImage:image];
FWFilter1 *filter = [[FWFilter1 alloc] init]; [self addFilter:filter];
[imageSource addTarget:filter atTextureLocation:];
[imageSource processImage]; self.initialFilters = [NSArray arrayWithObjects:filter, nil];
self.terminalFilter = filter; return self;
} @end

原图

效果图

完整项目代码查看我在github

我们再来看几组效果

  

 

iOS滤镜实现之Nashville【instagram】的更多相关文章

  1. 图像滤镜艺术---Photoshop实现Instagram之Sierra滤镜

    原文:图像滤镜艺术---Photoshop实现Instagram之Sierra滤镜 本文介绍PS实现Instagram中的Sierra滤镜,内容如下: 先看下效果图: 下面是具体实现步骤: 1. To ...

  2. 图像滤镜艺术---Photoshop实现Instagram之Mayfair滤镜效果

    原文:图像滤镜艺术---Photoshop实现Instagram之Mayfair滤镜效果 本文介绍一下如何使用Photoshop来实现Instagram中的Mayfair滤镜的效果. 以上就是这个滤镜 ...

  3. 图像滤镜艺术---Photoshop实现Instagram Amaro滤镜特效

    原文:图像滤镜艺术---Photoshop实现Instagram Amaro滤镜特效 本文是我收集的一些使用Photoshop来实现Instagram滤镜的一些内容,在这里跟大家分享一下,这些效果是完 ...

  4. iOS滤镜系列-滤镜开发概览

    概述 滤镜最早的出现应该是应用在相机镜头前实现自然光过滤和调色的镜片,然而在软件开发中更多的指的是软件滤镜,是对镜头滤镜的模拟实现.当然这种方式更加方便快捷,缺点自然就是无法还原拍摄时的真实场景,例如 ...

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

    LOMO追求鲜艳色彩,随意.自由的态度,是一种经常使用的滤镜,今天介绍一下iOS 中LOMO滤镜的实现 首先它有3张输入图像 1.我们要处理的图像.即我们要应用LOMO滤镜的图像 2 3 在gpuim ...

  6. Android Animation学习 实现 IOS 滤镜退出动画

    IOS的用户体验做的很好,其中一点很重要的地方就是动画效果. 最近在学习Android的Animation,简单实现了一个IOS相机滤镜退出的动画: 布局文件:activity_animation_d ...

  7. iOS滤镜功能

    一.iOS自带滤镜 1.CoreImage 使用苹果自带的CoreImage框架对图片进行处理,用CoreImage框架里的CIFilter对图片进行滤镜处理, 首先我们应该了解下CoreImage框 ...

  8. iOS 滤镜 转载,原文见正文首行链接

    转载自:http://blog.sina.com.cn/s/blog_5fb39f9101018gv7.html 直接上代码了: // // ViewController.m // 图片模糊处理 // ...

  9. ios滤镜

    现在很多滤镜效果都写好了,搬运工的我直接拿来用(感谢

随机推荐

  1. 千呼万唤始出来!—— GG(高仿QQ)终于有移动端了!(技术原理、实现、源码)

    首先要感谢大家一直以来对于GG的关注和支持!GG的不断完善与大家的支持分不开! 从2013年最初的GG1.0,到后来陆续增加了网盘功能.远程协助功能.离线文件功能.群聊功能.语音聊天功能.视频聊天功能 ...

  2. [蓝牙] 3、 剖析BLE心率检测工程

    位于:<KEIL path> \ARM\Device\Nordic\nrf51822\Board\pca10001\s110\ble_app_hrs Heart Rate Example ...

  3. Unity3D使用经验总结 编辑器扩展篇

    一个引擎,最重要的就是工具,工具除了提升开发速度,提供可视化操作环境以外,还带了容错功能. 它使得大家的工作局限在一定的范围内,比如一个变量的配置,或者是一些类型的选择. 使用编辑器,使得既使不太明白 ...

  4. 翻译-使用Spring WebService生成SOAP Web Service

    原文链接:http://spring.io/guides/gs/producing-web-service/ 生成SOAP web service 该指南将带领你使用Spring创建一个基于SOAP的 ...

  5. 据说每个大牛、小牛都应该有自己的库——DOM处理

    这几天整理了一下思路,本来觉得DOM部分会有很多东西,但是忽然发现频繁使用的其实并不太多 class class处理部分主要有四个 hasClass:检查元素是否包含某个class addClass: ...

  6. web系统架构设计中需要知道的点(前端篇)

    上周没写东西,这周写点互联网系统开发中需要了解的技术点,每个点都可以发散出去,连接更多的知识点,打算做个逐步细化的记录. 一个应用的整个生命周期中(生,老,病,死)都需要有一个整体规划. 前期 评估需 ...

  7. IBatisNet:让insert操作返回新增记录的主键值

    项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目 ...

  8. Java基础之I/O和file

    五.IO流1.IO流概述 (1)用来处理设备(硬盘,控制台,内存)间的数据. (2)java中对数据的操作都是通过流的方式. (3)java用于操作流的类都在io包中. (4)按照流操作的数据的类型不 ...

  9. 每天一个linux命令(54):ping命令

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”.不能打开网页时会说“你先ping网关地址192.168.1.1试试”. ...

  10. 浅谈敏捷组织中PMO的人物

    所谓的"敏捷组织"其实并没有标准的形式,而且PMO(项目办理单位)并没有一个标准的人物界说.有一个十分遍及的误解,公司在挑选"灵敏"或许"瀑布&quo ...