IOS – OpenGL ES 圖像馬賽克圓點 GPUImagePolkaDotFilter

来源:https://www.cnblogs.com/shuopython/archive/2022/06/25/16412727.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 , 視覺效果相關.

**GPUImagePolkaDotFilter** 屬於 GPUImage 圖像視覺效果相關,用來處理圖像圖像馬賽克圓點效果。shader 源碼如下:

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:IOS – OpenGL ES 圖像馬賽克圓點
//@Time:2022/06/11 06:30
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/******************************************************************************************/

#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE
NSString *const kGPUImagePolkaDotFragmentShaderString = SHADER_STRING
(
 varying highp vec2 textureCoordinate;

 uniform sampler2D inputImageTexture;

 uniform highp float fractionalWidthOfPixel;
 uniform highp float aspectRatio;
 uniform highp float dotScaling;

 void main()
 {
     highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio);

     highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor;
     highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio));
     highp vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio));
     highp float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse);
     lowp float checkForPresenceWithinDot = step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling);

     lowp vec4 inputColor = texture2D(inputImageTexture, samplePos);

     gl_FragColor = vec4(inputColor.rgb * checkForPresenceWithinDot, inputColor.a);
 }
);
#else
NSString *const kGPUImagePolkaDotFragmentShaderString = SHADER_STRING
(
 varying vec2 textureCoordinate;

 uniform sampler2D inputImageTexture;

 uniform float fractionalWidthOfPixel;
 uniform float aspectRatio;
 uniform float dotScaling;

 void main()
 {
     vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio);

     vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor;
     vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio));
     vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio));
     float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse);
     float checkForPresenceWithinDot = step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling);

     vec4 inputColor = texture2D(inputImageTexture, samplePos);

     gl_FragColor = vec4(inputColor.rgb * checkForPresenceWithinDot, inputColor.a);
 }
);
#endif

二.效果演示

使用GPUImagePolkaDotFilter 完成圖像馬賽克圓點效果****,原圖如下:

使用GPUImagePolkaDotFilter 完成****圖像馬賽克圓點效果****,效果如下:

三.源碼下載

OpenGL ES Demo 下載地址 : IOS – OpenGL ES 圖像馬賽克圓點 GPUImagePolkaDotFilter

四.猜你喜歡

  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

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


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

-Advertisement-
Play Games
更多相關文章
  • 對於 MySQL 資料庫作為各個業務系統的存儲介質,在系統中承擔著非常重要的職責,如果資料庫崩了,那麼對於讀和寫資料庫的操作都會受到影響。如果不能迅速恢復,對業務的影響是非常大的。本文我將分享MySQL 雙主 + Keepalived 的高可用落地和踩坑之路。 ...
  • 1、簡述 binlog 二進位日誌文件,這個文件記錄了MySQL所有的DML操作。通過binlog日誌我們可以做數據恢復,增量備份,主主複製和主從複製等等。 2、Docker中無法使用vim問題解決 https://blog.csdn.net/Tomwildboar/article/details/ ...
  • 當用戶有跨語種交流或音頻內容翻譯的需求時,應用需要能自動檢測語音內容再輸出為用戶需要的語言文字。 HMS Core機器學習服務提供同聲傳譯能力,同聲傳譯實現將實時輸入的長語音實時翻譯為不同語種的文本以及語音,並實時輸出原語音文本、翻譯後的文本以及翻譯文本的語音播報。 在直播類,會議類的應用中,同聲傳 ...
  • Android multiple back stacks導航 談談android中多棧導航的幾種實現. 什麼是multiple stacks 當用戶在app里切換頁面時, 會需要向後回退到上一個頁面, 頁面歷史被保存在一個棧里. 在Android里我們經常說"back stack". 有時候在app ...
  • 瞭解響應式原理後對代碼的一點小重構 在操作一個響應式變數的時候,可能會多次去取這個響應式變數的值,這就意味著會多次執行依賴收集中的get,可以用一個局部變數緩存下來,這樣只需要一次get操作. // 比如商城業務中,根據價格篩選不同的商品 data: () => ({ goods: [] }), c ...
  • TypeScript 是一種由微軟開發的自由和開源的編程語言,是一種非常受歡迎的 JavaScript 語言擴展,它也是 JavaScript 的一個超集,而且本質上向這個語言添加了可選的靜態類型和基於類的面向對象編程。它在現有的 JavaScript 語法之上加入了一層類型層,而這一層即使被刪除, ...
  • props傳遞數據 步驟: 首先,在子組件中聲明props選項 其次,在子組件中使用v-bind指令動態綁定屬性,通過插值表達式動態獲取數據 最後,在父組件的template中調用子組件標簽的使用傳遞數據 示例: 在子組件MovieItem.vue中 <template> <div class="s ...
  • 一、什麼是首屏載入 首屏時間(First Contentful Paint),指的是瀏覽器從響應用戶輸入網址地址,到首屏內容渲染完成的時間,此時整個網頁不一定要全部渲染完成,但需要展示當前視窗需要的內容,首屏載入可以說是用戶體驗中最重要的環節 二、載入慢的原因 在頁面渲染的過程,導致載入速度慢的因素 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...