IOS – OpenGL ES 卡通效果(黑色粗线描边) GPUImageToonFilter

目录

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

零基础 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 , 视觉效果相关.

**GPUImageToonFilter 属于 GPUImage 图像处理相关,用来图像卡通效果(黑色粗线描边),**shader 源码如下:

******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:IOS – OpenGL ES 卡通效果(黑色粗线描边) GPUImageToonFilter
//@Time:2022/05/14 10:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE
NSString *const kGPUImageToonFragmentShaderString = SHADER_STRING
(precision highp float;varying vec2 textureCoordinate;varying vec2 leftTextureCoordinate;varying vec2 rightTextureCoordinate;varying vec2 topTextureCoordinate;varying vec2 topLeftTextureCoordinate;varying vec2 topRightTextureCoordinate;varying vec2 bottomTextureCoordinate;varying vec2 bottomLeftTextureCoordinate;varying vec2 bottomRightTextureCoordinate;uniform sampler2D inputImageTexture;uniform highp float intensity;uniform highp float threshold;uniform highp float quantizationLevels;const highp vec3 W = vec3(0.2125, 0.7154, 0.0721);void main(){vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r;float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r;float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r;float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r;float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r;float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r;float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r;float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r;float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity;float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity;float mag = length(vec2(h, v));vec3 posterizedImageColor = floor((textureColor.rgb * quantizationLevels) + 0.5) / quantizationLevels;float thresholdTest = 1.0 - step(threshold, mag);gl_FragColor = vec4(posterizedImageColor * thresholdTest, textureColor.a);}
);
#else
NSString *const kGPUImageToonFragmentShaderString = SHADER_STRING
(varying vec2 textureCoordinate;varying vec2 leftTextureCoordinate;varying vec2 rightTextureCoordinate;varying vec2 topTextureCoordinate;varying vec2 topLeftTextureCoordinate;varying vec2 topRightTextureCoordinate;varying vec2 bottomTextureCoordinate;varying vec2 bottomLeftTextureCoordinate;varying vec2 bottomRightTextureCoordinate;uniform sampler2D inputImageTexture;uniform float intensity;uniform float threshold;uniform float quantizationLevels;const vec3 W = vec3(0.2125, 0.7154, 0.0721);void main(){vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r;float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r;float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r;float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r;float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r;float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r;float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r;float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r;float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity;float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity;float mag = length(vec2(h, v));vec3 posterizedImageColor = floor((textureColor.rgb * quantizationLevels) + 0.5) / quantizationLevels;float thresholdTest = 1.0 - step(threshold, mag);gl_FragColor = vec4(posterizedImageColor * thresholdTest, textureColor.a);}
);
#endif

二.效果演示

使用 GPUImageToonFilter 用来图像卡通效果(黑色粗线描边)****,原图:

**GPUImageToonFilter** 用来图像卡通效果(黑色粗线描边)**,效果图:**

三.源码下载

OpenGL ES Demo 下载地址 : IOS – OpenGL ES 设置图像卡通效果(黑色粗线描边) GPUImageToonFilter

四.猜你喜欢

  1. IOS – OPenGL ES 设置图像亮度 GPUImageBrightnessFilter
  2. IOS – OPenGL ES 调节图像曝光度 GPUImageExposureFilter
  3. IOS – OpenGL ES 调节图像对比度 GPUImageContrastFilter
  4. IOS – OPenGL ES 调节图像饱和度 GPUImageSaturationFilter
  5. IOS – OPenGL ES 调节图像伽马线 GPUImageGammaFilter
  6. IOS – OpenGL ES 调节图像反色 GPUImageColorInvertFilter
  7. IOS – OpenGL ES 调节图像褐色 GPUImageSepiaFilter
  8. IOS – OpenGL ES 调节图像灰色 GPUImageGrayscaleFilter
  9. IOS – OpenGL ES 调节图像 RGB 通道 GPUImageRGBFilter
  10. IOS – OpenGL ES 调节图像不透明度 GPUImageOpacityFilter
  11. IOS – OpenGL ES 调节图像阴影 GPUImageHighlightShadowFilter
  12. IOS – OpenGL ES 调节图像色彩替换 GPUImageFalseColorFilter
  13. GPUImage – 色彩直方图 GPUImageHistogramFilter
  14. GPUImage – 色彩直方图 GPUImageHistogramGenerator
  15. GPUImage – 像素平均色值 GPUImageAverageColor
  16. GPUImage – 亮度平均 GPUImageLuminosity
  17. IOS – OpenGL ES 调节图像色度 GPUImageHueFilter
  18. IOS – OpenGL ES 指定颜色抠图 GPUImageChromaKeyFilter
  19. IOS – OpenGL ES 调节图像白平衡/色温 GPUImageWhiteBalanceFilter
  20. IOS – OpenGL ES 设置图像 lookup 滤镜 GPUImageLookupFilter
  21. IOS – OpenGL ES 设置图像滤镜 GPUImageAmatorkaFilter
  22. IOS – OpenGL ES 设置图像滤镜 GPUImageSoftEleganceFilter
  23. IOS – OpenGL ES 设置图像锐化 GPUImageSharpenFilter
  24. IOS – OpenGL ES 绘制十字 GPUImageCrosshairGenerator
  25. IOS – OpenGL ES 绘制线条 GPUImageLineGenerator
  26. IOS – OpenGL ES 设置图像黑白燥点 GPUImageLocalBinaryPatternFilter
  27. IOS – OpenGL ES 设置图像卡通效果(黑色粗线描边) GPUImageToonFilter

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

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

