日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 系統(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的值為負數(shù),則認為是0,不顯示該顏色。

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

a-1) uv = (2.0 * uv) - 1.0;  先把uv縮小到原來的1/2,然后向外移動1單位。uv.y的值為[-1/2, ];由于負值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ā)表
欧美日韩国产黄色| 亚洲校园欧美国产另类| 中文字幕国产欧美| 国产不卡视频在线| 欧美激情一区二区三区在线| 国产1卡2卡三卡四卡网站| 91精品国产全国免费观看| 中文字幕日韩视频| 欧美日韩中文字幕| 国产伦精品免费视频| 国产欧美日韩精品高清二区综合区 | 欧美日韩精品不卡| 欧美日韩国产综合视频在线观看| 在线精品视频免费播放| 亚洲九九精品| 一区二区三区精品久久久| 中文字幕欧美亚洲| 人妻一区二区三区免费| 国产一二三区精品视频| 97久久精品| 一区二区视频在线| 久久精品黄色片| 日韩高清不卡一区二区| 久久久久久久久综合| 婷婷久久综合网| 国产婷婷精品| 亚洲欧美韩国综合色| 中文字幕欧美人妻精品一区蜜臀| 在线观看国产一级片| 亚洲综合在线不卡| 精品久久香蕉国产线看观看gif | 国产最新在线| 国产一区三区三区| 亚洲成在线观看| 欧美婷婷精品激情| 国产午夜在线观看| 香蕉精品久久| 欧美日韩综合视频| 精品日韩在线观看| 国产免费一级| 欧美在线视频第一页| 欧美日韩在线视频免费观看 | 欧美日韩中文字幕综合视频| 久久精品久久精品国产大片| 91日韩欧美| 精品久久香蕉国产线看观看gif| 日韩欧美亚洲区| 一区二区三区精品在线| 日本a口亚洲| 久久久精品99| 国产三级视频在线播放线观看| 日韩一二三四区| 色综合天天综合网天天狠天天| 午夜国产在线视频| 国产一区深夜福利| 欧美中文字幕在线| 91精品国产丝袜白色高跟鞋| 日韩精品视频在线播放| 91欧美日韩在线| 一区在线免费| 日韩精品视频网站| 91久久中文| 欧美不卡视频| 免费在线视频一级不卡| 日韩高清在线一区二区| 国产一区二中文字幕在线看| 91精品国产综合久久久久久漫画| 亚洲大片免费看| 91精品综合久久| 成人a在线观看| 99精品人妻国产毛片| 亚洲图片小说综合| 最新中文字幕在线播放| 欧美日韩国产片| 精品日韩av一区二区| 国产区日韩欧美| 精品婷婷伊人一区三区三| 国产视频一区三区| 日韩欧美在线精品| 欧美99久久| 粉嫩粉嫩芽的虎白女18在线视频| 中文字幕在线日韩| 91精品无人成人www| 日韩欧美在线看| 国产欧美日韩不卡免费| 在线国产1区| 欧美日韩中文字幕精品| 亚洲视频在线观看日本a| 久久久久久久久99精品| 久久99久久久欧美国产| 成人一区二区不卡免费| 久久久精品国产99久久精品芒果| 国产一二三区精品视频| 欧美不卡视频一区发布| 亚洲综合日韩欧美| 日韩中文字幕| 欧美日韩精品在线| 99pao成人国产永久免费视频| 欧美成人vr18sexvr| 日韩美女视频一区二区在线观看| 精品999视频| 国产v日产∨综合v精品视频| 1024国产在线| 国产永久在线观看| 精品视频在线导航| 精品在线99| 一区二区三区精品久久久| 国产91久久久久| 顶级网黄在线播放| 国产69精品久久久久孕妇国产69久久 | 日韩视频在线观看一区| 欧美日韩亚洲国内综合网俺| 欧美日本精品| 美日韩精品免费视频| 亚洲综合三区| 国内精品不卡| 欧洲精品在线视频| 日韩一级在线视频| 日韩.欧美.亚洲| 在线国产99| 欧美日韩国产在线播放| 欧美午夜精品在线| 精品免费视频| 日本a口亚洲| 欧美一级一级性生活免费录像| 在线视频不卡一区二区| 午夜影院在线观看欧美| 欧美日韩久久久| 狠狠色综合色区| 日韩精品在线观看视频| 中文字幕 欧美日韩| 亚洲乱码中文字幕| 国产在线不卡av| 中文字幕2020第一页| 日韩三级高清在线| 成片免费观看| 91九色在线播放| 婷婷中文字幕一区| 国产欧美日韩在线观看| 日韩在线视频观看正片免费网站| 国产日韩在线亚洲字幕中文| 快she精品国产999| 久草视频观看| 国产久卡久卡久卡久卡视频精品| av手机天堂| 欧美日韩精品区| 国产在线观看精品| 欧美三级免费观看| 亚洲国产无线乱码在线观看| 国产一区二中文字幕在线看| 深夜福利一区| 国产极品嫩模在线视频一区| 欧美日韩三级一区| 精品国产乱码久久久久久蜜臀| 91精品国产综合久久久久| 91精品国产自产在线观看永久∴ | 亚洲一级二级| 国产一区不卡精品| 国产在线导航| 国产一级在线播放| 国产高清一区| 亚洲一区中文| 欧美1234区| 大香一本蕉伊线亚洲网| 欧美日韩国产第一页| 日韩不卡高清视频| 激情综合色综合久久| 日韩国产一区三区| 一区二区不卡视频| 欧美日韩中文字幕在线观看| 国产对白在线| 精品熟女一区二区三区| 欧美日韩在线看| 国产字幕在线看| 91色在线看| 91久久在线| 精品极品三级久久久久| 黄色一区二区在线观看| 中文字幕日韩亚洲| 国产免费一级片| 亚洲娇小xxxx欧美娇小| 麻豆一区二区99久久久久| 日韩欧美在线1卡| 1区2区在线| 国产一级视频| 久久riav| 久久婷婷中文字幕| 97caopor国产在线视频| 国产日韩成人精品| 男人的天堂网av| 中文字幕亚洲高清| 亚洲一区在线观看网站| 国产99在线 | 亚洲| 欧美不卡123| 亚洲精品欧美二区三区中文字幕 | wwwwww国产| 国产在线二区| 久草亚洲一区| 欧美熟妇乱码在线一区| 中文字幕欧美日韩在线| 精品免费视频| 精品福利二区三区| 欧美日韩视频免费| 午夜亚洲福利| 欧美日韩三级在线| 国产成人精品三级| 91精品国产自产| 国产一卡2卡3卡4卡网站免费| 欧美日韩国产高清| 国产高清视频一区二区| 亚洲中午字幕| 一级特黄aaa大片在线观看| 久久69成人| 国产xxx在线| 日韩精品视频网站| 色屁屁一区二区| 日韩欧美国产高清| 五月综合激情日本mⅴ| 日韩欧美一级在线| 欧美在线中文字幕| 日韩精品在线视频| 欧美日韩激情一区| 国产羞羞视频在线播放| 天堂中文在线视频| 美女尤物久久精品| 亚洲国产一区自拍| 国产亚洲一级| av亚洲免费| 国产欧美日韩久久| 国产h片在线观看| 日韩在线视频免费观看 | 欧美日韩乱国产| 99视频精品全国免费| 午夜影院在线观看欧美| 日韩欧美综合| 午夜国产福利一区二区| 99精品免费观看| 国产第一页在线播放| 欧洲精品在线一区| 日韩精品福利视频| 欧美日韩国产大片| 中文在线不卡视频| 欧美变态tickling挠脚心| 午夜福利一区二区三区| 日韩在线视频一区| 日韩欧美一级在线| 国产婷婷色一区二区三区| 欧美 亚洲 精品 三区| 激情婷婷亚洲| 中文字幕亚洲欧美| 国产成人综合精品| 精品调教chinesegay| 久久久99免费| 日韩精品大片| 91蜜桃在线视频| 一区二区三区中文字幕在线观看| 亚洲v中文字幕| www.中文字幕在线观看| 在线视频色在线| 中文字幕综合在线| 97久久精品午夜一区二区| 欧美日韩国产一区在线| 国产123在线| 日本精品在线| 国产亚洲欧美色| 免费高清视频日韩| 国产欧美一级| 欧美 日韩 国产 高清| 国产福利在线看| 精品视频www| lutube成人福利在线观看| 日韩av一区二| 国产日韩精品在线看| 日韩国产欧美在线视频| 国产综合精品在线| 在线视频1区2区| 日韩欧美国产网站| 在线视频三区| 国产欧美日韩亚洲| 最近中文字幕日韩精品| 欧美日韩在线观看成人| 国产午夜精品全部视频播放| 在线观看国产一级片| 国产v日产∨综合v精品视频| 欧美日韩在线精品成人综合网 | 91精品国产综合久久蜜臀| av最新网址| 国产一级片播放| 精品国产999| 成人福利一区| 日本国产一区| 日韩在线精品| av免费观看网站| 日韩 欧美 亚洲| 国产免费久久久| 欧美亚洲另类制服自拍| 精品国产999| 欧美激情一区二区三区在线| 国产激情久久| 日韩欧美在线看| 日韩福利视频导航| 日本精品在线中文字幕| 欧美.日韩.国产.一区.二区| www.eeuss影院| 国产日产一区二区| 99中文字幕一区| 精品对白一区国产伦| 日本va欧美va精品发布| 日韩欧美在线字幕| 一区二区三区免费看视频 | 91久久精品国产91性色69| 日韩欧美国产高清91| 91久久精品在线| 日韩欧美999| 日韩欧美成人一区二区三区| 国产欧美日韩中文| 亚洲福利精品| 欧美日韩成人一区| 亚洲精品中文字幕乱码三区不卡| 国产 欧美 日韩 在线| 国产黄在线看| 亚洲黄在线观看| 久久久综合av| 欧美 亚洲 精品 三区| 亚洲专区一二三| 91精品国产综合久久久久久漫画| 国产一区高清视频| 欧美成人一区二区| 欧美日韩综合在线观看| 精品日韩在线观看| 精品一区二区在线观看视频| 日韩视频一区| 久久视频在线免费观看| 国产欧美日韩第一页| 亚洲成av人片在线| 樱花草www在线观看| 日韩在线中文字幕| 亚洲男女av一区二区| 精品国产91乱高清在线观看| 久草视频观看| 91精品无人成人www| 国产欧美日韩亚州综合| 精品国内自产拍在线视频| 国产午夜精品一区二区三区视频| 国产在线拍揄自揄拍| 国产福利精品导航| 99亚洲视频| 久草视频在线看| 精品久久久三级| 欧美日韩国产在线播放| 国产一区久久| 国产成人精品综合网站| 国产香蕉精品视频| 国产成人精品亚洲| 91精品国产综合久久精品app| 久久久99免费| 亚洲高清免费一级二级三级| 国产免费播放一区二区| 欧美,日韩,国产在线| 欧美国产综合在线V| 日韩欧美999| 日韩三级高清在线| 日韩精品第一区| 精品亚洲国内自在自线福利| 久久91精品久久久久久秒播| 精品一区二区在线观看视频| 欧美高清一级片在线| 国产在线精品日韩| 在线国产1区| 中文字幕一区二区三区精品| 欧美日韩亚洲天堂| 国产欧美日韩三级| 欧美日韩国产专区| 91日韩中文字幕| 二区三区不卡不卡视频| 国产小视频在线观看免费| 精品国产乱码一区二区| 日韩欧美中文视频| 日韩在线中文| 91欧美在线| 中文字幕亚洲在| 又黄又www的网站| eeuss一区| 精品一区二区在线观看视频| 一区二区不卡久久精品| 国产三级精品网站| 免费高清特黄a大片| 欧美乱大交xxxxx免费| 国产丝袜一区二区| 中文字幕日韩视频| 日韩一级网站| 在线一区二区三区精品| 日韩欧美资源站| 欧美日韩久久久| www.三级.com| 欧美日韩在线视频首页| 国产一级网站视频在线| 中文字幕亚洲一区在线观看| 亚洲乱码在线观看| 国产婷婷一区二区|