IOS – OpenGL ES 设置图像 lookup 滤镜 GPUImageLookupFilter

目录

  • 一.简介
  • 二.效果演示
  • 三.源码下载
  • 四.猜你喜欢

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 特效

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 函数

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES GPUImage 使用

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES GLSL 编程

一.简介

GPUImage 共 125 个滤镜, 分为四类

1、Color adjustments : 31 filters , 颜色处理相关
2、Image processing : 40 filters , 图像处理相关.
3、Blending modes : 29 filters , 混合模式相关.
4、Visual effects : 25 filters , 视觉效果相关.

GPUImageLookupFilter 属于 GPUImage 颜色处理相关,用来处理图片 lookup 滤镜

GPUImageLookupFilter:使用 RGB 颜色查找图像在一个图像中重新映射的颜色。 首先,使用您最喜欢的照片编辑应用程序,对 GPUImage / framework / Resources中 lookup.png 应用一个过滤器。 为了使其正常工作,每个像素颜色必须不依赖于其他像素(例如,模糊不起作用)。 如果您需要更复杂的过滤器,则可以根据需要创建任意数量的查找表。 一旦准备就绪,请使用新的 lookup.png 文件作为 GPUImageLookupFilter 的第二个输入。

shader 源码如下:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:IOS – OpenGL ES 设置图像 lookup 滤镜 GPUImageLookupFilter
//@Time:2022/04/07 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE
NSString *const kGPUImageLookupFragmentShaderString = SHADER_STRING
(varying highp vec2 textureCoordinate;varying highp vec2 textureCoordinate2; // TODO: This is not useduniform sampler2D inputImageTexture;uniform sampler2D inputImageTexture2; // lookup textureuniform lowp float intensity;void main(){highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);highp float blueColor = textureColor.b * 63.0;highp vec2 quad1;quad1.y = floor(floor(blueColor) / 8.0);quad1.x = floor(blueColor) - (quad1.y * 8.0);highp vec2 quad2;quad2.y = floor(ceil(blueColor) / 8.0);quad2.x = ceil(blueColor) - (quad2.y * 8.0);highp vec2 texPos1;texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);highp vec2 texPos2;texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);lowp vec4 newColor1 = texture2D(inputImageTexture2, texPos1);lowp vec4 newColor2 = texture2D(inputImageTexture2, texPos2);lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor));gl_FragColor = mix(textureColor, vec4(newColor.rgb, textureColor.w), intensity);}
);
#else
NSString *const kGPUImageLookupFragmentShaderString = SHADER_STRING
(varying vec2 textureCoordinate;varying vec2 textureCoordinate2; // TODO: This is not useduniform sampler2D inputImageTexture;uniform sampler2D inputImageTexture2; // lookup textureuniform float intensity;void main(){vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);float blueColor = textureColor.b * 63.0;vec2 quad1;quad1.y = floor(floor(blueColor) / 8.0);quad1.x = floor(blueColor) - (quad1.y * 8.0);vec2 quad2;quad2.y = floor(ceil(blueColor) / 8.0);quad2.x = ceil(blueColor) - (quad2.y * 8.0);vec2 texPos1;texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);vec2 texPos2;texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);vec4 newColor1 = texture2D(inputImageTexture2, texPos1);vec4 newColor2 = texture2D(inputImageTexture2, texPos2);vec4 newColor = mix(newColor1, newColor2, fract(blueColor));gl_FragColor = mix(textureColor, vec4(newColor.rgb, textureColor.w), intensity);}
);
#endif

二.效果演示

使用 ** GPUImageLookupFilter** 处理图片 ****lookup 滤镜****,原图:

效果图:

三.源码下载

OpenGL ES Demo 下载地址 : IOS – OpenGL ES 设置图像 lookup 滤镜 GPUImageLookupFilter

四.猜你喜欢

  • IOS – OPenGL ES 设置图像亮度 GPUImageBrightnessFilter
  • IOS – OPenGL ES 调节图像曝光度 GPUImageExposureFilter
  • IOS – OpenGL ES 调节图像对比度 GPUImageContrastFilter
  • IOS – OPenGL ES 调节图像饱和度 GPUImageSaturationFilter
  • IOS – OPenGL ES 调节图像伽马线 GPUImageGammaFilter
  • IOS – OpenGL ES 调节图像反色 GPUImageColorInvertFilter
  • IOS – OpenGL ES 调节图像褐色 GPUImageSepiaFilter
  • IOS – OpenGL ES 调节图像灰色 GPUImageGrayscaleFilter
  • IOS – OpenGL ES 调节图像 RGB 通道 GPUImageRGBFilter
  • IOS – OpenGL ES 调节图像不透明度 GPUImageOpacityFilter
  • IOS – OpenGL ES 调节图像阴影 GPUImageHighlightShadowFilter
  • IOS – OpenGL ES 调节图像色彩替换 GPUImageFalseColorFilter
  • GPUImage – 色彩直方图 GPUImageHistogramFilter
  • GPUImage – 色彩直方图 GPUImageHistogramGenerator
  • GPUImage – 像素平均色值 GPUImageAverageColor
  • GPUImage – 亮度平均 GPUImageLuminosity
  • IOS – OpenGL ES 调节图像色度 GPUImageHueFilter
  • IOS – OpenGL ES 指定颜色抠图 GPUImageChromaKeyFilter
  • IOS – OpenGL ES 调节图像白平衡/色温 GPUImageWhiteBalanceFilter
  • IOS – OpenGL ES 设置图像 lookup 滤镜 GPUImageLookupFilter

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React之getDerivedStateFromProps

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>新react生命周期</title> </head> <body> <!-- 准备好一个容器 --> <div id"test"></div> <!-- 核心库 --> <…

