2つのNiagaraSystemの中身は全く同じ状態なのですが処理負荷に差が出ています。出来ればどのような状態でも同じように値が出てくれた方が確認はしやすいです。これらの挙動について意図しているものかご確認できますでしょうか。何卒よろしくお願いいたします。
<br/>
【GameThreadを確認】
少し処理負荷が違います。
NiagaraSystemを1つだけ確認時は高い方の値と同じになっています。
<br/>
【RenderThreadを確認】
大きく処理負荷が違います。ビューポート上で選択をしているNiagaraSystemの方が高い値に入れ替わります。2つとも選択時は決まった方が高い値となっています。
NiagaraSystemを1つだけ確認時は高い方の値と同じになっています。
<br/>
【GPUを確認】
NiagaraEditor(Niagaraを作成するためのEditor)を開いている状態だと、開いている全てのNiagaraSystemの負荷が少し上がります。
再現手順
1:UEはランチャーから起動し、設定等は何も変更をしていないデフォルトの状態です。
2:EditorPreferenceでUseSelectionOutlineをオフにしています。
3:NiagaraSystemを2つContensBrowser上で作成します。中身はTemplateのFountainです。
4:NiagaraSystemのSimTargetはGPUCompute Simに変更します。
5:Emptyレベルにその2つのNiagaraSystemを置きます。
6:NiagaraDebuggerを開き、先ほど置いた2つのNiagaraSystemの処理負荷を確認します。
7:NiagaraDebuggerのDebugOverviewModeはPerformanceGraphで見ます。(Performanceで見ても結果は同じです。)
8:NiagaraDebuggerのPrefGraphModeを、GameThread/RenderThread/GPUに変更してそれぞれで確認します。
CPU上でのカウンタであるGameThread/RenderThreadは処理順序によって処理時間が変ります。これは恐らくCPUのキャッシュの動作によるもので連続した処理の中の最初の一回はキャッシュミスが多発するため処理時間が著しく上がり、2回目以降はキャッシュヒットによって素早く処理が行われます。
ソース中の計測位置に関しては、PARTICLE_PERF_STAT_CYCLES_WITH_COUNT_GT/PARTICLE_PERF_STAT_CYCLES_WITH_COUNT_RTとなります。
4つのNiagaraSystemを配置した状態をUnrealInsightsでキャプチャしたものを添付します。
GameThread:
[Image Removed]RenderThread:
[Image Removed]GPUに関してはComputeパスを使う関係上同時に処理されているRenderパスの処理内容によって負荷が変ってしまいます。
これらのインスタンス毎の可能な限り平均的な負荷を見たい場合には、手間は掛かりますがNiagaraSystemを複数配置してPerfSampleModeをPerInstanceAverageに設定するなどの方法で
負荷を平均化したり、こういったNiagaraDebuggerのPerfの特性を織り込んで相対的に負荷を判定してください。
鈴木様ご回答大変ありがとうございます。丁寧なご説明とても助かりました。
内容の確認ができました。ご説明いただいた事を踏まえて運用していきたいと思います。
ご対応ありがとうございました。今後ともよろしくお願いいたします。