之前關於可batching的大規模動畫總結了一篇文章
https://blog.csdn.net/tlrainty/article/details/88667370
主要採用了骨骼烘焙貼圖來替代SkinnedMeshRenderer,從而實現可batching.
之後在陰影實現時又想到,是不是可以將這個骨骼貼圖傳給Planar Shadow,讓Planar Shadow也可以應用到帶骨骼動畫的物體上.因爲它們都是在vertex shader裏實現的,性能上應該還可以.Planar Shadow的介紹文章網上很多,這裏就不貼鏈接了.
關鍵實現在下面幾行代碼.其實挺簡單的,就是把二者簡單結合了一下.
v2f vert (appdata v)
{
......
float4 pos = mul(mat, v.vertex);//得到的採樣完骨骼動畫貼圖後的pos
//下面就是純Planar Shadow的實現方法了
float4 wPos = mul(unity_ObjectToWorld, pos);
float3 direction = normalize(_Light.xyz);
float dist = dot(_Center.xyz - wPos.xyz, _Normal.xyz) / dot(direction, _Normal.xyz);
wPos.xyz = wPos.xyz + dist * direction;
o.vertex = mul(unity_MatrixVP, wPos);
......
return o;
}
實際運用到項目中,性能還可以,在比較低檔配置的手機上跑也沒有什麼問題.