IOS OpenGL ES GPUImage 色彩減淡混合 GPUImageColorDodgeBlendFilter

来源:https://www.cnblogs.com/shuopython/archive/2022/08/14/16586745.html
-Advertisement-
Play Games

目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...


目錄

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

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 調節圖像曝光度 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
  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

本文由博客 - 猿說編程 猿說編程 發佈!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 名字解析的作用: TCP/IP網路中,設備之間的通信依賴IP地址來實現,但是IP地址不好記憶,所以就將每一臺設備用一個名字來進行標識,但是這個名字電腦不能解析。所以就需要藉助名字解析服務來實現將名字解析為IP地址。 主機名和功能變數名稱的聯繫 主機名: 主機名:電腦的名字,用於唯一標識一臺設備 功能變數名稱: ...
  • Hackaday 在三月份的時候介紹了一款最小的MCU, 華大的 HC32L110B6YA-CSP16TR, CSP16封裝, 尺寸有隻1.6mm x 1.4mm, 還不及一粒米大. HC32L110 (以及其他的Cortex M0華大MCU) 在 Windows 下可以選擇的燒錄選項比較多, 以下... ...
  • 游戲玩家一定會上手的游戲就是拳皇系列了吧,其中最經典的就是拳皇97,現為大家分享的是拳皇97mac版,熟悉的場景,熟悉的操作,原來Mac上打街機也可以這麼der兒,親測拳皇97 for Mac 支持M1 Mac,喜歡的話就來體驗吧。 詳情:拳皇97 for Mac(KOF97) 支持M1 拳皇97m ...
  • mac屏幕解析度如何調整?switchresx mac版可以為您提供控制顯示器解析度所需的工具和功能。您可以管理從MacBook Retina顯示器和Cinema Displays到電視機和投影儀的任何解析度。而且switchresx應用程式能夠根據您當前使用的應用程式自動更改Mac的顯示或顯示分辨 ...
  • 我在整理Hive的存儲格式和壓縮格式,本來打算一篇發出來,結果其中一小節就有很多內容,於是打算寫成Hive存儲格式和壓縮格式系列。 本節主要講一下Hive存儲格式最早的典型的列式存儲格式RCFile。 綜述 RCFile(Record Columnar File)文件格式是FaceBook開源的一種 ...
  • 1 環境搭建 搭建JavaScript開發環境有很多種組合,本文中採用Visual Studio Code和Node.js的組合,詳細如下所示: 1.1 Node.js環境搭建 1.1.1 下載Node.js 不管是基於Windows還是Linux,都需要下載相應的安裝包,到Node.js官網根據系 ...
  • 文章已收錄到我的 GitHub 中,歡迎 star cookie 是什麼和使用場景 cookie 是伺服器端保存在瀏覽器的一小段文本信息,瀏覽器每次向伺服器端發出請求,都會附帶上這段信息(不是所有都帶上,具體的下文會介紹)。 使用場景: 對話管理:保存登錄、購物車等需要記錄的信息 個性化:保存用戶的 ...
  • 前言 開發項目中,使用到 Eruda 列印控制台信息顯示 文檔:https://github.com/liriliri/eruda 安裝 Eruda npm install eruda --save 引入 import eruda from "eruda"; 常使用方法 顯示 eruda.show( ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...