Rendering Profiler (レンダリングプロファイラー) は、シーンをレンダリングするために CPU と GPU が行う処理に関する統計や情報を表示します。これらの統計情報を利用して、シーンのさまざまな領域のリソース強度を測定し、最適化に役立てることができます。
チャートには、アプリケーションがレンダリングしたバッチ (Batches Count)、SetPass Calls、三角形の数 (Triangles Calls)、頂点数 (Vertices Counts) が表示されます。下のペインには、より多くのレンダリング統計 (ゲームビューの 統計ウィンドウ ウィンドウに表示されているものと同等) が表示されます。
Rendering Profiler モジュールのチャートは、以下の 4 つのカテゴリに分かれています。
チャート | 説明 |
---|---|
Batches Count | The number of batches Unity processed during a frame. |
SetPass Calls Count | そのフレームでゲームオブジェクトのレンダリングに使用したシェーダーパスを Unity が切り替えた回数。1 つのシェーダーには複数のシェーダーパスが含まれている場合があり、それぞれのパスでシーンのゲームオブジェクトのレンダリングが異なります。 |
Triangles Count | The number of triangles Unity processed during a frame. |
Vertices Count | The number of vertices Unity processed during a frame. |
When you click on the Rendering Profiler module, the details pane in the lower half of the window displays detailed rendering statistics. These statistics are similar to the statistics shown in the Rendering Statistics window.
詳細ペインの左上の Open Frame Debugger を選択すると、フレームデバッガー が開き、フレームをレンダリングした個々のドローコールの情報が表示されます。
これらの統計情報は、ProfilerRecorder API や Profiler Module Editor でも入手可能で、カスタム製のProfiler モジュールに追加することができます。
統計 | 説明 | リリースプレイヤーでのアクセス |
---|---|---|
SetPass Calls Count | そのフレームでゲームオブジェクトのレンダリングに使用したシェーダーパスを Unity が切り替えた回数。1 つのシェーダーには複数のシェーダーパスが含まれている場合があり、それぞれのパスでシーンのゲームオブジェクトのレンダリングが異なります。 | 可 |
Draw Calls Count | そのフレームで送信されたドローコールの総数。Unity はゲームオブジェクトを画面にレンダリングする際にドローコールを送信します。この数には、バッチ処理形式でないドローコールと、動的および静的なバッチ形式ドローコールが含まれます。 | 可 |
Total Batches Count | The total number of batches Unity processed during a frame. This number includes both static and dynamic batches. | 可 |
Triangles Count | The number of triangles Unity processed during a frame. | 可 |
Vertices Count | The number of vertices Unity processed during the frame. | 可 |
(Dynamic Batching) | This section contains statistics on dynamic batching. | なし |
Dynamic Batched Draw Calls Count | 動的バッチ処理にまとめられられたドローコールの数。 | なし |
Dynamic Batches Count | そのフレームで処理された動的なバッチ処理の数。 | なし |
Dynamic Batched Triangles Count | 動的バッチ処理に含まれるゲームオブジェクトの三角形の数。 | なし |
Dynamic Batched Vertices Count | 動的バッチ処理に含まれるゲームオブジェクトの頂点数。 | なし |
Dynamic Batching Time | 動的バッチ処理構造の作成に Unity が費やした時間。 | なし |
(Static Batching) | This section contains statistics on static batching. | なし |
Static Batched Draw Calls Count | 静的バッチ処理にまとめられられたドローコールの数。 | なし |
Static Batches Count | そのフレームで処理された静的なバッチ処理の数。 | なし |
Static Batched Triangles Count | 静的バッチ処理に含まれるゲームオブジェクトの三角形の数。 | なし |
Static Batched Vertices Count | 静的バッチ処理に含まれるゲームオブジェクトの頂点数。 | なし |
(Instancing) | This section contains statistics on GPU instancing. | なし |
Instanced Batched Draw Calls Count | インスタンスバッチ処理にまとめられられたドローコールの数。 | なし |
Instanced Batches Count | The number of batches Unity processed to render instanced GameObjects during a frame. | なし |
Instanced Batched Triangles Count | インスタンス化されたゲームオブジェクトの三角形の数。 | なし |
Instanced Batched Vertices Count | インスタンス化されたゲームオブジェクトの頂点数。 | なし |
Used Textures Count Used Textures Bytes |
The number of textures Unity used during the frame and the amount of memory the textures used. | なし |
Render Textures Count Render Textures Bytes |
The number of RenderTextures Unity used during the frame and the amount of memory the RenderTextures used. | 可 |
Render Textures Changes Count | そのフレームで Unity が 1 つまたは複数のレンダーテクスチャをレンダーターゲットとして設定した回数。 | 可 |
Used Buffers Count Used Buffers Bytes |
GPU バッファとそれに使われたメモリの総数。これには、頂点、インデックス、コンピュートバッファ、レンダリングに必要なすべての内部バッファが含まれます。 | 可 |
Vertex Buffer Upload In Frame Count Vertex Buffer Upload In Frame Bytes |
そのフレームで CPU が GPU にアップロードしたジオメトリの量。これは、頂点/法線/TEXCOORD のデータを表します。すでに GPU にジオメトリがある場合もあります。この統計値には、Unity がフレーム内で転送したジオメトリのみが含まれます。 | 可 |
Index Buffer Upload In Frame Count Index Buffer Upload In Frame Bytes |
そのフレームで CPU が GPU にアップロードしたジオメトリの量。これは、三角形のインデックスのデータを表します。すでに GPU にジオメトリがある場合もあります。この統計値には、Unity がフレーム内で転送したジオメトリのみが含まれます。 | 可 |
Shadow Casters Count | そのフレームで影を作るゲームオブジェクトの数。1 つのゲームオブジェクトが複数の影を作る場合 (複数のライトが照らしているため)、1 つの影につき 1 エントリーされます。 | 可 |
Rendering モジュールのプロファイラーカウンターは、プレイヤーでも利用可能です。プレイヤーで Rendering Profiler モジュールの情報にアクセスするには、ProfilerRecorder API を使用します。高レベルのカウンターは、Release Player でも利用できます。
以下の例は、“SetPass Calls Count”、 “Draw Calls Count”、 “Vertices Count” の指標を収集し、それらをテキストエリアとして表示する簡単なスクリプトです。
using System.Text;
using Unity.Profiling;
using UnityEngine;
public class RenderStatsScript : MonoBehaviour
{
string statsText;
ProfilerRecorder setPassCallsRecorder;
ProfilerRecorder drawCallsRecorder;
ProfilerRecorder verticesRecorder;
void OnEnable()
{
setPassCallsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "SetPass Calls Count");
drawCallsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Draw Calls Count");
verticesRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Vertices Count");
}
void OnDisable()
{
setPassCallsRecorder.Dispose();
drawCallsRecorder.Dispose();
verticesRecorder.Dispose();
}
void Update()
{
var sb = new StringBuilder(500);
if (setPassCallsRecorder.Valid)
sb.AppendLine($"SetPass Calls: {setPassCallsRecorder.LastValue}");
if (drawCallsRecorder.Valid)
sb.AppendLine($"Draw Calls: {drawCallsRecorder.LastValue}");
if (verticesRecorder.Valid)
sb.AppendLine($"Vertices: {verticesRecorder.LastValue}");
statsText = sb.ToString();
}
void OnGUI()
{
GUI.TextArea(new Rect(10, 30, 250, 50), statsText);
}
}
Rendering Profiler モジュールの情報は、ProfilerCategory.Render Profiler のカテゴリに属しています。
カスタムモジュールで選択したレンダリングカウンターを強調表示したい場合は、Module Editor を使用して、チャートと詳細表示を設定します。