概要
Unreal Engine 5.4 では、Niagara 軽量エミッタ が導入されました。これらのエミッタ (ステートレス エミッタ) は、シミュレーション中のティックの使用を最小限に抑えるように (場合によってはティックを不要とするように) 最適化されています。
さらに、軽量エミッタはコンパイルする必要がありません。したがって、ワークフローが高速化され、システム内のエミッタの量がパフォーマンスに与える影響が少なくなります。つまりほとんどの場合、ステートレス エミッタはステートフルな (従来の) エミッタよりも大幅にパフォーマンスが向上しています。
ステートレス エミッタを Niagara システム内に追加するには、[System Overview (システムの概要)] ウィンドウ内で右クリックしてメニューから [Add stateless emitter (ステートレス エミッタを追加)] を選択します。Niagara システムでは同時に機能する両方のタイプのエミッタを使用できますが、純粋なステートレス システムのパフォーマンスが最も優れています。
パフォーマンスの向上と開発の高速化
ステートレス エミッタを導入する主な理由は、Niagara のメモリと CPU コストを削減し、VFX アーティストの開発時間を加速することでした。
これを実現するために、ステートレス エミッタは以下を実行します。
- Niagara システムが完全にステートレスな場合、ゲーム スレッドのティック コストを削減する。
- ステートレス エミッタごとに 同時ティック コストを削除する。
- Niagara システムが完全にステートレスな場合、レンダリング スレッドのコストを削減する。
- スクリプトやパーティクル情報がメモリ内に存在しないため、メモリ コストを削減する。
- エミッタ数 と パーティクル インスタンス数 の パフォーマンスへの影響 を排除する。
- コンパイル の必要性を 減らす (場合によっては不要にする)。
ステートレス エミッタのトレードオフ
パフォーマンスを向上するために、ステートレス エミッタは固定関数であり、次のモジュールにのみアクセスできます。
- Acceleration Force
- Add Velocity
- Curl Noise / Noise Vector Field
- Drag
- Gravity Force
- Initialize Particle
- Initial Mesh Orientation
- Rotate Around Point
- Scale Color
- Scale Mesh Size
- Scale Mesh Size By Speed
- Scale Sprite Size
- Scale Sprite Size By Speed
- Shape Location
- Solve Velocities And Forces
- Sprite Rotation Rate
- Sub UV Animation
利用可能な各モジュールの設定を調整することはできますが、カスタム モジュールやスクラッチパッドを作成したり動的入力を使用したりすることはできません。現在の機能セットは C++ を使って展開でき、Niagara システム内でステートレス エミッタをステートフルに変換することも、ステートフル エミッタをステートレスに変換することもできます。