需要考慮到,雪的大小,雪的方向。
面向下雪方向的表面形成積雪,改變顏色。
雪越大,則面向下雪方向積雪越厚。
那麼重點是判斷哪些面是面向下雪方向的。這用向量dot運算可以實現。
然後積雪厚度改變我們用簡單的改變頂點位置實現。
這個shader很粗糙和有不合理的地方,比如發現方向就沒有進行跳幀過,不過,可以借鑑
properties
_bump("bump", 2d) = "bump" {}
_snow("level of snow", range(1, -1)) = 1
_snowcolor("color of snow", color) = (1.0,1.0,1.0,1.0)
_snowdirection("direction of snow", vector) = (0,1,0)
_snowdepth("depth of snow", range(0,1)) = 0
} subshader
lod 200
cgprogram
#pragma su***ce surf standard vertex:vert
sampler2d _maintex;
sampler2d _bump;
float _snow;
float4 _snowcolor;
float4 _maincolor;
float4 _snowdirection;
float _snowdepth;
struct input ;
void surf(input in, inout su***ceoutputstandard o)
endcg
} fallback "diffuse"
Shader 各種Shader效果的合集
1.the fresnel effect 參考 實用的shader shader heroshader character a通道標記陣營區域,1 表示有陣營顏色區域,0 表示非陣營顏色區域 emission emission range 0,1 0 自發光 shadowlevel shadow l...
效果比較好的頭髮shader
效果如下 渲染頭髮時可能會遇到如下問題 1.因為頭髮本質上是乙個乙個的透明的麵片,理所當然會想到使用 blend 混合方式來渲染。但當由於用 blend 時,要關閉z快取寫,即執行 zwirte off,不然透明的區域也會遮擋後面的畫素。此時就會出現問題,頭髮之間的層級會完全混亂,因為頭髮是多個麵片...
開啟深度寫入的半透明效果 Shader
思路 第乙個pass開啟深度寫入,但不輸出顏色,它的目的僅僅是為了把該模型的深度值寫入深度緩衝中 第二個pass進行正常的透明度混合,由於上乙個pass已經得到了逐畫素的正確的深度資訊,該pass就可以按照畫素級別的深度排序結果進行透明渲染。shader chapter8 alphablendzwr...