亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > Android > 正文

OpenGL Shader實例分析(8)彩色光圈效果

2019-10-21 21:24:53
字體:
供稿:網(wǎng)友

本文實例為大家分享了OpenGL實現(xiàn)彩色光圈效果的具體代碼,供大家參考,具體內(nèi)容如下

研究了一個彩色光圈效果,感覺挺不錯的,分享給大家,效果如下:

OpenGL,Shader,彩色光圈

代碼如下:

Shader "shadertoy/TotalNoob" { //https://www.shadertoy.com/view/XdlSDs Properties{ iMouse ("Mouse Pos", Vector) = (100,100,0,0) iChannel0("iChannel0", 2D) = "white" {}  iChannelResolution0 ("iChannelResolution0", Vector) = (100,100,0,0) }  CGINCLUDE  #include "UnityCG.cginc"  #pragma target 3.0  #pragma glsl  #define vec2 float2 #define vec3 float3 #define vec4 float4 #define mat2 float2x2 #define iGlobalTime _Time.y// #define mod fmod // mod = sign*fmod #define mix lerp #define atan atan2 #define fract frac  #define texture2D tex2D // 屏幕的尺寸 #define iResolution _ScreenParams // 屏幕中的坐標(biāo),以pixel為單位 #define gl_FragCoord ((_iParam.srcPos.xy/_iParam.srcPos.w)*_ScreenParams.xy)   #define PI2 6.28318530718 #define pi 3.14159265358979 #define halfpi (pi * 0.5) #define oneoverpi (1.0 / pi)  fixed4 iMouse; sampler2D iChannel0; fixed4 iChannelResolution0;  struct v2f {  float4 pos : SV_POSITION;  float4 srcPos : TEXCOORD0;  };   // precision highp float; v2f vert(appdata_base v){  v2f o; o.pos = mul (UNITY_MATRIX_MVP, v.vertex); o.srcPos = ComputeScreenPos(o.pos);  return o;  }   vec4 main(v2f _iParam);  fixed4 frag(v2f _iParam) : COLOR0 {  return main(_iParam); }   vec4 main(v2f _iParam) { vec2 p = (2.0*gl_FragCoord.xy-iResolution.xy)/iResolution.y; float tau = 3.1415926535*2.0; float a = atan(p.x,p.y); float r = length(p)*0.75; vec2 uv = vec2(a/tau,r);  //get the color float xCol = (uv.x - (iGlobalTime / 3.0)) * 3.0; xCol = sign(xCol)*fmod(xCol, 3.0); vec3 horColour = vec3(0.25, 0.25, 0.25);  if (xCol < 1.0) { horColour.r += 1.0 - xCol; horColour.g += xCol; } else if (xCol < 2.0) { xCol -= 1.0; horColour.g += 1.0 - xCol; horColour.b += xCol; } else { xCol -= 2.0; horColour.b += 1.0 - xCol; horColour.r += xCol; }  // draw color beam uv = (2.0 * uv) - 1.0; float beamWidth = (0.7+0.5*cos(uv.x*10.0*tau*0.15*clamp(floor(5.0 + 10.0*cos(iGlobalTime)), 0.0, 10.0))) * abs(1.0 / (30.0 * uv.y)); vec3 horBeam = vec3(beamWidth,beamWidth,beamWidth); vec4 gl_FragColor = vec4((( horBeam)* horColour ), 1.0);  return gl_FragColor; }  ENDCG  SubShader {  Pass {  CGPROGRAM  #pragma vertex vert  #pragma fragment frag  #pragma fragmentoption ARB_precision_hint_fastest  ENDCG  }  }  FallBack Off }

代碼分析

代碼分兩部分,顏色 * 光圈,如下圖:

OpenGL,Shader,彩色光圈 * OpenGL,Shader,彩色光圈 = OpenGL,Shader,彩色光圈

彩色的算法

代碼如下:

vec2 p = (2.0*gl_FragCoord.xy-iResolution.xy)/iResolution.y;float tau = 3.1415926535*2.0;float a = atan(p.x,p.y);float r = length(p)*0.75;vec2 uv = vec2(a/tau,r); //get the colorfloat xCol = (uv.x - (iGlobalTime / 3.0)) * 3.0;xCol = mod(xCol, 3.0);vec3 horColour = vec3(0.25, 0.25, 0.25); if (xCol < 1.0) { horColour.r += 1.0 - xCol; horColour.g += xCol;} else if (xCol < 2.0) { xCol -= 1.0; horColour.g += 1.0 - xCol; horColour.b += xCol;} else { xCol -= 2.0; horColour.b += 1.0 - xCol; horColour.r += xCol;}

這段代碼是寫在fragment shader中的,也就是說,每個像素點的渲染都會調(diào)用這段代碼。

a) vec2 p = (2.0*gl_FragCoord.xy-iResolution.xy)/iResolution.y;

