モバイル プラットフォームで使用するライティング

モバイル ゲーム用のライティング設定

Windows
MacOS
Linux

Unreal Engine 4 (UE4) でモバイル プラットフォームのライトを使用する場合、プロジェクトを各種モバイル デバイスで正しいフレームレートで確実に実行するために従わなければならない制約があります。本ページでは、UE4 モバイル プロジェクト用のライティングの設定方法について説明します。

サポート対象の機能

以下は、モバイル プラットフォームでサポートされている機能です。

  • HDR のリニア ライティング

  • 指向性ライトマップ (法線を考慮する)

  • ディスタンス フィールド シャドウ + 太陽の解析的なスペキュラ

  • 画像ベースのスペキュラ ライティング - 視差修正をせずに最も近い 反射キャプチャ が各オブジェクトに適用されます。 

  • 動的オブジェクトはライティングを正確に受け取りますが、シャドウはキャストしません。

サポート対象のモバイル用ライトの種類

以下の表は、モバイル デバイス上でサポートするライトの種類と数です。 

Static Lights (静的ライト)

ライトの種類

モビリティ

サポート数

プロジェクト設定フラグ

追加情報

Directional

Static

制限なし

Allow Static Lighting

最高のパフォーマンス。指向性ライトマップにベイクされたライトとシャドウ。品質は低下。

Point

Static

制限なし

Allow Static Lighting

最高のパフォーマンス。指向性ライトマップにベイクされたライトとシャドウ。品質は低下。

Spot

Static

制限なし

Allow Static Lighting

最高のパフォーマンス。指向性ライトマップにベイクされたライトとシャドウ。品質は低下。

Stationary Lights (固定ライト)

ライトの種類

モビリティ

サポート数

プロジェクト設定フラグ

追加情報

Directional

Stationary

1

Allow Static Lighting

最高の品質。事前計算された符号付きディスタンス フィールド シャドウ マップ .

Point

Stationary

サポートなし

Allow Static Lighting

Stationary Mobility はサポートされていないので、Mobility = Static とみなされます。

Spot

Stationary

サポートなし

Allow Static Lighting

Stationary Mobility はサポートされていないので、Mobility = Static とみなされます。

ムーバブル ライト:

ライトの種類

モビリティ

サポート数

プロジェクト設定フラグ

追加情報

Directional

Movable

1

Support Movable Directional Lights

シャドウのサポートはなし

Point

Movable

最高 4

Use Shared Movable Spotlight / Point Light Shaders

シャドウのサポートはなし

Spot  *

Movable

最高 4

Support Movable Spotlights

シャドウのサポートはなし

モバイル デバイスのムーバブル スポットライトのサポートはデフォルトでは無効になっています。この機能を有効にするには、[Project Settings (プロジェクト設定)] > [Rendering (レンダリング)] > [Mobile Shader Premutations Reduction] を選択し、[Support Movable Spotlights] オプションの横にあるチェックボックスをクリックします。有効にした後、機能を使用する前に UE Editor を再起動する必要があります。

SupportMovableSpotLight.png

反射

反射を使用すると躍動感と写実性を出すことができますが、モバイル デバイスで反射を使用する際には注意すべき点がいくつかあります。以下は、ターゲットのモバイル デバイス上で最高の反射を作り出すために役立つ情報です。

  • ポストプロセス ボリューム内のすべてのアンビエント キューブマップの [Intensity (強度)][0] に設定して無効にする。
    PP_Settings.png

  • 反射用のライティングをキャプチャする場所に SphereReflectionCaptures アクタを置きます。

    Sphere Reflection Captures オフ Sphere Reflection Captures Off

    Sphere Reflection Captures オン Sphere Reflection Captures On

  • 反射をサポートするマテリアルを作成する場合は、以下のことに留意してください。

    • 法線マップに高周波および低周波細部が多くなるようにしてください。反射が分裂しやすくなり、面白い見た目の反射ができます。

      フラットな法線マップ Flat Normal Map

      ラフな法線マップ Rough Normal Map

    • ラフネスマップにいろいろな強度の白と黒を入れるようにしてください。反射に光沢を付けたり、多方向にぼんやり反射させることができます。

      多様なラフネス Varying Roughness

      フラットなラフネス Flat Roughness

    • サーフェスの種類に応じで、Metallic 入力は 1 または 0 になります。

      Metallic オフ Metallic Off

      Metallic オン Metallic On

Static Mesh コンポーネントは、それぞれに最も近い 反射キャプチャ に割り当てられます。つまり、オブジェクト間の反射にシームができたり、メッシュが大きいとたまたまメッシュの中央の近くにある反射キャプチャを使用することになります。

モバイル用にスカイライト反射を使用する

Reflection Capture アクタが関係しない場合、モバイル レンダーはスペキュラ反射のためにスカイライト キューブマップを使用することもできます。そのためには、すべての Reflection Capture アクタを除去し、Screen Space Reflection が無効になっていることを確認してください。以下の例で比較することができます。

PC でのスカイライト反射

モバイルでのスカイライト反射

この機能は Android ES2 デバイスではサポートされていません。Android ES2 デバイスは引き続きシーン キャプチャなしでレンダリングを行います。

モバイル用のスペキュラ ライティング

