shader積雪

效果如圖:

原理在代碼注釋中钝腺。

Shader代碼:

Shader"Custom/RealisticSnow"{

Properties{

_MainTex("Base(RGB)",2D)="white"{}

_Bump("Bump",2D)="bump"{}

_Snow("SnowLevel",Range(0,1))=0

_SnowColor("SnowColor",Color)=(1.0,1.0,1.0,1.0)

_SnowDirection("SnowDirection",Vector)=(0,1,0)

_SnowDepth("SnowDepth",Range(0,0.2))=0.1

_Wetness("Wetness",Range(0,0.5))=0.3

}

SubShader{

Tags{"RenderType"="Opaque"}

LOD200

CGPROGRAM

#pragmasurfacesurfLambertvertex:vert

sampler2D_MainTex;

sampler2D_Bump;

float_Snow;

float4_SnowColor;

float4_SnowDirection;

float_SnowDepth;

float_Wetness;

structInput{

float2uv_MainTex;

float2uv_Bump;

float3worldNormal;

INTERNAL_DATA

};

voidvert(inoutappdata_fullv){

//通過【模型到視角的逆轉(zhuǎn)置矩陣】將【積雪方向】轉(zhuǎn)換到【模型坐標(biāo)系】中

float4sn=mul(UNITY_MATRIX_IT_MV,_SnowDirection);

//計算當(dāng)前【點(diǎn)的法線方向】和【下雪反方向】的點(diǎn)乘[-1,1]

//如果頂點(diǎn)點(diǎn)乘大于設(shè)置的_Snow值梨州,那么該點(diǎn)就往【點(diǎn)的法線方向】和【下雪反方向】之和的方向擠出

//如果雪量_Snow為0.5氯檐,那么模型法線為up的點(diǎn)擠出最多

if(dot(v.normal,sn.xyz)>=lerp(1,-1,_Snow))

{

v.vertex.xyz+=(sn.xyz+v.normal)*_SnowDepth*_Snow;

}

}

voidsurf(InputIN,inoutSurfaceOutputo){

half4c=tex2D(_MainTex,IN.uv_MainTex);

o.Normal=UnpackNormal(tex2D(_Bump,IN.uv_Bump));

//_Snow為0.5時训挡,diff值域【-1,1】

halfdifference=dot(WorldNormalVector(IN,o.Normal),_SnowDirection.xyz)-lerp(1,-1,_Snow);

//當(dāng)_Wetness為0.3時,要控制diff的最終值域?yàn)椤?,1】赊舶,那么就有0

//可以得出【法線方向】和【積雪方向】夾角為73-90度之間時派任,就會有【雪】與【地面】材質(zhì)疊加的效果

//而小于73度的,都是積雪悉罕;大于90度的沒有積雪

difference=saturate(difference/_Wetness);

o.Albedo=difference*_SnowColor.rgb+(1-difference)*c;

o.Alpha=c.a;

}

ENDCG

}

FallBack"Diffuse"

}

來源:http://www.lxway.com/40250226.htm

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赤屋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子壁袄,更是在濱河造成了極大的恐慌类早,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗜逻,死亡現(xiàn)場離奇詭異涩僻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門逆日,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嵌巷,“玉大人,你說我怎么就攤上這事室抽√履模” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵坪圾,是天一觀的道長晓折。 經(jīng)常有香客問我,道長兽泄,這世上最難降的妖魔是什么漓概? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮已日,結(jié)果婚禮上垛耳,老公的妹妹穿的比我還像新娘。我一直安慰自己飘千,他們只是感情好堂鲜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著护奈,像睡著了一般缔莲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霉旗,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天痴奏,我揣著相機(jī)與錄音,去河邊找鬼厌秒。 笑死读拆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸵闪。 我是一名探鬼主播檐晕,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蚌讼!你這毒婦竟也來了辟灰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤篡石,失蹤者是張志新(化名)和其女友劉穎芥喇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凰萨,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡继控,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年械馆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片湿诊。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡狱杰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出厅须,到底是詐尸還是另有隱情仿畸,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布朗和,位于F島的核電站错沽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏眶拉。R本人自食惡果不足惜千埃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忆植。 院中可真熱鬧放可,春花似錦、人聲如沸朝刊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拾氓。三九已至冯挎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咙鞍,已是汗流浹背房官。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留续滋,地道東北人翰守。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像疲酌,于是被迫代替她去往敵國和親蜡峰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容