p表示把當(dāng)前的坐標(biāo)軸縮小到原來的1/2,原點移動到屏幕中間,并把x,y軸的坐標(biāo)范圍縮小到1左右的值(即p的y軸范圍在-1到1之間,x軸的范圍也在附近);

b)float a = atan(p.x, p.y);

a表示p點繞原點的角度,范圍為[-π,π];所以uv.x = a/tau的范圍為[-1/2, 1/2];

float xCol = (uv.x - (iGlobalTime / 3.0)) * 3.0; xCol=mod(xCol, 3)的范圍為 [0,3]

c) xCol經(jīng)過上面處理,其范圍為[0,3]; 現(xiàn)在把這個范圍平均分成3份,每一份做一個顏色的混合:

[0,1]:Red和Green混合;[1,2]:Green和Blue混合;[2,3]:Blue和Red混合。

光圈的算法

a)畫光圈

式子:abs(1.0 / (30.0*uv.y)) 

知識:在shader中,如果color的值為負(fù)數(shù),則認(rèn)為是0,不顯示該顏色。

uv變量中uv.y表示點到原點的距離,值的范圍為 [0, ]

a-1) uv = (2.0 * uv) - 1.0;  先把uv縮小到原來的1/2,然后向外移動1單位。uv.y的值為[-1/2, ];由于負(fù)值color不被顯示,如下圖A:

a-2) 1.0/(30.0* uv.y); 縮小到原來的1/30,并做個倒數(shù),如下圖B

a-3) abs(1.0/(30.0* uv.y)); 然后做個絕對值,如下圖C

OpenGL,Shader,彩色光圈=》OpenGL,Shader,彩色光圈=》OpenGL,Shader,彩色光圈

畫光圈的算法和《【OpenGL】Shader實例分析(一)-Wave》中畫線的算法很類似。

b)光圈動畫 

式子:(0.7+0.5*cos(uv.x*10.0*tau*0.15*clamp(floor(5.0 + 10.0*cos(iGlobalTime)), 0.0, 10.0)))

為了方便,把上面的式子分解如下:

式1:float tt = 5.0 + 10.0*cos(iGlobalTime); 
式2:float param = clamp(floor(tt), 0.0, 10.0);
式3:float beamWidth = (0.7+0.5*cos(uv.x*pi*param));

我們把beamWidth作為顏色輸出;

先理解式3,如果當(dāng)param為0,、1、2、3、10時,分別參考下圖: 

OpenGL,Shader,彩色光圈 =》 OpenGL,Shader,彩色光圈 =》OpenGL,Shader,彩色光圈=》 OpenGL,Shader,彩色光圈=》OpenGL,Shader,彩色光圈

式2的作用,把tt的值做一個包裝,使其為0到10之間的整數(shù)

式1的作用,起周期作用,值域為[-5,15]; 其值如左下圖所示; 又由于式2做了clamp,把大于10和小于0的值去掉,最終的動畫如右下圖所示:

OpenGL,Shader,彩色光圈 ====》OpenGL,Shader,彩色光圈

把光圈和顏色整合起來就看到了和文章開頭的動畫一樣的效果了。

最后吧所有的效果整合起來,如下圖:

【彩色】 => 【彩色旋轉(zhuǎn)】 =》【彩色旋轉(zhuǎn)+動畫】 =》【彩色旋轉(zhuǎn)+動畫+光圈】

OpenGL,Shader,彩色光圈=》OpenGL,Shader,彩色光圈=》OpenGL,Shader,彩色光圈=》OpenGL,Shader,彩色光圈

