レンダリング統計ウィンドウ
シェーダーのロード時間を最適化

フレームデバッガー

Frame Debugger を使用すると、特定のフレーム上で実行されているゲームの再生を凍結し、そのフレームをレンダリングするために使用されている個々の ドローコール を表示することができます。同様に、ドローコールをリストとして、デバッガはまた、それを1つずつ実行することができます。だから、シーンが、どのようにそのグラフィックエレメントから構成されていくかをとても詳細に見ることができます。

フレームデバッガの使用

フレームデバッガウィンドウ(メニュー: Window > Frame Debugger )は、drawcall 情報が表示され、構築中のフレームの playback を制御することができます。

メインリストには、発生位置を確認できる階層の形で drawcalls(および framebuffer clear のような他のイベント)のシーケンスが表示されます。リストの右側にあるパネルには、ジオメトリの詳細やレンダリングに使用されるシェーダーなどの drawcall に関するさらに詳しい情報が表示されます。

リスト上の何かアイテムをクリックすると、そのクリックした drawcall までの部分を含んだシーンが、ゲームビュー上に表示されます。ツールバー上にある左右の矢印ボタンを押すと、一項目毎にリストを前後に移動できます。また、方向キーを使用しても同じことができます。さらに、ウィンドウの上部にあるスライダーを使うと、気になるアイテムの位置まで drawcalls 上を素早く “scrub” する事ができます。ゲームオブジェクトのジオメトリーに対応した drawcall では、判別しやすいようにメインのヒエラルキーパネル上でそのオブジェクトが強調表示されます。

選択したドローコールでレンダーテクスチャへのレンダリングが行われている場合は、そのレンダーテクスチャの内容が ゲームビュー に表示されます。これは、例えばディファードシェーディングの diffuse g-buffer など、様々な種類の off-screen render targets がそれぞれどのように構築されているか確認したい時に便利です。

または、シャドウマップがレンダリングされた方法を見る:

リモートフレームデバッガー

フレームデバッガーをリモートで使うには、プレイヤーがマルチスレッドレンダリングをサポートしている必要があります (例えば WebGL や iOS はサポートしていないため、フレームデバッガーを実行する事はできません) 。 Unity がサポートしているプラットホームの多くで、マルチスレッドがサポートされています。次に、ビルドする際には ‘Development Build’ にチェックを入れる必要があります。

デスクトップでの注意:ビルドする前に ‘Run In Background’ オプションにチェックが入っている事を確認してください。チェックが入っていない場合、フレームデバッガーをプレイヤーに接続すると、プレイヤーをフォーカスするまでどんな描画の変更も反映されません。同じマシン上でエディターとプレイヤーの両方を実行する場合には、エディターからフレームデバッガーを制御する時は、プレイヤーからフォーカスを外さなくてはいけません。

クイックスタート

  • エディターで、ターゲットプラットフォーム向けにプロジェクトをビルドします (Development Player を選択)
  • プレイヤーを実行します
  • エディターに戻ります
  • Frame Debugger ウィンドウを開きます
  • Active Profilerをクリックし、プレイヤーを選択します
  • Enableをクリックすると、フレームデバッガーがプレイヤーで利用可能になります

レンダーターゲット表示オプション

インフォメーションパネルの上部には、現在のゲームビューを赤、緑、青、そしてαチャンネルそれぞれに分けて表示するためのツールバーが有ります。同様に、それらチャンネルボタンの右にある Levels スライダを使うと、明るさのレベル別にビューを分けることができます。これらの機能は、 RenderTexture にレンダリングするときのみ有効になります。

一度に複数のレンダリングターゲットをレンダリングする場合、ゲームビューに表示する1つを選択することができます。それぞれ、ここに 5.0 の遅延シェーディングモードの、拡散、鏡面、法線及び発光/間接照明バッファを示します:

さらに、ドロップダウンから “Depth” を選ぶことで、デプスバッファの内容を見ることができます:

レンダリングテクスチャのアルファチャンネルを分離することで、ディファード G バッファのオクルージョン(RT0アルファに格納)及び smoothness (スムースネス)(RT1アルファに格納)を見ることができます:

このシーンでの発光とアンビエント/間接照明は非常に暗いです。レベルスライダーを変更することにより、それをより見やすくすることができます。

代替フレームデバッグの手法

また、レンダリングのデバッグに外部ツールを使用することもできます。エディターには、シーンやゲームビューを検査する RenderDoc Integration がインテグレートされており簡単に起動することができます。

スタンドアロンプレーヤービルドし、それを Visual Studio graphics debuggerIntel GPARenderDocNVIDIA NSight または、AMD GPU PerfStudio を介して、終わりまで実行し、その後、レンダリングのフレームをキャプチャし、draw 呼び出しを順次実行して、他のレンダリングイベントでは何が起こっているかを確認します。

これらのツールは本当に多くの情報を掘り下げて提供することができるため、これは非常に強力なアプローチです。

レンダリング統計ウィンドウ
シェーダーのロード時間を最適化