携手创作,一起生长!这是我参加「日新方案 8 月更文应战」的第7天,点击检查活动概况

目录

  • 一.简介
  • 二.作用演示
  • 三.源码下载
  • 四.猜你喜爱

零根底 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 , 视觉作用相关.

GPUImageNormalBlendFilter 归于 GPUImage 图画混合形式相关,用于图画 alpha 混合。shader 源码如下:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:IOS – OpenGL ES GPUImage GPUImageNormalBlendFilter
//@Time:2022/07/02 06:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要持之以恒地堆集!
/******************************************************************************************/
#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE
NSString *const kGPUImageNormalBlendFragmentShaderString = SHADER_STRING
(
 varying highp vec2 textureCoordinate;
 varying highp vec2 textureCoordinate2;
 uniform sampler2D inputImageTexture;
 uniform sampler2D inputImageTexture2;
 void main()
 {
     lowp vec4 c2 = texture2D(inputImageTexture, textureCoordinate);
	 lowp vec4 c1 = texture2D(inputImageTexture2, textureCoordinate2);
     lowp vec4 outputColor;
//     outputColor.r = c1.r + c2.r * c2.a * (1.0 - c1.a);
//     outputColor.g = c1.g + c2.g * c2.a * (1.0 - c1.a);
//     outputColor.b = c1.b + c2.b * c2.a * (1.0 - c1.a);
//     outputColor.a = c1.a + c2.a * (1.0 - c1.a);
     lowp float a = c1.a + c2.a * (1.0 - c1.a);
     lowp float alphaDivisor = a + step(a, 0.0); // Protect against a divide-by-zero blacking out things in the output
     outputColor.r = (c1.r * c1.a + c2.r * c2.a * (1.0 - c1.a))/alphaDivisor;
     outputColor.g = (c1.g * c1.a + c2.g * c2.a * (1.0 - c1.a))/alphaDivisor;
     outputColor.b = (c1.b * c1.a + c2.b * c2.a * (1.0 - c1.a))/alphaDivisor;
     outputColor.a = a;
     gl_FragColor = outputColor;
 }
);
#else
NSString *const kGPUImageNormalBlendFragmentShaderString = SHADER_STRING
(
 varying vec2 textureCoordinate;
 varying vec2 textureCoordinate2;
 uniform sampler2D inputImageTexture;
 uniform sampler2D inputImageTexture2;
 void main()
 {
     vec4 c2 = texture2D(inputImageTexture, textureCoordinate);
	 vec4 c1 = texture2D(inputImageTexture2, textureCoordinate2);
     vec4 outputColor;
     //     outputColor.r = c1.r + c2.r * c2.a * (1.0 - c1.a);
     //     outputColor.g = c1.g + c2.g * c2.a * (1.0 - c1.a);
     //     outputColor.b = c1.b + c2.b * c2.a * (1.0 - c1.a);
     //     outputColor.a = c1.a + c2.a * (1.0 - c1.a);
     float a = c1.a + c2.a * (1.0 - c1.a);
     float alphaDivisor = a + step(a, 0.0); // Protect against a divide-by-zero blacking out things in the output
     outputColor.r = (c1.r * c1.a + c2.r * c2.a * (1.0 - c1.a))/alphaDivisor;
     outputColor.g = (c1.g * c1.a + c2.g * c2.a * (1.0 - c1.a))/alphaDivisor;
     outputColor.b = (c1.b * c1.a + c2.b * c2.a * (1.0 - c1.a))/alphaDivisor;
     outputColor.a = a;
     gl_FragColor = outputColor;
 }
);
#endif

二.作用演示

使用**GPUImageNormalBlendFilter,**源图和目标图如下:

IOS OpenGL ES GPUImage 图像混合 GPUImageNormalBlendFilter

IOS OpenGL ES GPUImage 图像混合 GPUImageNormalBlendFilter

使用GPUImageNormalBlendFilter 作用如下:

IOS OpenGL ES GPUImage 图像混合 GPUImageNormalBlendFilter

三.源码下载

OpenGL ES Demo 下载地址 : IOS OpenGL ES GPUImage 图画混合 GPUImageNormalBlendFilter

IOS OpenGL ES GPUImage 图像混合 GPUImageNormalBlendFilter

