shader例項 物體描邊自發光

2021-07-25 00:20:57 字數 1138 閱讀 2711

1。【思路】:面向攝像機的物體,它的表面法線【normal】和視角向量【viewdir】的【夾角】越靠近邊緣就越大。那麼就可以根據這個夾角進行處理,夾角越大,那麼發射光越強,就可以實現我們想要的效果。

2。【選擇shader】:在這裡因為是處理表面的各個點,所以使用su***ce shader比較方便。

3。要使用的引數【點到攝像機的向量viewdir】,法線向量【normal】,

求點積dot【返回兩個向量夾角的余弦值,歸一,如果方向一樣值1,方向相反值-1,垂直值為0,所以在攝像機看到的範圍內,越靠近邊緣,這個值越小,所以用dot的結果就可以作為衰減係數】

【**】

shader "custom/testshader"

_bumptex("my bump",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"

}【說明】

1.viewdir點到相機的向量歸一 與 該點的法線 求點乘。得出余弦值在[0-1],如果兩條線平行方向一樣值1,相反-1,垂直0,所以越靠近越靠近邊緣,值越小,saturate相當於mathf.clamp(value,0,1)。如果1-這個值,越靠近邊緣,rim值越大,自發光就越強。

2. 效果

shader例項(四)物體描邊 自發光

經過一段時間的慢慢學習,感覺著色器真的非常神奇。下面是通過模型的自發光再根據初中的數學知識實現我們想要的描邊效果。首先看示意圖 1。思路 面向攝像機的物體,它的表面法線 normal 和視角向量 viewdir 的 夾角 越靠近邊緣就越大。那麼就可以根據這個夾角進行處理,夾角越大,那麼發射光越強,就...

Shader例項 邊緣發光和描邊

效果圖 1.邊緣發光 思路 用視方向和法線方向點乘,模型越邊緣的地方,它的法線和視方向越接近90度。點乘越接近0 那麼用 1 減去上面點乘的結果,來作為顏色分量,來反映邊緣顏色強弱。shader custom outline1 rimcolor rim color color 1,1,1,1 邊緣顏...

Shader 自發光效果

表面貼圖 預設灰色 color color color 0,0,0,1 為貼圖附加的顏色 預設為白色 atmocolor atmosphere color color 0,0.4,1.0,1 光暈顏色 size size float 0.1 光暈範圍 outlightpow falloff floa...