[Unity]記錄一種大規模骨骼動畫的Planar Shadow的生成方法

之前關於可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;
}

實際運用到項目中,性能還可以,在比較低檔配置的手機上跑也沒有什麼問題.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章