IOS OpenGL ES GPUImage 色彩減淡混合 GPUImageColorDodgeBlendFilter

目錄

零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎

零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場

零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 特效

零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 函數(shù)

零基礎 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 , 視覺效果相關.

GPUImageColorDodgeBlendFilter 屬于 GPUImage 混合模式相關,用于圖像色彩減淡混合。shader 源碼如下:

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:IOS – OpenGL ES GPUImage GPUImageColorDodgeBlendFilter
//@Time:2022/07/16 06:30
//@Motto:不積跬步無以至千里察绷,不積小流無以成江海汁针,程序人生的精彩需要堅持不懈地積累术辐!
/******************************************************************************************/

#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE
NSString *const kGPUImageColorDodgeBlendFragmentShaderString = SHADER_STRING
(

 precision mediump float;

 varying highp vec2 textureCoordinate;
 varying highp vec2 textureCoordinate2;

 uniform sampler2D inputImageTexture;
 uniform sampler2D inputImageTexture2;

 void main()
 {
     vec4 base = texture2D(inputImageTexture, textureCoordinate);
     vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2);

     vec3 baseOverlayAlphaProduct = vec3(overlay.a * base.a);
     vec3 rightHandProduct = overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a);

     vec3 firstBlendColor = baseOverlayAlphaProduct + rightHandProduct;
     vec3 overlayRGB = clamp((overlay.rgb / clamp(overlay.a, 0.01, 1.0)) * step(0.0, overlay.a), 0.0, 0.99);

     vec3 secondBlendColor = (base.rgb * overlay.a) / (1.0 - overlayRGB) + rightHandProduct;

     vec3 colorChoice = step((overlay.rgb * base.a + base.rgb * overlay.a), baseOverlayAlphaProduct);

     gl_FragColor = vec4(mix(firstBlendColor, secondBlendColor, colorChoice), 1.0);
 }
);
#else
NSString *const kGPUImageColorDodgeBlendFragmentShaderString = SHADER_STRING
(
 varying vec2 textureCoordinate;
 varying vec2 textureCoordinate2;

 uniform sampler2D inputImageTexture;
 uniform sampler2D inputImageTexture2;

 void main()
 {
     vec4 base = texture2D(inputImageTexture, textureCoordinate);
     vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2);

     vec3 baseOverlayAlphaProduct = vec3(overlay.a * base.a);
     vec3 rightHandProduct = overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a);

     vec3 firstBlendColor = baseOverlayAlphaProduct + rightHandProduct;
     vec3 overlayRGB = clamp((overlay.rgb / clamp(overlay.a, 0.01, 1.0)) * step(0.0, overlay.a), 0.0, 0.99);

     vec3 secondBlendColor = (base.rgb * overlay.a) / (1.0 - overlayRGB) + rightHandProduct;

     vec3 colorChoice = step((overlay.rgb * base.a + base.rgb * overlay.a), baseOverlayAlphaProduct);

     gl_FragColor = vec4(mix(firstBlendColor, secondBlendColor, colorChoice), 1.0);
 }
);
#endif

二.效果演示

使用 GPUImageColorDodgeBlendFilter**,**源圖如下:

使用 GPUImageColorDodgeBlendFilter,效果如下:

三.源碼下載

OpenGL ES Demo 下載地址 : IOS OpenGL ES GPUImage 色彩減淡混合 GPUImageColorDodgeBlendFilter

