携手创作,一起生长!这是我参加「日新方案 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,**源图和目标图如下:
使用GPUImageNormalBlendFilter 作用如下:
三.源码下载
OpenGL ES Demo 下载地址 : IOS OpenGL ES GPUImage 图画混合 GPUImageNormalBlendFilter
四.猜你喜爱
- 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
- IOS OpenGL ES 设置图画滤镜 GPUImageAmatorkaFilter
- IOS OpenGL ES 设置图画滤镜 GPUImageSoftEleganceFilter
- IOS OpenGL ES 设置图画锐化 GPUImageSharpenFilter
- IOS OpenGL ES 制作十字 GPUImageCrosshairGenerator
- IOS OpenGL ES 制作线条 GPUImageLineGenerator
- IOS OpenGL ES 设置图画是非燥点 GPUImageLocalBinaryPatternFilter
- IOS OpenGL ES 设置图画卡通作用(黑色粗线描边) GPUImageToonFilter
- IOS OpenGL ES 桑原滤波/水粉画含糊作用 GPUImageKuwaharaFilter
- IOS OpenGL ES 是非马赛克作用 GPUImageMosaicFilter
- IOS OpenGL ES 像素化马赛克作用 GPUImagePixellateFilter
- IOS OpenGL ES 同心圆像素化马赛克作用 GPUImagePolarPixel
- IOS OpenGL ES 是非网状作用 GPUImageCrosshatchFilter
- IOS OpenGL ES 颜色丢掉/含糊作用 GPUImageColorPackingFilter
- IOS OpenGL ES 图画晕影 GPUImageVignetteFilter
- IOS OpenGL ES 图画漩涡 GPUImageSwirlFilter
- IOS OpenGL ES 图画鱼眼扩散作用 GPUImageBulgeDistortionFilter
- IOS OpenGL ES 图画鱼眼移动作用 GPUImageBulgeDistortionFilter
- IOS OpenGL ES 图画凹面镜移动作用 GPUImagePinchDistortionFilter
- IOS OpenGL ES 图画凹面镜扩大作用 GPUImagePinchDistortionFilter
- IOS OpenGL ES 图画哈哈镜作用 GPUImageStretchDistortionFilter
- IOS OpenGL ES 图画水晶球作用 GPUImageGlassSphereFilter
- IOS OpenGL ES 图画球形折射 GPUImageSphereRefractionFilter
- IOS OpenGL ES 图画色彩别离噪点作用 GPUImagePosterizeFilter
- IOS OpenGL ES 图画 CGA 颜色滤镜 GPUImageCGAColorspaceFilter
- IOS OpenGL ES 图画柏林噪点/花边噪点 GPUImagePerlinNoiseFilter
- IOS OpenGL ES 图画加亮边际 GPUImage3x3ConvolutionFilter
- IOS OpenGL ES 图画浮雕 3d 作用 GPUImageEmbossFilter
- IOS OpenGL ES 图画马赛克圆点 GPUImagePolkaDotFilter
- IOS OpenGL ES 图画腐蚀边际是非含糊 GPUImageErosionFilter
- IOS OpenGL ES 图画腐蚀边际颜色含糊 GPUImageRGBErosionFilter
- IOS OpenGL ES 图画扩展边际是非含糊 GPUImageDilationFilter
- IOS OpenGL ES 图画扩展边际五颜六色含糊 GPUImageRGBDilationFilter
- IOS OpenGL ES GPUImage 是非色彩含糊 GPUImageOpeningFilter
- IOS OpenGL ES GPUImage 五颜六色含糊 GPUImageRGBOpeningFilter
- IOS OpenGL ES GPUImage 图画是非色彩含糊/暗色提亮 GPUImageClosingFilter
- IOS OpenGL ES GPUImage 图画五颜六色彩含糊/暗色提亮 GPUImageRGBClosingFilter
- IOS OpenGL ES GPUImage 图画 Lanczos 重取样含糊作用 GPUImageLanczosResamplingFilter
- IOS OpenGL ES GPUImage 图画显现亮度最高的像素,其他为黑 GPUImageNonMaximumSuppressionFilter
- IOS OpenGL ES GPUImage 图画显现亮度最高的像素,其他为黑 GPUImageThresholdedNonMaximumSuppressionFilter
- IOS OpenGL ES GPUImage 图画 Sobel 边际检测,相似漫画反色 GPUImageSobelEdgeDetectionFilter
- IOS OpenGL ES GPUImage GPUImageWeakPixelInclusionFilter
- IOS OpenGL ES GPUImage GPUImageDirectionalNonMaximumSuppressionFilter
- IOS OpenGL ES GPUImage 图画阈值边际检测 GPUImageThresholdEdgeDetectionFilter
- IOS OpenGL ES GPUImage 图画普瑞维特(Prewitt)边际检测 GPUImagePrewittEdgeDetectionFilter
- IOS OpenGL ES GPUImage 图画 XYDerivative 边际检测 GPUImageXYDerivativeFilter
- IOS OpenGL ES GPUImage 图画阀值素描,形成有噪点的素描 GPUImageThresholdSketchFilter
- IOS OpenGL ES GPUImage 图画暗影和深度作用 GPUImageMultiplyBlendFilter
- IOS OpenGL ES GPUImage 图画混合 GPUImageNormalBlendFilter
本文由博客 – 猿说编程 猿说编程 发布!