Godot - Shader - 制作薄暮 Fog

視頻教學鏈接:

https://www.bilibili.com/video/av55565296

代碼:

https://github.com/zszen/godot_lesson/commit/6a80fad6051a678c26f6673e035d85373a32282c

shader_type canvas_item;

uniform vec3 color = vec3(.35,.48,.7);
uniform int OCTAVES = 4;

float rand(vec2 uv){
    return fract(sin(dot(uv, vec2(56,78))*1000.0)*1000.0);
}

float noise(vec2 uv){
    vec2 i = floor(uv);
    vec2 f = fract(uv);
    float a = rand(i);
    float b = rand(i+vec2(1.,0.));
    float c = rand(i+vec2(.0,1.));
    float d = rand(i+vec2(1.,1.));
    
    vec2 cubic = f*f*(3.-2.*f);
    
//  return mix(a,b,f.x)+(c-a)*f.y*(1.-f.x)+(d-b)*f.x*f.y;
    return mix(a,b,cubic.x)+(c-a)*cubic.y*(1.-cubic.x)+(d-b)*cubic.x*cubic.y;
}

float fbm(vec2 uv){
    float val = 0.;
    float scale = .5;
    
    for(int i=0;i<OCTAVES;i++){
        val+=noise(uv)*scale;
        uv*=2.;
        scale*=.5;
    }
    
    return val;
}

void fragment(){
    vec2 uv = UV*20.;
    uv.y*=2.;
    
    vec2 motion = vec2(fbm(uv+vec2(TIME*-.5, sin(TIME*.3+fract(uv.x*uv.y)))));
    float final = fbm(uv+motion);
    
    COLOR = vec4(color, rand(uv));
//  COLOR = vec4(color, final*.35);
}

解釋

  • 偽隨機數(shù) fract(sin(dot(uv, vec2(56,78))*1000.0)*1000.0); 其中uv和[56,78]點的關(guān)系就理解成他們之間的距離就好(非精準)
    frac(sin(x*1000.)*1000.0)的圖像

    2d

    3d

  • noise噪點作用是讓當前點在其周圍四個頂點實現(xiàn)二維連續(xù)

    • mix(a,b,f.x) 只能在x方向上連續(xù)
    • (c-a)*f.y*(1.-f.x)(d-b)*f.x*f.y都只能y方向上連續(xù)
    • 整體這樣看更直觀
      (a+(c-a)*f.y)*(1.-f.x)+(b+(d-b)*f.y)*f.x
      這個圖像的左上角趨近于a徐块,右上角趨近于b, 左下角趨近于c隐绵,右下角趨近于d, 記住這個公式就比較明確
    • 混合在一起脖旱,向四個邊緣方向連續(xù)


      mix(a,b,f.x)
(c-a)*f.y*(1.-f.x)
(d-b)*f.x*f.y
合并

Grapher公式: https://pan.baidu.com/s/1wX1VREvjqMipF6dJ0VSf0A 提取碼: h28g

  • fbm函數(shù)用于將多次不同的霧層疊加在一起届搁,多次循環(huán)后返回值逼近1帕识,不需要再進行范圍處理
  • 通關(guān)不同方向上的運動搔课,讓霧運動起來
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胰柑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子爬泥,更是在濱河造成了極大的恐慌柬讨,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袍啡,死亡現(xiàn)場離奇詭異踩官,居然都是意外死亡,警方通過查閱死者的電腦和手機境输,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門蔗牡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嗅剖,你說我怎么就攤上這事辩越。” “怎么了信粮?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵黔攒,是天一觀的道長。 經(jīng)常有香客問我,道長督惰,這世上最難降的妖魔是什么不傅? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮赏胚,結(jié)果婚禮上访娶,老公的妹妹穿的比我還像新娘。我一直安慰自己栅哀,他們只是感情好震肮,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著留拾,像睡著了一般戳晌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痴柔,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天沦偎,我揣著相機與錄音,去河邊找鬼咳蔚。 笑死豪嚎,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的谈火。 我是一名探鬼主播侈询,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼糯耍!你這毒婦竟也來了扔字?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤温技,失蹤者是張志新(化名)和其女友劉穎革为,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舵鳞,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡震檩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜓堕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抛虏。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖俩滥,靈堂內(nèi)的尸體忽然破棺而出嘉蕾,到底是詐尸還是另有隱情,我是刑警寧澤霜旧,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布错忱,位于F島的核電站儡率,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏以清。R本人自食惡果不足惜儿普,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掷倔。 院中可真熱鬧眉孩,春花似錦、人聲如沸勒葱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凛虽。三九已至死遭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凯旋,已是汗流浹背呀潭。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留至非,地道東北人钠署。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像荒椭,于是被迫代替她去往敵國和親谐鼎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353