UE4で扱える全てのライトには可動性(Mobility)という仕組みがあります。
可動性はライトごとに設定できますが、その設定によって大きな影響を受けるのでしっかりと考えて設定する必要があります。
設定できる可動性はStatic(静的)、Stationary(固定)、Movable (可動)の3つです。それぞれの特徴を紹介します。
Static(静的)
スタティックライトはその名の通り、完全に事前に決められたライティングを行います。ゲーム中には一切変化することがありません。スタティックライトはエディター画面の上部にあるビルドボタンを押すことによって、ベイク(影の焼き込み)作業を行います。
スタティックメッシュの可動性がスタティックになっていると、スタティックメッシュを配置したり、移動させるたびにベイク作業が必要になります。
スタティックメッシュのベイクにはライトマップが必要がとなり、ライトマップとは影を焼き込む際に影の情報を格納するテクスチャーのようなものです。ライトマップ自体の解像度はスタティックメッシュのプロパティに"Light Map Resolution"というものがあります。
この値が高ければ高いほど綺麗な影を生成しますが、よりビルド時間が長くなり、メモリーも多く消費します。単純に高くすればいいというものでもないのでご注意ください。
レベル上に配置したスタティックメッシュは"Override Lightmap Res"というチェックを入れると予め設定したライトマップを個別に上書きすることもできます。
Stationary(固定)
ステーショナリーライトはスタティックライトと同様に一切の移動、回転、サイズ変更ができませんが、ゲーム中に輝度と色の変更が可能なライトです。ただし輝度や色変更は直接光のみに限られ、間接(反射)光には影響しません。
3つのライトの中でステーショナリーライトは最高の品質、中程度の可変性、中程度のパフォーマンス負荷がかかり、最もバランスの良いライトとなっています。そして最も設定が奥深いライトになっており、最適化のしがいがあります。
迷ったらまずはステーショナリーライトで作ってみるといいと思います。
Movable (可動)
ムーバブルライトは完全に動的なライトです。全てのプロパティをゲーム中に変更が可能であり、ライトマップも使用しません。それ故に当然最も負荷がかかり、使用範囲がとても限定されています。
動くスポットライトや、エフェクトによって局所的に光る物体などの演出向きです。レベル上に配置する時も考えながら配置していきましょう。ライトマップのベイクもできないので、高品質な影を作るのは難しいです。
それぞれのパフォーマンス
最後にそれぞれのパフォーマンスを検証してみたいと思います。パフォーマンス情報はレベルビューポート左上にある▼ボタンを押して、"統計データ"、"Advanced"、"LightRendering"で見ることができます。
今回の実験ではポイントライトを少し小さくしてレベル上に適当な位置で18個配置。適当なスタティックメッシュを配置して、ビルド完了後のパフォーマンスを計測します。
まずはスタティックライト。
数値はかかった時間がミリ秒で表示されています。InclusiveAvgが平均値で、InclusiveMaxが瞬間最大値です。ExclusiveAvgとExclusiveMaxはそれぞれの個別の計測時間のことかと思いますが、詳しいことはよくわかっていません。
こうしてみるとスタティックライトは全て足した平均時間でも約0.1ms程度で済んでいることがわかります。
次はステーショナリーライト。
確実に平均値が上がっているのがわかります。
全てを足した平均処理時間では約0.8msと8倍程度になっています。
最後にムーバブルライトです。
一気に平均処理時間が上がりました。合計時間では約2.6msほどに。スタティックライトの26倍、ステーショナリーライトの3倍と少し程度の負荷になりました。
ムーバブルライトは常に動的計算なので、可動物が増えれば増えるほど、どんどん負荷が増していきます。現在のままでもかなり負荷がかかっていることがわかりますが、動くものが増えるほど指数的に負荷が上がっていくことを意識しておかねばなりません。
ライトの使い分け
大体のそれぞれの違いやパフォーマンスの差がわかったと思います。特に問題がなければステーショナリーライトを使うのが安定しています。逆にモバイル環境など負荷が大きく問題を与える場合にはスタティックライトを使いましょう。ムーバブルライトはPCのようなそれなりのスペックのあるマシンでもかなり重たくなります。
品質と負荷のバランスで一番安定して使えるという点でステーショナリーライトはとても使いやすいライトと言えます。