1. 程式人生 > >Unity Billboard shader

Unity Billboard shader

billboard在遊戲裡挺常用的,下面是個unity的billboard shader。在頂點著色器中把頂點旋轉到合視角平行

首先在tag中加上一句修飾防止billboard被batch掉,這裡非常坑,其實billboard演算法挺簡單的

Tags {"DisableBatching" = "True" }

然後是頂點著色器的變換

//billboard construct 
float3 vpos = mul((float3x3)unity_ObjectToWorld, v.vertex.xyz);
float4 worldCoord = float4(unity_ObjectToWorld._m03, unity_ObjectToWorld._m13, unity_ObjectToWorld._m23, 1);
float4 viewPos = mul(UNITY_MATRIX_V, worldCoord) + float4(vpos.x ,vpos.y, 0, 0);
float4 outPos = mul(UNITY_MATRIX_P, viewPos);
o.vertex = outPos;

Enjoy it