四.猜你喜爱

  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
  28. IOS OpenGL ES 桑原滤波/水粉画含糊作用 GPUImageKuwaharaFilter
  29. IOS OpenGL ES 是非马赛克作用 GPUImageMosaicFilter
  30. IOS OpenGL ES 像素化马赛克作用 GPUImagePixellateFilter
  31. IOS OpenGL ES 同心圆像素化马赛克作用 GPUImagePolarPixel
  32. IOS OpenGL ES 是非网状作用 GPUImageCrosshatchFilter
  33. IOS OpenGL ES 颜色丢掉/含糊作用 GPUImageColorPackingFilter
  34. IOS OpenGL ES 图画晕影 GPUImageVignetteFilter
  35. IOS OpenGL ES 图画漩涡 GPUImageSwirlFilter
  36. IOS OpenGL ES 图画鱼眼扩散作用 GPUImageBulgeDistortionFilter
  37. IOS OpenGL ES 图画鱼眼移动作用 GPUImageBulgeDistortionFilter
  38. IOS OpenGL ES 图画凹面镜移动作用 GPUImagePinchDistortionFilter
  39. IOS OpenGL ES 图画凹面镜扩大作用 GPUImagePinchDistortionFilter
  40. IOS OpenGL ES 图画哈哈镜作用 GPUImageStretchDistortionFilter
  41. IOS OpenGL ES 图画水晶球作用 GPUImageGlassSphereFilter
  42. IOS OpenGL ES 图画球形折射 GPUImageSphereRefractionFilter
  43. IOS OpenGL ES 图画色彩别离噪点作用 GPUImagePosterizeFilter
  44. IOS OpenGL ES 图画 CGA 颜色滤镜 GPUImageCGAColorspaceFilter
  45. IOS OpenGL ES 图画柏林噪点/花边噪点 GPUImagePerlinNoiseFilter
  46. IOS OpenGL ES 图画加亮边际 GPUImage3x3ConvolutionFilter
  47. IOS OpenGL ES 图画浮雕 3d 作用 GPUImageEmbossFilter
  48. IOS OpenGL ES 图画马赛克圆点 GPUImagePolkaDotFilter
  49. IOS OpenGL ES 图画腐蚀边际是非含糊 GPUImageErosionFilter
  50. IOS OpenGL ES 图画腐蚀边际颜色含糊 GPUImageRGBErosionFilter
  51. IOS OpenGL ES 图画扩展边际是非含糊 GPUImageDilationFilter
  52. IOS OpenGL ES 图画扩展边际五颜六色含糊 GPUImageRGBDilationFilter
  53. IOS OpenGL ES GPUImage 是非色彩含糊 GPUImageOpeningFilter
  54. IOS OpenGL ES GPUImage 五颜六色含糊 GPUImageRGBOpeningFilter
  55. IOS OpenGL ES GPUImage 图画是非色彩含糊/暗色提亮 GPUImageClosingFilter
  56. IOS OpenGL ES GPUImage 图画五颜六色彩含糊/暗色提亮 GPUImageRGBClosingFilter
  57. IOS OpenGL ES GPUImage 图画 Lanczos 重取样含糊作用 GPUImageLanczosResamplingFilter
  58. IOS OpenGL ES GPUImage 图画显现亮度最高的像素,其他为黑 GPUImageNonMaximumSuppressionFilter
  59. IOS OpenGL ES GPUImage 图画显现亮度最高的像素,其他为黑 GPUImageThresholdedNonMaximumSuppressionFilter
  60. IOS OpenGL ES GPUImage 图画 Sobel 边际检测,相似漫画反色 GPUImageSobelEdgeDetectionFilter
  61. IOS OpenGL ES GPUImage GPUImageWeakPixelInclusionFilter
  62. IOS OpenGL ES GPUImage GPUImageDirectionalNonMaximumSuppressionFilter
  63. IOS OpenGL ES GPUImage 图画阈值边际检测 GPUImageThresholdEdgeDetectionFilter
  64. IOS OpenGL ES GPUImage 图画普瑞维特(Prewitt)边际检测 GPUImagePrewittEdgeDetectionFilter
  65. IOS OpenGL ES GPUImage 图画 XYDerivative 边际检测 GPUImageXYDerivativeFilter
  66. IOS OpenGL ES GPUImage 图画阀值素描,形成有噪点的素描 GPUImageThresholdSketchFilter
  67. IOS OpenGL ES GPUImage 图画暗影和深度作用 GPUImageMultiplyBlendFilter
  68. IOS OpenGL ES GPUImage 图画混合 GPUImageNormalBlendFilter

本文由博客 – 猿说编程 猿说编程 发布!