Unityの影生成は便利ですが、デフォルトでは描画用と影生成用に同じモデルを使用するため、単純に考えて2倍の描画コストがかかってしまいます。
そこで、影生成専用のローポリモデルを使用することを考えます。
Mayaの削減機能を利用して、頂点数をおよそ1/3にしたモデルを用意しました。
このモデルにオリジナルと同じ骨を入れて、Unityにインポートします。
描画用のモデルの階層の中から、MeshRendererを探し、Cast Shadowsのチェックを外しておきます。
このMeshRenderがアタッチされたGameObjectを複製します。
複製されたSkinnedMeshRendererに、先ほどインポートしたモデルを設定します。
Cast Shadowsにチェックを入れ、Receive Shadowsのチェックを外します。
これで、描画用と影生成用、二つのオブジェクトが重なった状態になりました。
このままでは通常のレンダリングパスにおいても、影生成用モデルが描画されてしまいます。
そこで、通常時にレンダリングしないようにシェーダを定義します。
Shader "Custom/ShadowCaster" {
SubShader {
UsePass "VertexLit/SHADOWCASTER"
}
FallBack off
}
このシェーダを元にマテリアルを作成し、影生成用モデルに設定します。
これで作業は終わりです。
Statsを見ると、頂点数が減っていることが確認できますね。