見出し画像

Unity 2021でのProfiler更新

Unity 2021でもいくつかのProfilerの更新がありました。

1.ProfilerWindowに File Access、Asset Loadingの項目が追加されました
2.ProfilerWindowのMemory部分のUIが変わりました
3.ProfilerWindowに独自のモジュールを作ることが可能になりました
4.Arm関連でパッケージが追加されています
4-1.Mali GPUを積んだAndroid端末でMetrics情報が閲覧可能なパッケージを開発中
4-2. Arm Mobile Studioに情報を載せることが出来るパッケージが提供されました
5.接続の安定性周りの向上

1.ProfilerWindowに File Access、Asset Loadingの項目が追加されました

画像4

このように、どのファイルにどのくらいアクセスしたかをリストで閲覧できます。
画像では全フレームにまたがった集計情報をみていますが、そのフレームで起きた情報だけリスト化するなども出来ます。
利用するには一度「Analyze Markers」というボタンを押してProfilerの情報を集計する必要があります。

画像5

またファイルアクセスだけでなく、AssetLoadingでは画像のようにアセット別にロード時間を見ることが出来るようになっています。

2.ProfilerWindowのMemory部分のUIが変わりました

画像2

このようにMemory項目の表示が見やすい形になりました。

3.ProfilerWindowに独自のモジュールを作ることが可能になりました

画像3

このように、RenderingやMemoryのような項目を自分で設定することが出来るようになります。

大きく下記の2つを行うことができます
・どの値をグラフに出すのか指定
・UI Toolkitで画面下側の詳細部分を自由に作成

こちらがマニュアルですが、サンプルコードもあります。

4-1.Mali GPUを積んだAndroid端末でMetrics情報が閲覧可能なパッケージを開発中

画像2

Mali GPUを積んだAndroid端末であれば、そこからGPUの情報を取得してUnityProfilerに載せることが出来るようになります。


using Unity.Profiling;
using UnityEngine;
using Unity.Profiling.SystemMetrics;

public class InitData : MonoBehaviour
{
   ProfilerRecorder m_GpuShaderFragmentActive;
   private void Awake()
   {
       m_GpuShaderFragmentActive = new ProfilerRecorder(SystemMetricsMali.Instance.GpuShaderFragmentActive);
       if (m_GpuShaderFragmentActive.Valid)
           m_GpuShaderFragmentActive.Start();
   }
   void OnDestroy()
   {
       if (m_GpuShaderFragmentActive.Valid)
           m_GpuShaderFragmentActive.Stop();
       m_GpuShaderFragmentActive.Dispose();
   }
   void Update()
   {
       var shaderCoreCycles = 0L;
       if (m_GpuShaderFragmentActive.Valid)
           shaderCoreCycles = m_GpuShaderFragmentActive.LastValue;
   }
}

またProfilerに乗せているだけでなく上記のようなコードでランタイム上で取得できるようになります。

■ベータ版で試した所、あたった問題点
・SystemMetrics Mali 0.2.0 + Unity 2021.2.0b11で試した所、上記のようになにかしたの値のRecorderをStartしないとうまく値が取れませんでした
・フォーラムにある 0.2.0の新機能である表示は、殆どの値が 0になってしまいました。そのため、0.1.0と同じように自前でカウンターを設定して表示しました
・Galaxy A20(SC-02M)で試した所、Vulkan + 32bitの組み合わせで何故かアプリクラッシュするようになってしまいました。(ドライバ側の問題かも知れません)Vulkan + 64bitもしくはOpenGLESであればクラッシュしませんでした。

4-2. Arm Mobile Studioに情報を載せることが出来るパッケージが提供されました

またArm社からは、ArmMobileStudioでProfileする時にUnityの情報をマーカーとして補足情報を載せるためのパッケージが提供されました

5.接続の安定性周りの向上

特に画像とかはないのですが・・・。
Profilerの接続周りの安定性を向上させるようなアップデートもUnity 2021.2で行われました。

その他

ちなみに Unity 2020での更新はコチラになります。

ARM Mobile Studioについてはコチラを御覧ください

ARM関連はMali GPU限定になります。
Google のSystraceにUnityの情報を載せるプラグインが別途あり、コチラだとOSから取れたデータとUnityProfilerのデータを上手く組み合わせて見ることが出来ます。

以上、その他の項目でした。
それでは。



この記事が気に入ったらサポートをしてみませんか?