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

フレームデバッガー

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

フレームデバッガーの使用

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

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

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

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

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

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

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

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

クイックスタート

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

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

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

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

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

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

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

シェーダープロパティーの値の見方

ドローコールに関して、フレームデバッガーは使用中の シェーダープロパティーの値 も表示できます。 それらを表示するには Shader Properties タブをクリックします。

プロパティーごとに、使用されているシェーダーステージ (vertex, fragment, geometry, hull, domain) 同様、値も表示されます。 OpenGL を (例えば Mac 上で) 使用すると、GLSL シェーダーの機能のために、すべてのシェーダープロパティーは頂点シェーダーステージと考えられます。

エディターにテクスチャのサムネイルも表示され、 それをクリックするとプロジェクトウィンドウのテクスチャが強調表示されます。

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

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

スタンドアロンプレイヤーでもビルドすることができ、以下を通して実行することができます。

これを行うとき、レンダリングのフレームをとらえ、ドローコールや他のレンダリングイベントをたどって状況を確認できます。これらのツールは本当に多くの情報を掘り下げて提供することができるため、これは非常に強力なアプローチです。

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