經過一段時間的慢慢學習,感覺著色器真的非常神奇。
下面是通過模型的自發光再根據初中的數學知識實現我們想要的描邊效果。
首先看示意圖:
1。【思路】:面向攝像機的物體,它的表面法線【normal】和視角向量【viewdir】的【夾角】越靠近邊緣就越大。那麼就可以根據這個夾角進行處理,夾角越大,那麼發射光越強,就可以實現我們想要的效果。
2。【選擇shader】:在這裡因為是處理表面的各個點,所以使用su***ce shader比較方便。
3。要使用的引數【點到攝像機的向量viewdir】,法線向量【normal】,
求點積dot【返回兩個向量夾角的余弦值,歸一,如果方向一樣值1,方向相反值-1,垂直值為0,所以在攝像機看到的範圍內,越靠近邊緣,這個值越小,所以用dot的結果就可以作為衰減係數】
**如下:
shader "custom/outline_2"
_bumpmap ("bumpmap", 2d) = "bump" {}
_rimcolor("rim color", color) = (0.26,0.19, 0.13, 0.0)
_rimpower("rim power", range(0.5, 8.0)) = 3.0
}subshader
lod 200
cgprogram
#pragma su***ce surf lambert
sampler2d _maintex;
sampler2d _bumpmap;
float4 _rimcolor;
float _rimpower;
struct input ;
void surf (input in, inout su***ceoutput o)
endcg
}fallback "diffuse"
}
shader例項 物體描邊自發光
1。思路 面向攝像機的物體,它的表面法線 normal 和視角向量 viewdir 的 夾角 越靠近邊緣就越大。那麼就可以根據這個夾角進行處理,夾角越大,那麼發射光越強,就可以實現我們想要的效果。2。選擇shader 在這裡因為是處理表面的各個點,所以使用su ce shader比較方便。3。要使用...
模型描邊shader
這個材質的思路實現在於畫兩個pass 在第1 個pass剔除物體的背面,而在第2 個pass在vertex shader 中把頂點在投影空間利用法線沿著邊緣的方向微微擴張,然後再次剔除物體正面,這樣就留下物體描邊。shader unlit outline outline outlinewidth f...
Shader例項 邊緣發光和描邊
效果圖 1.邊緣發光 思路 用視方向和法線方向點乘,模型越邊緣的地方,它的法線和視方向越接近90度。點乘越接近0 那麼用 1 減去上面點乘的結果,來作為顏色分量,來反映邊緣顏色強弱。shader custom outline1 rimcolor rim color color 1,1,1,1 邊緣顏...