モバイル スペキュラ レスポンスは、デフォルトで GGX Lighting モデルを使用するように変更されました。これにより、モバイルのスペキュラの品質が改善し、より SM5 に近い見た目になりますが、シェーダー処理時間へのコストが多少追加されます。過去の Spherical Gaussian スペキュラ モデルも引き続き使用が可能ですが、この変更によりプロジェクトで使用するライティングの外観と質感が影響を受けます。過去の Spherical Gaussian Specular モデルを再度有効にするには、以下の手順に従います。

  1. [Project Settings (プロジェクト設定)] >[Rendering] > [Mobile] を選択します。

  2. [Use legacy shading model (レガシー シェーディング モデルを使用する)] の横のチェックボックスにチェックを入れます。
    UseOLDLegacyShadingModel.png

以下の画像でスライダーを移動すると、現在の Specular shading モデルと [Use legacy shading model] オプションを使った場合を比較することができます。

これまでのシェーディング モデル

新しいシェーディング モデル

変調シャドウイング

完全な動的シャドウは、モバイル プロジェクトに躍動感と写実性を出すために有用です。ただしモバイル デバイスの中には、ハードウェア制限およびレンダリングに必要な動的シャドウのリソース要件が高すぎるため、完全には動的シャドウにできないものもあります。回避策として、負荷の低い動的シャドウの 変調シャドウ (Modulated Shadows) が新しく UE4 に導入されました。変調シャドウの設定方法については、変調シャドウ をご覧ください。

動的カスケード シャドウ マップ

Stationary Directional Light (固定の指向性ライト) は、シーンの動的オブジェクトだけに Whole-scene Dynamic Cascade Shadow Maps (CSM) シャドウをキャストする場合に使います。CSM シャドウを使う利点の 1 つは、Stationary Directional Light (固定の指向性ライト) がシーンの静的オブジェクトによってキャストされた事前計算シャドウと正しくブレンドされる点です。ダブル シャドウイングは変調シャドウでは確認できても CSM シャドウでは表示されないので、複数のオブジェクトにシャドウをキャストすると処理が速くなります。カスケード シャドウの設定方法については、カスケード シャドウ を参照してください。

変調シャドウイング VS 動的シャドウイング

変調シャドウイングと動的シャドウイングは、外見も動作もよく似ています。変調シャドウには動的シャドウにはない制約とハードリミットが多いので、ハードウェアの性能が制限され、モバイル デバイス上でのパフォーマンスを向上させることができるのです。以下の画像で、動的シャドウと変調シャドウを見比べてみましょう。

動的シャドウ

変調シャドウ

以下は、UE4 プロジェクトで変調シャドウを使用する場合の代表的な機能と制約です。

  • シャドウ カラーの変更: [Directional Light (指向性ライト)] > [Light] セクション > [Modulated Shadow Color] オプションを調整して、変調シャドウがキャストしたシャドウの色を変更できます。ゲームプレイまはたアートに合わせてシャドウの色を調節する場合に便利です。

    クリックしてフルサイズで表示。

  • シャドウのブレンド: 動的シャドウとは違って、変調シャドウはベイク済みシャドウや動的シャドウなど、プロジェクトで表示される他のシャドウとはブレンドしません。つまり、変調シャドウが他のシャドウの上に重なると、ブレンドされている単独のシャドウではなく、両方のシャドウが表示されます。

    動的シャドウ Dynamic Shadows

    変調シャドウ Modulated Shadows

変調シャドウと動的シャドウでの作業方法

変調シャドウと動的シャドウには、変調シャドウの外見とパフォーマンスを調整するコンソールおよび .INI 設定がいくつかあります。これらの設定および UE4 プロジェクトへの適用方法について、次のセクションで説明します。

変調シャドウはできるだけ既存のシャドウ技術とコードを共有するようにします。つまり、他のシャドウイング メソッドで使用できるシャドウ cvars と .INI 設定は、変調シャドウおよび動的シャドウでもほとんどが使用できます。

  • シャドウの品質: 動的シャドウを有効にしてモバイル デバイス上で初めて表示すると、変調シャドウの鮮明さと品質が思っていたより悪くなることがあります。その場合は、アンリアル コンソールを開いて backtick (`) キーを使って数字の後に "r.shadowquality" と入力すると、シャドウの品質を調整できます。数字が高いほど、変調シャドウはフレームレートの負荷を考慮するようになります。次の画像は、r.shadowquality の値を **0**、**1**、**2**、**3**、**4**、**5** に設定した場合に変調シャドウの品質に与える影響を見ることができます。

スライダーをドラッグすると、r.shadowquality の設定を 0 から 5 にした場合の変化が表示されます。

  • セルフシャドウイング: 変調シャドウでは、キャラクターもしくはピックアップなどの動的オブジェクト上にセルフ シャドウイングが可能です。ただし、変調シャドウのパフォーマンスを優先するためにデフォルトでは無効にされています。セルフシャドウイングによる余分な負荷に対応できるプロジェクトの場合は、UE4 コンソールに r.Shadow.EnableModulatedSelfShadow 1 を入力して有効にしてください。セルフシャドウイングを無効にするには、UE4 コンソールに r.Shadow.EnableModulatedSelfShadow 0 を入力します。

    セルフシャドウ オン Self Shadow On

    セルフシャドウ オフ Self Shadow Off

  • シャドウ深度: シャドウのレンダリングの開始位置をオフセットするには、r.Shadow.CSMDepthBias コマンドを使います。以下の画像では、r.Shadow.CSMDepthBias をデフォルト値 0 から 101005001000 に値を変更した場合の変調シャドウの変化が分かります。

    スライダーをドラッグすると、r.Shadow.CSMDepthBias の設定を 0 から 1500 にした場合の変化が表示されます。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback