Prewarm(プリウォーム)は、Unityのパーティクルシステム(Shuriken)における設定の1つで、エフェクトが発生した最初の1フレーム目において、あたかも「すでに数秒前から再生され続けていたかのような満ちた状態」で出現させる事前シミュレーション機能です。

現実世界での例え:劇場の開演前にあらかじめ『満席』にしておく演出

Prewarmの仕組みは、「劇場の幕が上がる前(エフェクト出現前)に、あらかじめ観客席を『満席(パーティクルが満ちた状態)』にしておく演出」に例えることができます。

  • 従来(Prewarmなし): 劇場の幕が開いた(エフェクト出現)瞬間、観客席には誰もいません。そこから入り口(発生源)を通して、観客(パーティクル)が一人ずつポツポツと歩いて席を埋めていきます。劇場全体が賑やかな状態(満ちたエフェクト)になるまでに、どうしても数分間(数秒間)の不自然な空白時間が発生してしまいます。
  • Prewarmあり: 劇場の幕が開く前の暗転中(アクティブ化される前)に、スタッフが1寿命分の時間を早送りして、あらかじめ席を観客でいっぱいに満たしておきます。そして、幕が上がった1フレーム目の瞬間、観客はすでに全員揃っており、最初から最高潮の盛り上がり状態で劇をスタートさせることができます。
Unity Particle System Prewarm simulation timeline diagram

図:時間ゼロ以前の事前計算領域を実行して最初からエフェクトを満たすPrewarmのタイムラインイメージ

仕組みと動作原理

Prewarmが有効なパーティクルは、有効化(InstantiateやGameObject.SetActive)された瞬間の最初の更新フレームにおいて、CPU内部で指定されたパーティクルの最大寿命(Lifetime)に相当する時間を内部ループで高速シミュレーション(コマ送り計算)します。これによって、画面上に最初から空間全体に分散した完成されたエフェクトが瞬間的に配置されます。