日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS – OpenGL ES 图像柏林噪点/花边噪点 GPUImagePerlinNoiseFilter

發布時間:2024/3/13 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS – OpenGL ES 图像柏林噪点/花边噪点 GPUImagePerlinNoiseFilter 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 一.簡介
  • 二.效果演示
  • 三.源碼下載
  • 四.猜你喜歡

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

GPUImagePerlinNoiseFilter 屬于 GPUImage 圖像視覺效果相關,用來處理圖像柏林噪點/花邊噪點。shader 源碼如下:

/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:IOS – OpenGL ES 圖像柏林噪點/花邊噪點 GPUImagePerlinNoiseFilter //@Time:2022/06/08 06:30 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************/#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE NSString *const kGPUImagePerlinNoiseFragmentShaderString = SHADER_STRING (precision highp float;varying highp vec2 textureCoordinate;uniform float scale;uniform vec4 colorStart;uniform vec4 colorFinish;//// Description : Array and textureless GLSL 2D/3D/4D simplex// noise functions.// Author : Ian McEwan, Ashima Arts.// Maintainer : ijm// Lastmod : 20110822 (ijm)// License : Copyright (C) 2011 Ashima Arts. All rights reserved.// Distributed under the MIT License. See LICENSE file.// https://github.com/ashima/webgl-noise//vec4 mod289(vec4 x) {return x - floor(x * (1.0 / 289.0)) * 289.0; }vec4 permute(vec4 x) {return mod289(((x*34.0)+1.0)*x); }vec4 taylorInvSqrt(vec4 r) {return 1.79284291400159 - 0.85373472095314 * r; }vec2 fade(vec2 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}// Classic Perlin noisefloat cnoise(vec2 P) {vec4 Pi = floor(P.xyxy) + vec4(0.0, 0.0, 1.0, 1.0);vec4 Pf = fract(P.xyxy) - vec4(0.0, 0.0, 1.0, 1.0);Pi = mod289(Pi); // To avoid truncation effects in permutationvec4 ix = Pi.xzxz;vec4 iy = Pi.yyww;vec4 fx = Pf.xzxz;vec4 fy = Pf.yyww;vec4 i = permute(permute(ix) + iy);vec4 gx = fract(i * (1.0 / 41.0)) * 2.0 - 1.0 ;vec4 gy = abs(gx) - 0.5 ;vec4 tx = floor(gx + 0.5);gx = gx - tx;vec2 g00 = vec2(gx.x,gy.x);vec2 g10 = vec2(gx.y,gy.y);vec2 g01 = vec2(gx.z,gy.z);vec2 g11 = vec2(gx.w,gy.w);vec4 norm = taylorInvSqrt(vec4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11)));g00 *= norm.x;g01 *= norm.y;g10 *= norm.z;g11 *= norm.w;float n00 = dot(g00, vec2(fx.x, fy.x));float n10 = dot(g10, vec2(fx.y, fy.y));float n01 = dot(g01, vec2(fx.z, fy.z));float n11 = dot(g11, vec2(fx.w, fy.w));vec2 fade_xy = fade(Pf.xy);vec2 n_x = mix(vec2(n00, n01), vec2(n10, n11), fade_xy.x);float n_xy = mix(n_x.x, n_x.y, fade_xy.y);return 2.3 * n_xy; }void main(){float n1 = (cnoise(textureCoordinate * scale) + 1.0) / 2.0;vec4 colorDiff = colorFinish - colorStart;vec4 color = colorStart + colorDiff * n1;gl_FragColor = color;} ); #else NSString *const kGPUImagePerlinNoiseFragmentShaderString = SHADER_STRING (varying vec2 textureCoordinate;uniform float scale;uniform vec4 colorStart;uniform vec4 colorFinish;//// Description : Array and textureless GLSL 2D/3D/4D simplex// noise functions.// Author : Ian McEwan, Ashima Arts.// Maintainer : ijm// Lastmod : 20110822 (ijm)// License : Copyright (C) 2011 Ashima Arts. All rights reserved.// Distributed under the MIT License. See LICENSE file.// https://github.com/ashima/webgl-noise//vec4 mod289(vec4 x) {return x - floor(x * (1.0 / 289.0)) * 289.0; }vec4 permute(vec4 x) {return mod289(((x*34.0)+1.0)*x); }vec4 taylorInvSqrt(vec4 r) {return 1.79284291400159 - 0.85373472095314 * r; }vec2 fade(vec2 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}// Classic Perlin noisefloat cnoise(vec2 P) {vec4 Pi = floor(P.xyxy) + vec4(0.0, 0.0, 1.0, 1.0);vec4 Pf = fract(P.xyxy) - vec4(0.0, 0.0, 1.0, 1.0);Pi = mod289(Pi); // To avoid truncation effects in permutationvec4 ix = Pi.xzxz;vec4 iy = Pi.yyww;vec4 fx = Pf.xzxz;vec4 fy = Pf.yyww;vec4 i = permute(permute(ix) + iy);vec4 gx = fract(i * (1.0 / 41.0)) * 2.0 - 1.0 ;vec4 gy = abs(gx) - 0.5 ;vec4 tx = floor(gx + 0.5);gx = gx - tx;vec2 g00 = vec2(gx.x,gy.x);vec2 g10 = vec2(gx.y,gy.y);vec2 g01 = vec2(gx.z,gy.z);vec2 g11 = vec2(gx.w,gy.w);vec4 norm = taylorInvSqrt(vec4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11)));g00 *= norm.x;g01 *= norm.y;g10 *= norm.z;g11 *= norm.w;float n00 = dot(g00, vec2(fx.x, fy.x));float n10 = dot(g10, vec2(fx.y, fy.y));float n01 = dot(g01, vec2(fx.z, fy.z));float n11 = dot(g11, vec2(fx.w, fy.w));vec2 fade_xy = fade(Pf.xy);vec2 n_x = mix(vec2(n00, n01), vec2(n10, n11), fade_xy.x);float n_xy = mix(n_x.x, n_x.y, fade_xy.y);return 2.3 * n_xy;}void main(){float n1 = (cnoise(textureCoordinate * scale) + 1.0) / 2.0;vec4 colorDiff = colorFinish - colorStart;vec4 color = colorStart + colorDiff * n1;gl_FragColor = color;} ); #endif

二.效果演示

使用**GPUImagePerlinNoiseFilter 完成**圖像柏林噪點/花邊噪點****

三.源碼下載

OpenGL ES Demo 下載地址 : IOS – OpenGL ES 圖像柏林噪點/花邊噪點 GPUImagePerlinNoiseFilter

四.猜你喜歡

  • 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 图像柏林噪点/花边噪点 GPUImagePerlinNoiseFilter的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。