夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MR Speaker Series: Shader Foundationsを読み解く §5 パフォーマンスと最適化ツール

本日はシェーダー学習枠です。

現在MRTKやMRGTでグラフィックを担当されているMicrosoftのCameronさんによるMR向けのShader解説セッションを読み解いています。

前回までは§4のシェーダーの実行をコードを読み解きながら見ていました。

redhologerbera.hatenablog.com

今回は§5です。

〇セクションの内容

セッションは次の8つのセクションで区切られています。

§1Shaderとは何か?

§ 2 Shaderの実行

§3 マテリアルとレンダーモード

§4 MixedReality における注意点

§5 パフォーマンスと最適化ツール

§6 デバッグ

§7 その他のリファレンス

§8 Q&A

〇パフォーマンスと最適化ツール

 ShaderはCPU上ではなくGPU上で実行されるプロジェクトです。

 このためプロファイリングが非常に難しいです。

HoloLensの開発では次のようなパフォーマンスチェックツールが提供されています。

まずはアプリにおいてパフォーマンスが低下するかどうか?どのような時に低下が発生するかを調べます。

〇MRTKのパフォーマンスプロファイラー

MRTKのプロファイラーではfps、メモリーの使用量を確認できます。

〇DevicePortalでフレームレートの表示を行う。

 デバイスポータルからHoloLensのディスプレイ上にFPSが表示されるように設定できます。

redhologerbera.hatenablog.com


次に行うことはUnityのプロファイルで深いプロファイラーを見ます。

これはUnity上部のワールドメニューからWindow→Analysis→Profilerから表示できます。

注目すべきはGfx.WAitForCommands()が多く呼ばれている場合CPUにパフォーマンスが拘束(バインド)されている可能性が高いです。

逆にGfx.WaitForPresent()が多く呼ばれている場合はGPUにパフォーマンスが拘束されている可能性が高いです。

CPUによるバインドが発生している場合はさらにGPU使用率のプロファイラーを開きます。

ここではOpaque、Transparentなどの負荷を見ることができます。

さらに負荷の把握が必要な場合フレームデバッガーを起動します。

フレームデバッガーは1フレームの描画工程を一つ一つ可視化できます。


これらのツールはHoloLens 2とリモートで接続し実機のプロファイルを行うことができます

これらの方法は2つの方法があり一つがPIXと呼ばれるツールです。

devblogs.microsoft.com

PIXはDirectX12用のパフォーマンスチューニングとデバッグツールです。

注意点としてUnity2020の段階ではHoloLensはDirectX11がサポートされているという点です。

もう一つのツールはRenderDocと呼ばれるものです。

renderdoc.org

次のセクションから実際のデバッグを見ていくようです。

本日は以上です。