UdonProfiler
VRChat のワールドに配置する、簡易的なプロファイラーです。 (上級者向け) アクティブ状態で、画面の下部にプロファイラーをオーバーレイ表示します。 ワールドの特定の方向を向いたとき、Udon の処理が実行されるとき などのシチュエーションにおいて、CPU/GPU 負荷の状況を確認しやすくなります。 ワールドのパフォーマンス最適化にご活用ください。
注意
本プロファイラーは U# スクリプトとして制作されています。 エディター上に限らず、ワールドのビルド後も動作することができますが、 Udon の制約内で動作しているため、各種の情報には正確でない箇所(推測)が含まれることをご了承ください。
セットアップ
OverlayCamera_Depth99.prefab をワールドの原点近くかつ、ユーザーから見えない位置(例:地面の中)に配置してください。 ワールドの原点より離れていると、オーバーレイ表示が乱れる可能性があります。 オーバーレイ表示のオン/オフ機能は付属しておりません。 スイッチ等と組み合わせて、OverlayCamera_Depth99 の GameObject の有効、無効を切り替えることでご対応ください。
表示の説明
■オーバーレイ上部: ビジュアル表示 1フレームの処理の流れを視覚化します。 【一番上の横長線】 全体の処理時間です。 中央より左がGPUの待機(黄色)、中央より右がCPUの処理(白色)です。 CPU処理(白色)の途中には、GPUの待機をしていると推測される時間(黄土色)が含まれます。 GPU待機(黄色)は、デスクトップモードの場合に伸びやすくなります。 GPU待機(黄土色)は、VRモードやドライバーによるFPS制限が有効の場合に伸びやすくなります。 【縦線】 黒い縦線は10ms間隔の目盛りとなっています。 ・緑色の縦線: 前フレームの終了時間 ・赤色の縦線: 現在フレームの開始時間 赤色の縦線はTime.UnscaledTimeです。基本的に中央に位置しますが、垂直同期が有効の場合などには中央より左右(過去や未来)に移動します。 【下側の細い線】 各種処理です。 ・ピンク: FixedUpdate() ・緑色: Update() ・黄色: LateUpdate() ・水色: PostLateUpdate() ・オレンジ: Camera.Render(レンダースレッドの処理時間) オレンジの途中にある青色より左がRenderTextureへの描画時間、右が画面への描画時間です。 ・青色: ReflectionProbe(リアルタイム設定)の更新や、エディター上で再生している場合はEditorLoop(エディターの処理)が含まれます。 ■オーバーレイ下部: 数値表示 フレームレート等を表示します。 【現在のフレーム】 ・Frame: Time.frameCount(起動してからのフレーム数)の下4桁。 【フレームレート】 ・PFPS: 過去1秒間に表示されたフレームの数。 1秒に1回更新され、FPSより正確です。 (Pushed Frames Per Second の略) ・FPS: Unity上での一般的なフレームレート、Time.deltaTimeの逆数に相当。 (本プロファイラーではシェーダー上のunity_DeltaTime.wを表示しており、下限10~上限200FPSにクランプされています。) 【フレームタイム】 1フレームの処理にかかった時間をミリ秒で表示します。 CPU/GPUの負荷の傾向を確認できます。 ・Total: 合計時間。 ・CPU: CPUの処理推測時間。 ・GPU: GPUの待機推測時間。 (GPU時間には、ゲーム内、ゲーム外のフレームレート制限やVBlankの待機時間が含まれます。)
動作環境
[v1.0.0] 動作確認済み VRChat バージョン: ・2023.4.2p2 Build 1390 (2023-12-06) SDK: ・Unity 2022.3.6f1 ・VRChat SDK - Base v3.5.0 ・VRChat SDK - Worlds v3.5.0 Unity 2019.4.31f1 では動作しません。 (Time.realtimeSinceStartupAsDouble などの使用しているメソッドが存在しないため) 将来のアップデートでの動作を保証しません。
アップデート履歴
[2023-12-29: v1.0.0] リリース
ライセンス
本ソフトウェアは MIT ライセンスを用いてリリースされます。 https://github.com/ku6dra/udon-profiler/blob/master/LICENSE
リンク
GitHub: https://github.com/ku6dra/udon-profiler