云漫圈 | 如何给女朋友解释什么是HTTP

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章转载自漫话编程周末一大早&#xff0c;我正在电脑前面浏览一些技术网站&#xff0c;突然女朋友大喊起来&#xff1a;哇&#xff0c;杭州又下大雪啦&#xff0c;快来看啊。我并没有理她&#xff0c;于是她跑过来拉我。&#xfff…

IOS – OpenGL ES 设置图像滤镜 GPUImageAmatorkaFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

IOS – OpenGL ES 设置图像滤镜 GPUImageSoftEleganceFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

趣挨踢 | 跳槽季,让我们一起攻克算法吧!

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章转载自程序员小灰所谓金三银四跳槽季&#xff0c;去年的年终奖拿到了么&#xff1f;即使拿到了年终奖&#xff0c;也千万不要裸辞&#xff0c;毕竟今年的形式不同于往年。不过&#xff0c;虽然小灰不提倡大家裸辞&#xff0c;但…

React新生命周期之getSnapshotBeforeUpdate使用场景

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>getSnapshotBeforeUpdate使用场景</title> <style> .list { width: 200px; height: 150px; background-color: skyblue; overflow: auto; } .news { height…

IOS – OpenGL ES 设置图像锐化 GPUImageSharpenFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

Kubernetes 2018 年度简史

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;bot&小君君&#xff08;才云&#xff09;转自&#xff1a;K8sMeetup社区Kubernetes 在过去几年中一直是云计算领域最著名的开源项目之一。2018 年&#xff0c;Kubernetes 度过了自己的 4 岁生日。从 2014 年开源…

IOS – OpenGL ES 绘制十字 GPUImageCrosshairGenerator

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

携手伙伴谋增长 同心协力齐飞飏

3月6日&#xff0c;以“携手同心&#xff0c;逆风飞飏”为主题的锐捷网络2019年合作伙伴大会在南京召开。本次大会上&#xff0c;锐捷网络全面回顾了2018年“做精做强”战略下的成果与收获&#xff0c;重磅发布了下一代创新产品和解决方案&#xff0c;携手8000多家合作伙伴畅谈…

获取反射对象

package com.wuming.reflection; //什么叫反射 public class Test02 extends Object{//Object定义了一个方法被所有子类继承&#xff0c;就是public final Class getClass(),返回值类型是Class类//反射&#xff1a;就是通过对象获取类的名称public static void main(String[] a…

IOS – OpenGL ES 绘制线条 GPUImageLineGenerator

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

得到Class类的几种方式

反射可以获取类的属性&#xff0c;方法和构造器 类只有一个Class实列 一个Class对象就是加载到jvm中的一个.class文件 通过Class可以完整得到一个类中所有被加载的结构 package com.wuming.reflection; //测试Class类的创建方式有哪些 public class Test03 {public static…

IOS – OpenGL ES 设置图像模糊 GPUImageFastBlurFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

权威预测:未来一年,企业云服务将会如何发展?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a; James Kobielus转自&#xff1a; RancherLabs云计算已成为企业应用程序的主要范式。 随着企业使其计算和网络架构现代化&#xff0c;云原生架构是主要的目标环境。随着2019年的到来&#xff0c;很明显&#xff0c…

要闻君说:又一家云服务关停,原来是网易;MongoDB又爆泄露大新闻;Google 的中国版搜索引擎项目其实仍在继续...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 大家好&#xff01;偶是要闻君。偶是要闻君。新的一周已开始&#xff0c;学习必须在路上&#xff01;&#xff01;&#xff01;文/要闻君近日网易相册发布公告称&#xff0c;自今年…

IOS – OpenGL ES 设置图像黑白噪点 GPUImageLocalBinaryPatternFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

所有类型的class对象

package com.wuming.reflection;import java.lang.annotation.ElementType;public class Test04 {public static void main(String[] args) {Class c1 Object.class;//类Class c2 Comparable.class;//接口Class c3 String[].class;//一维数组Class c4 int[][].class;//二维…

人人之间“不简单”,关系图谱“有一套”

戳蓝字“CSDN云计算”关注我们哦&#xff01;“通过一个人来维持亲密关系的人数最多可达到150人。”这曾经是人类学家罗宾邓巴引以为豪的科学结论之一。不过随着网络社交平台的出现以及日渐繁荣&#xff0c;很多人觉得“邓巴理论”在纷繁复杂的虚拟世界并不适用&#xff0c;如今…

IOS – OpenGL ES 桑原滤波/水粉画模糊效果 GPUImageKuwaharaFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…