相关文章

云重磅 | 收购季:英伟达天价收购Mellanox;F5 6.7亿喜提Nginx;5G潮起3G潮落 中国移动耗资3000亿...

戳蓝字“CSDN云计算”关注我们哦!嗨,大家好,重磅君带来的【云重磅】特别栏目,如期而至,每周二第一时间为大家带来重磅新闻。把握技术风向标,了解行业应用与实践,就交给我重磅君吧!重…

Iceberg: COW模式下的MERGE INTO的执行流程

MergeInto命令 MERGE INTO target_table t USING source_table s ON s.id t.id //这里是JOIN的关联条件 WHEN MATCHED AND s.opType delete THEN DELETE // WHEN条件是对当前行进行打标的匹配条件 WHEN MATCHED AND s.opType update THEN UPDATE SET id s.…

IOS – OpenGL ES 像素化马赛克效果 GPUImagePixellateFilter

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

波音737连续坠毁,AI要背锅?

戳蓝字“CSDN云计算”关注我们哦!作者 | 若名出品 | AI科技大本营(ID:rgznai100)2018 年 10 月 29 日,印尼狮航的波音 737MAX8 客机在起飞 13 分钟后坠海,机上 178 名乘客全部不幸遇难。2019 年 3 月 10 日&#xff0c…

IOS – OpenGL ES 同心圆像素化马赛克效果 GPUImagePolarPixel

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

云计算时代运维的出路在哪?

戳蓝字“CSDN云计算”关注我们哦!作者:王洪鹏做过开发,搞过运维,又在在云计算行业折腾了几年,不说自己技术怎样、怎样……,暂且说说笔者在当前公司做云计算这几年的些许感悟,兴许可以给正在从事…

VSFTPD 服务器 3秒钟搭建

文章目录一、常用命令(Linux)二、搭建Vsftpd流程2.1. 检测系统2.2. yum安装一、常用命令(Linux) 作用命令启动sudo service vsftpd start关闭sudo service vsftpd stop重启sudo service vsftpd restart查看运行状态sudo service …

IOS – OpenGL ES 黑白网状效果 GPUImageCrosshatchFilter

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

数组下标越界问题

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4at lesson3.Student.getarr(Student.java:29)at lesson3.demo1.main(demo1.java:30) 报错代码如上: 当使用不合法的数字下标输入访问数组时会报数组越界这种错误, …

IEDA 配置Git_04

前提:打开idea CtrlAltS打开设置: 路径:File\seeting\version control\git

要闻君说:苹果又要新品发布啦;英伟达壕气,狂砸69亿收购Mellanox;谷歌瞄准印度小学生,推出AI学习工具;...

关注并标星星CSDN云计算每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 大家好!偶是要闻君。话说每年的苹果新品发布会都会被列入“熬夜也要看一看”的名单中,3月将尽,今年又有什么苹果新料可爆?前瞻一把&a…

IOS – OpenGL ES 色彩丢失/模糊效果 GPUImageColorPackingFilter

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

Git 用户名和邮箱配置_01

文章目录1. 打开 git bash here2. 用户名和邮箱配置1. 打开 git bash here 2. 用户名和邮箱配置 git config --global user.name "用户名" git config --global user.email "邮箱" git config --list

Storm精华问答 | 如何处理常见故障?

Hadoop能够进行大批量数据的离线处理,但是在实时计算上的表现实在是不尽如人意;而Storm就可以担当这部分的角色,今天,就让我们看看关于Storm的精华问答吧。1Q:发布topology到远程集群时,出现AlreadyAliveException(msg: xxx is al…

在字符串String类型常忘记使用equals()进行值比较的问题

String[] arr {"zhangsan","lisi","wangwu"};int num 0;String name "wangwu";for(int i 0; i<arr.length;i){if(arr[i] .equals(name)){num1;} else{num2;continue;}System.out.println(num); 这里字符串比较用的是equals…

IOS – OpenGL ES 图像晕影移动 GPUImageVignetteFilter

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

以安全之名:2019年DevSecOps社区调研白皮书解读

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;刘淼&#xff0c;HPE架构师&#xff0c;慧与大学讲师&#xff0c;Exin DevOps Master和DevOps Professional授权讲师&#xff0c;CSDN博主(liumiaocn)&#xff0c;爱老婆爱厨艺的终身技术学习者。2019年3月5号&…

docker Gitlab14.5.0 安装、配置、部署、使用

文章目录一、镜像容器1. 安装Docker2. 查找GitLab镜像3. 拉取镜像4. 创建容器二、修改配置文件2.1. gitlab.rb2.2. 重启gitlab容器2.3. 监控日志三、效果验证3.1. 登录gitlab3.2. 获取密码3.3. 创建一个项目四、用户使用1.下载git.exe4.2. 设置ssh4.3. 秘钥查验4.4. 秘钥同步4.…

try-catch 异常处理的执行过程

public void exception(){try{System.out.println("一");System.out.println(2/0);System.out.println("二");}catch(ArithmeticException m){System.out.println("异常解决了");}System.out.println("三");}try中没有异常&#xff0c…

IOS – OpenGL ES 图像晕影扩散 GPUImageVignetteFilter

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