shader 邊緣發光

2021-10-02 09:06:32 字數 1482 閱讀 6252

當視角方向與法線方向垂直時,頂點座標位置即為邊緣位置。

在properties中定義以下變數:

_xraycolor(「xray color」,color) = (1,1,1,1)

_xraypower(「xray power」,range(0.0001,3)) = 0.1

在pass中定義以下變數:

float4 _rimcolor;

float _rimpower;

定義乙個結構體:

struct v2f

;在片元著色器中進行顏色輸出:

fixed4 frag (v2f i) : sv_target

總的**如下:

shader "myshader/newshader"

_diffuse("diffuse",color) = (1,1,1,1)

_outline("outline",range(0,0.2)) = 0.003

_outlinecolor("outline color",color)=(0,0,0,0)

_steps("steps",range(1,30))=1

_tooneffect("toon effect",range(0,1))=0.5

//_ramptex("ramp tex",2d)="white"{}//漸進紋理

_rimcolor("rim color",color)=(1,1,1,1)

_rimpower("rim power",range(0.0001,3))=0.1

}subshader

lod 100

pass//描邊通道,可不看

;

fixed4 frag(v2f i) :sv_target

endcg

} pass//邊緣發光通道!!!

;sampler2d _maintex;

float4 _maintex_st;

float4 _diffuse;

float _steps;

float _tooneffect;

//sampler2d _ramptex;

float4 _rimcolor;

float _rimpower;

fixed4 frag (v2f i) : sv_target

endcg}}

fallback "diffuse"

}

也可以這樣寫,效果差不多,以下是單純的邊緣發光效果。

shader "myshader/xray******vf" 

subshader

lod 200

pass

; struct v2f ;

float4 frag (v2f i) : color

endcg

} } fallback "diffuse"

}

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...

shader例項 物體描邊自發光

1。思路 面向攝像機的物體,它的表面法線 normal 和視角向量 viewdir 的 夾角 越靠近邊緣就越大。那麼就可以根據這個夾角進行處理,夾角越大,那麼發射光越強,就可以實現我們想要的效果。2。選擇shader 在這裡因為是處理表面的各個點,所以使用su ce shader比較方便。3。要使用...