這篇是總結篇,也不是什麼解析,就是爲了我自己到時候找的時候方便嘿嘿嘿~
添加鏈接描述(原文)
描邊效果的實現是,在正常模型的渲染狀態下,在模型外面擴展出一個描邊效果。總結下來就是有兩個pass,其中一個pass可以把另一個pass包住,想法是讓模型的形狀像外擴,因此是要在vert函數中進行更改。
v2f vert(appdata_full v)
{
v2f o;
//在vertex階段,每個頂點按照法線的方向偏移一部分,不過這種會造成近大遠小的透視問題
//v.vertex.xyz += v.normal * _OutlineFactor;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
//將法線方向轉換到視空間(*其實這個空間轉換我現在不是很明白。我之後會再開一個來解析一下*)
float3 vnormal = mul((float3x3)UNITY_MATRIX_IT_MV, v.normal);
//將視空間法線xy座標轉化到投影空間,只有xy需要,z深度不需要了
float2 offset = TransformViewToProjection(vnormal.xy);
//在最終投影階段輸出進行偏移操作
o.pos.xy += offset * _OutlineFactor;
return o;
}