
ライトのモードとタイプ
Tutorial
intermediate
+0XP
15 mins
Unity Technologies

このチュートリアルでは、Unity で利用できるライトのモードとタイプ、それぞれのメリットとデメリットについて説明します。
1. ライトモード
Unity では、色々多様なライトモードを利用することができます。ライトの移動利便性やシーン内におけるその使用方法によって、こういったライトモードは分かれています。モードによってパフォーマンスに違いが生じるので、実装時にはその点を考慮することが重要です。このチュートリアルでは、ベイク済み、混合、リアルタイムの 3 つのライトモードのメリットとデメリットを説明します。
2. ベイクしたライティング
ベイク済みのライトモードは、スタティックライティングになるため、ランタイム時に変更されることはありません。ベイクとは、ゲームの実行前にテクスチャマップにライティングデータを保管するプロセスのことを指します。
ベイク済みのライトモードの主な注意点は次のとおりです。
- ライトと影はライトマップにベイクされるため、ランタイム時に変更できません。この処理は、Unity でライティングが作成されたときに行われるため、ランタイムのパフォーマンスには影響しません。
- 影が静的になっているため、ゲームプレイ時に動的なオブジェクトや動くオブジェクトがあると、不自然に見える場合があります。
- ベイク済みのライトモードは、このガイドで紹介するものの中では、計算負荷が最も低い手法です。
3. リアルタイムライティング
リアルタイムのライトモードでは、動的なライトや可動ライトを使用します。リアルタイムのライトモードの主な特徴は次のとおりです。
- 動的なライティングと影は、ライトマップにベイクされるのではなく、ランタイム時に変更できます。
- リアルタイムのライトモードは、このガイドで紹介するものの中では、計算負荷が最も高いモードです。
4. 混合ライティング
混合のライトモードは、静止型のライトと動くオブジェクトを組み合わせたものです。これは、上に挙げた 2 つの方法を組み合わせたものと考えることができます。
混合ライトモードの主な特徴は次のとおりです。
- 動的な直接光と影を使用します。
- 静的オブジェクトでは、ライトをライトマップの計算に含めることができます。
- ライトは動的オブジェクトに影響します(動的オブジェクトの影の生成など)。
- 強度はランタイム時に変更できます。直接光のみが更新されます。
- 混合のライトモードは、計算負荷が高い方法です。
5. リアルタイムのライトとライトのタイプ
3D モバイルアプリケーションを構築する際は、ベイクしたライティングやライトプローブ、マテリアル効果を使ってみて、すべてのライティングがきちんと処理できるかを試した方が良いでしょう。リアルタイムライトを使用する必要がある場合は、どのタイプのリアルタイムライトを使用するかを熟慮しておかなければなりません。タイプごとに計算コストが異なります。
- ディレクショナルライト:方向が均一で減衰がないディレクショナルライトは、最もコストが低いリアルタイムライティングです。シーン全体を照らすことができるため、通常は、必要なディレクショナルライトは 1 つのみです。これはつまりフォワードレンダリングを使用すると、常に 1 つ、ディレクショナルライトがレンダリングされるということになります。シーン内にディレクショナルライトが一切なかったとしても、変わらず同じです。
- ポイントライト:ポイントライトは、空間内のある 1 点に位置し、全方向に同等に光を放ちます。
- スポットライト:スポットライトは、球面的なポイントライトよりも多くのオブジェクトをカリングするため、リアルタイムライティングの中では 2 番目にコストが低いタイプです。パフォーマンスを最適化するため、円すいの幅を狭め、選択したオブジェクトのみを照らすようにします。
スポットライトとポイントライトを使用するとスタイリッシュになるかもしれませんが、パフォーマンスにも影響します。相対的に見ると、ディレクショナルライトは計算コストが低く、あらゆる場所にライトを適用できます。パフォーマンスへの影響を考慮しながら、スポットライトは狭い範囲に、ポイントライトは広い範囲に使用した方が良いでしょう。
影の計算はライティングの中でも最もコストが高い部分になるため、全方向をライトで照らすと、影の計算に使用される演算の稼働量が増大します。
動的なライトはレンダリングコストが高いため、モバイルゲームでは使用しない方が賢明です。3D エンジンでは、使用するデバイスやグラフィックス API に応じて、そうしたライトの使用に制限が設けられている場合があります。たとえば、Unity のユニバーサルレンダーパイプラインのフォワードレンダラーでは、オブジェクトごとに 8 つのライトが上限です(OpenGL ES 2.0 を使用する場合は 4 つのライト)。
6. まとめ
ライティングは 3D ビジュアライゼーションの重要な要素ですが、シーン内にライトを配置する前に、パフォーマンスへの影響を考慮する必要があります。次のチュートリアルでは、静的オブジェクトのライティングを生成する際のベストプラクティスを紹介します。