本次分析到此結(jié)束,歡迎討論。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产片一区二区| 少妇激情一区二区三区视频| 日韩一区二区中文| 国产精品不卡在线观看| 91在线网站视频| 成人性生交大片免费看网站| 成人在线视频你懂的| 456亚洲精品成人影院| 国产精品欧美一区二区三区不卡| 亚洲色图欧洲色图婷婷| 午夜精品久久久久久| 久久精品国产美女| 色黄视频在线观看| 日本高清在线观看| 最新国产在线拍揄自揄视频| 四虎永久在线精品| 国产免费一区二区| 亚洲一区在线播放| 美女少妇全过程你懂的久久| 日批视频在线播放| 亚洲视频在线观看日本a| 日本精品网站| 蜜桃av在线播放| 国产区在线观看视频| 一区二区三区在线观看av| 亚洲产国偷v产偷v自拍涩爱| 韩国av在线免费观看| 一本久道久久综合狠狠爱亚洲精品| www.成人网| 无码人妻aⅴ一区二区三区玉蒲团| 欧美成人精品| 精品人妻一区二区三| |精品福利一区二区三区| 中文一区二区三区四区| 色丁香婷婷综合久久| 一区二区三区国产精华| а√在线中文在线新版| 一级黄色片网站| 久久精品一区二区三区av| 欧美在线中文字幕| 日本欧美在线视频| 91成人精品| 你懂得在线观看| 亚洲精品videosex极品| 可以看污的网站| 天堂在线中文| 亚洲精华一区二区三区| 濑亚美莉一二区在线视频| 男人操女人动态图| 91九色蝌蚪porny| 99国产精品白浆在线观看免费| 久久一区二区三区欧美亚洲| 91视频国产资源| 亚洲精一区二区三区| 国产原创一区二区| 九七午夜视频| 男人j进女人j| 国产情人节一区| 欧美美女操人视频| 久久久久久国产精品久久| 久久精品在线视频| 天堂va久久久噜噜噜久久va| 久久国产精品二区| 激情小说综合网| 久久在线免费观看视频| 性欧美lx╳lx╳| 7777精品伊人久久久大香线蕉最新版| 国产精品原创| 午夜时刻免费入口| 国产一区免费看| 欧美美女操人视频| 成人信息集中地| 欧美激情办公室videoshd| 久久国产成人午夜av影院宅| 黄色大片在线观看| 成人免费在线播放视频| 欧美大尺度激情区在线播放| 久久精品国产久精国产一老狼| 乱小说欧美综合| 久久精品一二三区| 一级毛片在线播放| 日本电影一区二区在线观看| 国产精品初高中害羞小美女文| 久久国内精品一国内精品| 久久99国产精一区二区三区| 亚洲精品视频网上网址在线观看| 日韩videos| 人妻无码一区二区三区免费| 91麻豆精品在线观看| 粉嫩91精品久久久久久久99蜜桃| 亚洲综合激情另类小说区| 免费a级观看| 亚洲老板91色精品久久| 国产麻豆一区二区三区在线观看| 成人在线视频一区| 在线电影欧美日韩一区二区私密| 欧洲美熟女乱又伦| 999精品一区| 国产a区久久久| 91视视频在线直接观看在线看网页在线看| 性网站在线看| 亚洲男人的天堂在线aⅴ视频| 国产精品国产亚洲精品看不卡| 国产视频1区2区3区| 黑人巨大狂躁日本妞在线观看| yourporn久久国产精品| 成人免费视频在线观看超级碰| 美日韩一级片在线观看| 欧美日韩在线播放三区四区| 一区二区日韩| 日韩欧美一区二区久久婷婷| 久久精品二区亚洲w码| 性色av一区二区| 成人激情午夜影院| 三级小说欧洲区亚洲区| 中国女人内谢69视频| 国产女人免费看a级丨片| 国产精品播放| 精精国产xxx在线视频app| 欧美日韩国产在线观看网站| 狠狠做深爱婷婷久久综合一区| 中文字幕日韩久久| 在线看成人av| 亚洲一区二区三区成人| 污香蕉视频在线观看| 国内精品视频在线| 色婷婷一区二区三区四区| 91社在线播放| 一区二区三区视频网| 精品久久久久久中文字幕2017| 天天干天天曰天天操| 精品久久久久久无码中文野结衣| www.se五月| 日韩欧美中文在线| 欧美激情中文字幕| 欧美性xxxxxx少妇| 久久草在线视频| 国产精品综合网| 国产福利在线免费观看| 久久香蕉精品视频| 动漫美女无遮挡免费| 欧美精选午夜久久久乱码6080| 色欧美乱欧美15图片| 久久视频在线直播| 国产在线视频不卡| 国产美女喷水视频| 欧美成人全部免费| 伊人成人网在线看| 欧美日韩免费在线| 国产日本在线观看| h网站在线播放| 日韩av毛片| 色噜噜狠狠色综合欧洲selulu| 男生和女生一起差差差视频| 欧美亚洲色图视频| 日韩一区二区高清| 欧美人妻精品一区二区免费看| 三级欧美韩日大片在线看| 国产日韩欧美a| 日韩伦理一区二区| 国产亚洲欧洲高清| 久久se精品一区二区| 午夜影院一区| 亚洲日本伊人| 成人激情视频网站| 91精品91久久久中77777| 国产精品国产三级国产专区52| 欧美日韩视频专区在线播放| 制服丝袜影音先锋| 91超碰国产在线| 国产黄色免费电影| 国产男男gay体育生网站| 九九热精品视频在线播放| 国产精品自产拍| 黄色免费视频网站| 88xx成人永久免费观看| 亚洲欧洲三级| 男女曰b免费视频| 蜜桃视频www网站在线观看| 91aaa精品| 日本中文字幕久久看| 亚洲 欧美 日韩 国产综合 在线| 欧美成人精品欧美一级乱黄| 日本伊人色综合网| 欧美日韩亚洲91| www.天天操| 中文字幕在线视频一区| 高清视频在线观看三级| 妺妺窝人体色www婷婷| 青青在线视频| 亚州av在线播放| 91国在线精品国内播放| 日韩国产小视频| 少妇精品一区二区三区| 欧美日韩精品一区二区天天拍小说| 美女免费视频一区二区| 国产精品无码天天爽视频| 超碰人人草人人| 欧美一区二区黄色| 9i在线看片成人免费| 欧美日韩一区二区免费视频| 亚洲高清久久网| 久久综合色一综合色88| 99国产精品久久久久久久| 欧美日韩成人免费| 亚洲av无码一区二区三区dv| 8x拔播拔播x8国产精品| 亚洲AV无码精品自拍| 伊人免费在线| 美女翘臀白浆直流视频| 日本熟女一区二区| 成人午夜激情在线| 欧美午夜精品久久久久久蜜| 宅男深夜视频| 色啪免费观看视频| 日韩免费视频网站| 欧美日韩一区二区视频在线| 日韩网址在线观看| 国产成人久久久精品一区| 亚洲欧美春色| 精品国产一二三| 天堂av在线| www视频网站| 亚洲精选一区二区三区| 福利片免费在线观看| 日本激情视频在线观看| 久久久国产精品无码| 日本高清不卡视频| 色综合久久天天综线观看| 日韩黄色片在线| 九七影院97影院理论片久久| 精品国产1区二区| 91午夜视频在线观看| 136av视频导航| 国产精品久久久久久久久免费相片| 国产目拍亚洲精品99久久精品| 女人黄色一级片| 成人午夜剧场免费观看完整版| 91国拍精品国产粉嫩亚洲一区| 中文字幕亚洲自拍| 欧美精品无码一区二区三区| 欧美另类极品videosbest视频| 蜜桃a∨噜噜一区二区三区| 国产精品青草久久久久福利99| 91直播在线观看| 欧美特黄视频| 国产中文日韩欧美| 性伦欧美刺激片在线观看| 成人免费毛片高清视频| 九色porny丨精品自拍视频| 丁香亚洲综合激情啪啪综合| 九九热精彩视频| 国产精品美女久久久久久久久| 丁香五精品蜜臀久久久久99网站| 九九精品视频在线| 香港三日本三级少妇66| 国产精品h片在线播放| 欧美丰满老妇熟乱xxxxyyy| 亚洲电影第三页| 国产高清精品软件丝瓜软件| 国产精品欧美日韩一区二区| 郴州新闻综合频道在线直播| 加勒比av中文字幕| 欧美日韩大片| sese在线播放| 99热com| www.久久伊人| 最近2019中文字幕第三页视频| 羞羞视频在线免费国产| jjzz在线观看| 日本不卡一区二区三区视频| 成人性生交大片免费网站| 欧美精品丝袜中出| 国内精品福利视频| 999av视频| 九九九免费视频| 性欧美暴力猛交另类hd| 看片的网站亚洲| 中出一区二区| 欧美精品福利| 欧美xx网站| 精品一区二区三区久久| 欧美先锋资源| 日本特黄在线观看| 一区二区三区成人在线视频| 亚洲欧美中文在线视频| 成人免费a级片| 任你躁av一区二区三区| 日韩av大片| 日韩av在线一区二区三区| 欧美成人有码| 国产成人短视频在线观看| 欧美影视一区在线| 正在播放精油久久| 国产高清成人在线| 成视频在线免费观看| 亚洲精品suv精品一区二区| 精品视频资源站| 日韩视频在线观看一区| 国产91成人在在线播放| 亚洲一区二区久久久久久久| 先锋影音av321| 一女被多男玩喷潮视频| 亚洲国产精品99久久久久久久久| 日韩欧美在线免费观看视频| 亚洲免费网站观看视频| 国产在亚洲线视频观看| 亚洲第一成人在线视频| 在线观看中文字幕av| 99久久婷婷国产精品综合| 久久久999免费视频| 久久免费美女视频| 在线能看的av网站| 88av在线视频| 欧亚精品在线观看| 国产精品久久久久久麻豆一区软件| 2021中文字幕一区亚洲| 日本精品久久久久影院| 中文av字幕在线观看| 欧美v亚洲v综合v国产v仙踪林| 91国内视频| 狠狠干狠狠搞| 六月丁香色婷婷| 久久97久久97精品免视看秋霞| 二区三区在线| 久久深夜福利| 91精品国产综合久久久久久豆腐| 视频一区视频二区中文|