本日はシェーダー学習枠です。
現在MRTKやMRGTでグラフィックを担当されているMicrosoftのCameronさんによるMR向けのShader解説セッションを読み解いています。
前回までは§4のシェーダーの実行をコードを読み解きながら見ていました。
今回は§5です。
〇セクションの内容
セッションは次の8つのセクションで区切られています。
§1Shaderとは何か?
§ 2 Shaderの実行
§3 マテリアルとレンダーモード
§4 MixedReality における注意点
§5 パフォーマンスと最適化ツール
§6 デバッグ
§7 その他のリファレンス
§8 Q&A
〇パフォーマンスと最適化ツール
ShaderはCPU上ではなくGPU上で実行されるプロジェクトです。
このためプロファイリングが非常に難しいです。
HoloLensの開発では次のようなパフォーマンスチェックツールが提供されています。
まずはアプリにおいてパフォーマンスが低下するかどうか?どのような時に低下が発生するかを調べます。
〇MRTKのパフォーマンスプロファイラー
MRTKのプロファイラーではfps、メモリーの使用量を確認できます。
〇DevicePortalでフレームレートの表示を行う。
デバイスポータルからHoloLensのディスプレイ上にFPSが表示されるように設定できます。
次に行うことはUnityのプロファイルで深いプロファイラーを見ます。
これはUnity上部のワールドメニューからWindow→Analysis→Profilerから表示できます。
注目すべきはGfx.WAitForCommands()が多く呼ばれている場合CPUにパフォーマンスが拘束(バインド)されている可能性が高いです。
逆にGfx.WaitForPresent()が多く呼ばれている場合はGPUにパフォーマンスが拘束されている可能性が高いです。
CPUによるバインドが発生している場合はさらにGPU使用率のプロファイラーを開きます。
ここではOpaque、Transparentなどの負荷を見ることができます。
さらに負荷の把握が必要な場合フレームデバッガーを起動します。
フレームデバッガーは1フレームの描画工程を一つ一つ可視化できます。
これらのツールはHoloLens 2とリモートで接続し実機のプロファイルを行うことができます。
これらの方法は2つの方法があり一つがPIXと呼ばれるツールです。
PIXはDirectX12用のパフォーマンスチューニングとデバッグツールです。
注意点としてUnity2020の段階ではHoloLensはDirectX11がサポートされているという点です。
もう一つのツールはRenderDocと呼ばれるものです。
次のセクションから実際のデバッグを見ていくようです。
本日は以上です。