之前关于可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;
}
实际运用到项目中,性能还可以,在比较低档配置的手机上跑也没有什么问题.