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

首頁 > 系統 > Android > 正文

OpenGL Shader實例分析(7)雪花飄落效果

2019-10-21 21:24:54
字體:
來源:轉載
供稿:網友

研究了一個雪花飄落效果,感覺挺不錯的,分享給大家,效果如下:

OpenGL,Shader,雪花飄落

代碼如下:

Shader "shadertoy/Flakes" { // https://www.shadertoy.com/view/4d2Xzc 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 #define mix lerp #define atan atan2 #define fract frac  #define texture2D tex2D // 屏幕的尺寸 #define iResolution _ScreenParams // 屏幕中的坐標,以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 = gl_FragCoord.xy/iResolution.xy; vec3 col = vec3(0,0,0); float dd = 150; for( int i=0; i<dd; i++ ) {  float an = 6.2831*float(i)/dd;  vec2 of = vec2( cos(an), sin(an) ) * (1.0+0.6*cos(7.0*an+iGlobalTime)) + vec2( 0.0, iGlobalTime );  col = max( col, texture2D( iChannel0, p + 20*of/iResolution.xy ).xyz );  col = max( col, texture2D( iChannel0, p + 5.0*of/iResolution.xy ).xyz ); } col = pow( col, vec3(1.0,2.0,3.0) ) * pow( 4.0*p.y*(1.0-p.y), 0.2);  return vec4( col, 1.0 ); }  ENDCG   SubShader {  Pass {   CGPROGRAM    #pragma vertex vert   #pragma fragment frag   #pragma fragmentoption ARB_precision_hint_fastest    ENDCG  }  }  FallBack Off }

代碼分析:

1)七邊形雪花的繪制算法

具體代碼如下:

float dd = 150;for( int i=0; i<dd; i++ ){ float an = 6.2831*float(i)/dd; vec2 of = vec2( cos(an), sin(an) ) * (1.0+0.6*cos(7.0*an+iGlobalTime)) + vec2( 0.0, iGlobalTime ); col = max( col, texture2D( iChannel0, p + 20*of/iResolution.xy ).xyz ); col = max( col, texture2D( iChannel0, p + 5.0*of/iResolution.xy ).xyz );}

在理解這段代碼前,先理解怎么畫一個圈,代碼如下:

float dd = 30;for( int i=0; i<dd; i++ ){ float an = 6.2831*float(i)/dd; vec2 of = vec2( cos(an), sin(an) ); col = max( col, texture2D( iChannel0, p + 20*of/iResolution.xy ).xyz );}

然后再準備一張貼圖,圖片中間是一個白色像素,周圍都是黑色

OpenGL,Shader,雪花飄落

效果如下:

OpenGL,Shader,雪花飄落

這段代碼處于fragment shader中,意味著屏幕上每個點都會進行上述的算法。具體如下,遍歷貼圖中該點周圍的點(上面的代碼中為距離該點為20單位的圓上的點),把周圍點中最亮的作為該點的顏色。 上面的貼圖有點特殊,只有一個點是白色,其余點都是黑色的。那么只有距離該點正好為20單位的點才會變成亮色,其余的點都是黑色,如上圖的結果。一句話總結上面算法的效果:貼圖中的每一個“相對亮點”的周圍都會產生“相對亮的特定圖形”,圖形的亮度取決于該點的亮度,越亮越明顯。效果可以參考文末的圖片。

接下來理解這段代碼:

float dd = 150;for( int i=0; i<dd; i++ ){ float an = 6.2831*float(i)/dd; vec2 of = vec2( cos(an), sin(an) ) * (1.0+0.7*cos(7.0*an)); col = max( col, texture2D( iChannel0, p + 20*of/iResolution.xy ).xyz );// col = max( col, texture2D( iChannel0, p + 5.0*of/iResolution.xy ).xyz );}

輸出結果如下:

OpenGL,Shader,雪花飄落

a)  1.0+0.7*cos(7.0*an)的圖像如下:

OpenGL,Shader,雪花飄落

b)算法中 of 向量的路徑為:

OpenGL,Shader,雪花飄落

結果就很清晰了;其實這里算法和《【OpenGL】Shader實例分析(二)- Heart》中繪制心形的算法很類似。

最后加上時間就可以實現動畫了:

vec2 of = vec2( cos(an), sin(an) ) * (1.0+0.6*cos(7.0*an+iGlobalTime)) + vec2( 0.0, iGlobalTime );

第一個iGlobalTime,用來控制雪花的旋轉,第二個iGlobalTime使雪花下落。

2)后期顏色等處理

這里可以理解為一種postEffect處理,具體是如下的代碼貢獻的效果:

col = pow( col, vec3(1.0,2.0,3.0) ) * pow( 4.0*p.y*(1.0-p.y), 0.2);

a)  pow(col, vec3(1.0, 2.0, 3.0)) 這句話使得顏色變成暖色調。col值的范圍為[0,1],對小數繼續pow運算,次數越高,該值越小。比如:0.5的1次方是0.5, 2次方為0.25, 3次方為0.125等;所以這句話的作用很明顯:red成份不變,green變小一些,blue變的更小。達到的效果,使得整體顏色會偏向暖色調。

b)pow(4.0*p.y*(1.0-p.y), 0.2) 使得屏幕上下兩邊變暗。

最后附上shader中用到的貼圖:

OpenGL,Shader,雪花飄落

經過程序處理后,得到如下:

OpenGL,Shader,雪花飄落

