[Unity]ShaderVariant番外編その2
これまでのあらすじ…
UnityのShaderVariantについてコレまで記事を書いていました。
今回紹介したいもの
これは画像のようにProfilerのModuleとして、実機中に起きたShaderコンパイルの情報を集約したツールになります。
このツールを使う事で実機上で発生したShaderコンパイルによる負荷を一覧で見ることが出来るというものです。
実現方法について
こちらはProfilerのグラフとして出てくるCounterの部分の表示と、詳細画面に出てくるShaderCompileの一覧はそれぞれ別々の形で実現しています。
それぞれを解説したいと思います。
ShaderCompileのカウンター部分の実現について
こちらShaderコンパイルが起きた情報はランタイム側で収集しています。
ProfilerRecorderというAPIを使って、"Shader.CreateGPUProgram"に関する情報を集めて、それをカウンターとして書き出しています。(カウンターの詳細はコチラ)
こういう感じでのランタイム側で集計して出しているのですが…
少し弱点があります。それがデータの集計が1フレームずれてしまうという問題です。
ここについてはそういう仕様だと言う事で割り切ることにしました。
ShaderCompileの一覧表示部分の実現について
ProfilerのAPI RawFrameDataViewを使う事でUnityProfiler上のデータを取得する事が可能です。
ShaderCompile一覧では、読み込んでいるProfiler中にあるCreateGPUProgramを集計して出しているにすぎません。
コードはコチラ。
こんな感じでShaderコンパイル一覧をProfiler上で可視化する事が出来るようになりました。