四.猜你喜歡

  1. IOS OPenGL ES 設置圖像亮度 GPUImageBrightnessFilter
  2. IOS OPenGL ES 調節(jié)圖像曝光度 GPUImageExposureFilter
  3. IOS OpenGL ES 調節(jié)圖像對比度 GPUImageContrastFilter
  4. IOS OPenGL ES 調節(jié)圖像飽和度 GPUImageSaturationFilter
  5. IOS OPenGL ES 調節(jié)圖像伽馬線 GPUImageGammaFilter
  6. IOS OpenGL ES 調節(jié)圖像反色 GPUImageColorInvertFilter
  7. IOS OpenGL ES 調節(jié)圖像褐色 GPUImageSepiaFilter
  8. IOS OpenGL ES 調節(jié)圖像灰色 GPUImageGrayscaleFilter
  9. IOS OpenGL ES 調節(jié)圖像 RGB 通道 GPUImageRGBFilter
  10. IOS OpenGL ES 調節(jié)圖像不透明度 GPUImageOpacityFilter
  11. IOS OpenGL ES 調節(jié)圖像陰影 GPUImageHighlightShadowFilter
  12. IOS OpenGL ES 調節(jié)圖像色彩替換 GPUImageFalseColorFilter
  13. GPUImage – 色彩直方圖 GPUImageHistogramFilter
  14. GPUImage – 色彩直方圖 GPUImageHistogramGenerator
  15. GPUImage – 像素平均色值 GPUImageAverageColor
  16. GPUImage – 亮度平均 GPUImageLuminosity
  17. IOS OpenGL ES 調節(jié)圖像色度 GPUImageHueFilter
  18. IOS OpenGL ES 指定顏色摳圖 GPUImageChromaKeyFilter
  19. IOS OpenGL ES 調節(jié)圖像白平衡/色溫 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
  69. IOS OpenGL ES GPUImage 圖像透明混合 GPUImageAlphaBlendFilter
  70. IOS OpenGL ES GPUImage 圖像溶解 GPUImageDissolveBlendFilter
  71. IOS OpenGL ES GPUImage 圖像疊加 GPUImageOverlayBlendFilter
  72. IOS OpenGL ES GPUImage 圖像加深混合 GPUImageDarkenBlendFilter
  73. IOS OpenGL ES GPUImage 圖像減淡混合 GPUImageLightenBlendFilter
  74. IOS OpenGL ES GPUImage 圖像源混合 GPUImageSourceOverBlendFilter
  75. IOS OpenGL ES GPUImage 圖像平移 GPUImageTransformFilter
  76. IOS OpenGL ES GPUImage 圖像縮放 GPUImageTransformFilter
  77. IOS OpenGL ES GPUImage 圖像旋轉 GPUImageTransformFilter
  78. IOS OpenGL ES GPUImage 圖像鏡像 GPUImageTransformFilter
  79. IOS OpenGL ES GPUImage 色彩加深混合 GPUImageColorBurnBlendFilter
  80. IOS OpenGL ES GPUImage 色彩減淡混合 GPUImageColorDodgeBlendFilter

本文由博客 - 猿說編程 猿說編程 發(fā)布!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末猾骡,一起剝皮案震驚了整個濱河市瑞躺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌兴想,老刑警劉巖幢哨,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嫂便,居然都是意外死亡捞镰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門毙替,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岸售,“玉大人,你說我怎么就攤上這事蔚龙”溃” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵木羹,是天一觀的道長。 經常有香客問我解孙,道長坑填,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任弛姜,我火速辦了婚禮脐瑰,結果婚禮上,老公的妹妹穿的比我還像新娘廷臼。我一直安慰自己苍在,他們只是感情好,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布荠商。 她就那樣靜靜地躺著寂恬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪莱没。 梳的紋絲不亂的頭發(fā)上初肉,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機與錄音饰躲,去河邊找鬼牙咏。 笑死臼隔,一個胖子當著我的面吹牛,可吹牛的內容都是我干的妄壶。 我是一名探鬼主播摔握,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼丁寄!你這毒婦竟也來了盒发?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤狡逢,失蹤者是張志新(化名)和其女友劉穎宁舰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奢浑,經...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡蛮艰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了雀彼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤蚜。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖徊哑,靈堂內的尸體忽然破棺而出袜刷,到底是詐尸還是另有隱情,我是刑警寧澤莺丑,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布著蟹,位于F島的核電站,受9級特大地震影響梢莽,放射性物質發(fā)生泄漏萧豆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一昏名、第九天 我趴在偏房一處隱蔽的房頂上張望涮雷。 院中可真熱鬧,春花似錦轻局、人聲如沸洪鸭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽览爵。三九已至,卻和暖如春夫壁,著一層夾襖步出監(jiān)牢的瞬間拾枣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留梅肤,地道東北人司蔬。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像姨蝴,于是被迫代替她去往敵國和親俊啼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內容