文章完畢,歡迎討論。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品极品在线观看播放免费视频| 成人福利网站在线观看| 亚洲国产精品福利| 亚洲欧美激情四射在线日| 97成人精品视频在线观看| 国产精品免费久久久久影院| 国产精品激情av在线播放| 欧美在线一区二区视频| 久久九九有精品国产23| 欧美性资源免费| 97**国产露脸精品国产| 亚洲精品99久久久久中文字幕| 欧美在线性视频| 欧美日韩国产999| 国产日韩欧美在线看| 精品国产乱码久久久久久婷婷| 97精品国产91久久久久久| 欧美一级片免费在线| 国产精品大片wwwwww| 亚洲国产精品资源| 欧美成人免费一级人片100| 欧美精品一区在线播放| xvideos亚洲人网站| 亚洲丝袜av一区| 日韩女优在线播放| 日本欧美国产在线| 国产日产亚洲精品| 国产免费一区视频观看免费| 中文字幕亚洲国产| 欧美国产日韩精品| 欧美亚洲国产视频小说| 欧美专区在线观看| xxxxx91麻豆| 日本精品视频网站| 亚洲欧美中文日韩在线| 综合网日日天干夜夜久久| 亚洲成人a级网| 日韩经典中文字幕在线观看| 亚洲偷熟乱区亚洲香蕉av| 色琪琪综合男人的天堂aⅴ视频| 国产亚洲精品久久久久久777| 亚洲区在线播放| 欧美又大又硬又粗bbbbb| 国产精品手机播放| 中文字幕在线看视频国产欧美在线看完整| 国产精品第100页| 亚洲国产欧美一区二区三区久久| 成人春色激情网| 精品一区二区三区四区在线| 欧美日韩中文字幕在线视频| 欧美激情网站在线观看| 亚州欧美日韩中文视频| 亚洲区免费影片| 日本精品久久中文字幕佐佐木| 欧美精品免费看| 亚洲精品电影在线观看| 成人免费视频网址| 国产欧美日韩综合精品| 亚洲精品国产品国语在线| 国产综合香蕉五月婷在线| 亚洲人成电影网站色www| 国产精品国模在线| 日韩激情视频在线| 欧美夫妻性视频| 亚洲色图校园春色| 国产精品久久久久久久久久99| 亚洲直播在线一区| 成人国产精品色哟哟| 国产欧美一区二区三区久久人妖| 国产精品综合久久久| 性色av一区二区咪爱| 日韩在线观看免费全| 亚洲人成在线观看网站高清| 日韩va亚洲va欧洲va国产| 国产区精品在线观看| 国产美女精品视频| 国产亚洲人成网站在线观看| 亚洲欧洲国产精品| 91情侣偷在线精品国产| 国产精品三级网站| 国产精品igao视频| 黑人精品xxx一区| 91亚洲精品久久久| 欧美极品第一页| 国产精品黄色影片导航在线观看| 55夜色66夜色国产精品视频| 欧美综合激情网| 美女福利视频一区| 亚洲白虎美女被爆操| 国产精品色午夜在线观看| 日韩免费在线播放| 欧美日韩在线影院| 欧洲成人性视频| 色哟哟网站入口亚洲精品| 92看片淫黄大片看国产片| 亚洲一区亚洲二区| 91久久嫩草影院一区二区| 日韩欧美综合在线视频| 国内外成人免费激情在线视频| 亚洲黄页网在线观看| 亚洲肉体裸体xxxx137| 亚洲欧美日韩精品久久| 久久免费视频在线观看| 亚洲国产日韩欧美在线图片| 中文字幕国内精品| 国产午夜精品视频免费不卡69堂| 91手机视频在线观看| 日韩av手机在线观看| 色一情一乱一区二区| 中文字幕国内精品| 中文字幕欧美精品日韩中文字幕| 国产精品劲爆视频| 欧美国产日产韩国视频| 日韩电影免费在线观看| 国产成人精品一区| 国产精品美女视频网站| 亚洲性猛交xxxxwww| 亚洲无限av看| 国产精品流白浆视频| 91精品久久久久久久久青青| 最近2019年手机中文字幕| 日韩毛片在线观看| 尤物精品国产第一福利三区| 国产精品久久久999| 欧美激情极品视频| 成人写真福利网| 日韩电影中文字幕一区| 亚洲国产精品久久久| 欧美一区二区三区四区在线| 亚洲精品日韩欧美| 亚洲男人天堂手机在线| 久久免费少妇高潮久久精品99| 欧美日韩激情小视频| 精品国模在线视频| 国产97在线|日韩| 亚洲影院色在线观看免费| 疯狂蹂躏欧美一区二区精品| 国产91在线播放九色快色| 欧美精品免费看| 久久久国产在线视频| 九九精品在线视频| 日韩一区二区三区在线播放| 亚洲精品欧美一区二区三区| 日韩国产精品亚洲а∨天堂免| 欧美日韩国产成人高清视频| 亚洲片在线观看| 国产综合福利在线| 精品中文字幕久久久久久| 最近日韩中文字幕中文| 欧美视频在线观看免费网址| 日韩风俗一区 二区| 欧美一级成年大片在线观看| 日韩电影中文字幕在线观看| 精品动漫一区二区三区| 国产亚洲人成a一在线v站| 亚洲电影免费观看高清完整版在线观看| 日韩av片免费在线观看| 91国自产精品中文字幕亚洲| 欧美中文在线观看| 国内精品视频在线| 欧美一级电影久久| 亚洲人成电影在线播放| 亚洲大胆美女视频| 91精品国产九九九久久久亚洲|