Cubism SDK‎ > ‎プラットフォーム‎ > ‎Unity‎ > ‎Cs版‎ > ‎

ドローコールについて


ドローコールが増える原因は二つ考えられます。

  一つは、モデルの描画の仕様で起こります。
  ドローコールは、テクスチャを切り替えるごとに一つ増えます。
  Live2Dは、モデルの各描画オブジェクトを背面から順に描画していきます。
  その際、パーツによっては一つ前に描画したものとその次に描画するものの
  テクスチャが違う場合があり、その場合はドローコールをまとめることができません。
  この切り替えが多くなりすぎてドローコールが膨大になってしまうこともあります。
  対処法としては、例えばテクスチャの枚数を一枚にすると、テクスチャの
  切り替えがなくなるため、一度のドローコールに抑えることができます。

  二つ目として、シーン内に複数のカメラが配置されていることでも発生します。
  SDKでは、描画部分をOnRenderObject()から呼んでいます。
  OnRenderObjectは、カメラがシーンをレンダリングした後に呼び出される関数ですが、
  配置したカメラの数だけ呼び出されてしまいます。
  そのため、カメラの数だけモデルの描画命令が呼び出され、ドローコールが
  膨大になってしまいます。
  この場合の対策は二つあります。
  一つ目の対策は、モデルの描画方式をデフォルトから変更し、モデルにレイヤーを指定し、
  カリングマスクを設定する方法です。
  描画方式の切り替え方、レイヤーの設定の方法は、本ページ上部を参照してください。
  モデルに設定したレイヤーの値で、カメラのカリングマスクを設定してください。
  二つ目の対策は、OnRenderObject()とほぼ同じタイミングで呼び出される、
  OnPostRender()から描画をする方法です。
    OnRenderObject()と違い、OnPostRender()は、Cameraにセットされた
  スクリプトでのみ呼び出されるオーバーライド関数です。
  この関数を記述したスクリプトを、モデルを描画したいカメラにセットし、
  そこからモデルの描画を行ってください。
  この方法では、UnityエディターのSceneビューにも表示されなくなります。

Comments