開発

Unrealエンジンにおけるトーンマッピング

更新日時: 2026/04/14
Meta Questにおいて、トーンマッピングに関連する従来のパフォーマンスコストを生じさせることなく、Unreal Engineの特定のトーンマッピングエフェクトを使うことができます。Meta Quest統合では、約600マイクロ秒の追加レンダリング時間でトーンマッピングをレンダリングできます(実際のパフォーマンスはデバイスやシーンの複雑さによって異なります)。これを実現できるのは、この統合ではUnrealエンジンのモバイルHDRモードや追加レンダーパスではなく、Vulkanサブパスを使用しているためです。
この機能は、UEのOculus-VR forkと、Meta XRプラグインを使用したEpic標準版のUnrealエンジンの両方で利用できます。なお、この機能を使用するにはVulkanが必要です。
Example of tonemapping
Vulkanトーンマップサブパスは、次のポストプロセスエフェクトをサポートします。
  • カラーグレーディング(LUTを含む)
  • フィルムトーンマッピング
  • ビネット
Android Vulkan Previewがエディターでサポートされています。

サンプル

グラフィックショーケースのサンプルでは、よく使われる3種類のトーンマッピングエフェクトが紹介されています。
  • フェードイン/フェードアウト
  • 色合い昼夜サイクル
  • カラーグレーディングLUT
  • ビネット
グラフィックショーケースサンプルアプリは次の場所で入手できます。

トーンマッピング用のサブパスを有効にする

トーンマッピングのVulkanサブパスを有効にするには、r.Mobile.TonemapSubpass=1を設定します。
トーンマッピングが不要な場合にパフォーマンスを回復するためにVulkanサブパスを無効にするには、r.Mobile.TonemapSubpass=0を設定します。
このコンソール変数は、以下のいずれかの方法で設定できます。
  • DefaultEngine.ini: プロジェクトのDefaultEngine.iniで、[/Script/Engine.RendererSettings]セクションに以下を追加します。
      [/Script/Engine.RendererSettings]
      r.Mobile.TonemapSubpass=1
    
  • ランタイムでのコンソールコマンド: コンソール経由でr.Mobile.TonemapSubpass 1を実行します。
  • C++またはBlueprint: Execute Console Command Blueprintノードを使用するか、r.Mobile.TonemapSubpass 1というコマンド文字列を指定してプレイヤーコントローラーでConsoleCommand()を呼び出します。
Note
トーンマップサブパスは、モバイル遅延シェーディングと互換性がありません。モバイル遅延シェーディングが有効になっている場合、トーンマップサブパスは自動的に無効になります。

パススルーでのHDRの使用(複合現実)

トーンマップサブパスは、複合現実アプリでHDRレンダリングやパススルーと併用できます。そのためには、パススルーブレンディングのためのアルファチャネルデータを含む特定のシーンカラーフォーマットが必要です。
デフォルトの場合、HDRはPF_FloatR11G11B10ピクセルフォーマットを使用しており、アルファチャネルはありません。パススルーブレンディングにはアルファデータが必要なため、PF_A2B10G10R10フォーマットに切り替える必要があります。
パススルーでHDRを有効にするには:
  1. 次の行をプロジェクトのDefaultEngine.iniに追加します。
     r.Mobile.SceneColorFormat=4
    
    これにより、シーンのカラーフォーマットがPF_A2B10G10R10に設定され、パススルー合成に必要なアルファチャネルが提供されます。
  2. r.Mobile.TonemapSubpass=1を設定して、上記のようにトーンマップサブパスを有効にします。
Note
r.Mobile.SceneColorFormat=4がない場合、デフォルトのHDRピクセルフォーマット(PF_FloatR11G11B10)にはアルファチャネルデータが含まれていないため、パススルーブレンディングが正しく機能しません。

トーンマッピングのさまざまなエフェクト

特定のトーンマッピングエフェクトは、後処理ボリュームプロパティとレベルシーケンスで値を変更すれば実装できます。Vulkanサブパスは以下をサポートします。
  • レベルシーケンスでのフェードトラック
  • 後処理ボリュームプロパティでのシーン色合い
  • 後処理ボリュームプロパティでのカラーグレーディングLUT
  • 後処理ボリュームプロパティでのビネット

フェードインとフェードアウト

フェードインとフェードアウトは、レベルシーケンスにフェードトラックを追加し、フェードトラック上でキーポイントを定義することにより実装できます。フェード値1.0は完全不透明の黒、0.0は完全透明です。
フェードを実装するには、次のようにします。
  1. メインツールバーから、[Cinematics(シネマティクス)] > [Add Level Sequence(レベルシーケンスを追加)]をクリックします。
  2. シーケンサーで、[+ Track(トラック追加)]をクリックしてから、[Fade Track(フェードトラック)]を選択します。
    Level sequence with a Fade
  3. フェードトラックを選択し、[o]をクリックして、キーフレームを追加します。

色合い

後処理ボリュームを追加し、ボリュームのシーン色合いプロパティを変更することで、色合いやトーンを追加できます。
基本的な色合いを追加するには、次のようにします。
  1. [Post Process Volume (後処理ボリューム)]アクターをレベルに追加します。
  2. [Post Process Volume Settings (後処理ボリュームの設定)]プロパティに移動し、[Enabled (有効)][Infinite Extent (Unbound) (無限(制限なし))]を選択します。
    Post Process Volume settings
  3. [Color Grading|Misc(カラーグレーディング|その他)] > [Scene Color Tint(シーン色合い)]プロパティを、目的の色合いに設定します。
    Post Process Volume scene color tint settings

昼夜サイクル

シーケンサーを使って、後処理ボリュームの色合いを時間と共に変化させることによって、昼夜サイクルをアニメーション化できます。例えば、シーン色合いを、夜間は青、明け方は赤、昼は自然白色と徐々に変化させることができます。
シーン色合いプロパティの変更シーケンスを作成するには、以下のようにします。
  1. メインツールバーから、[Cinematics (シネマティクス)] > [Add Level Sequence (レベルシーケンスを追加)]をクリックします。
  2. シーケンサーで、[+ Track(トラック追加)] > [Actor to Sequencer(アクターをシーケンサーに)]をクリックした後、後処理ボリュームを選択します。後処理ボリュームがシーケンサーに追加されます。
  3. シーケンサーに追加された後処理ボリュームで、[+ Track(トラック追加)] > [Settings(設定)] > [Color Grading|Misc(カラーグレーディング|その他)] > [Scene Color Tint(シーン色合い)]をクリックします。シーン色合いの設定がシーケンサーに追加されます。
  4. [Scene Color Tint (Settings)(シーン色合い(設定))]を展開し、[o]をクリックして、目的の場所にキーフレームを追加します。
    Tonemapping day night sequence

カラーグレーディングLUT

LUTを適用することにより、カラーパレットやカラーグレーディングを変更できます。LUTを自分で作成することも、UnrealマーケットプレイスからLUTを入手することもできます。
カラーグレーディングLUTを適用するには、次のようにします。
  1. LUTテクスチャーをプロジェクトに追加します。
  2. [Post Process Volume (後処理ボリューム)]アクターをレベルに追加します。
  3. [Post Process Volume Settings (後処理ボリュームの設定)]プロパティに移動し、[Enabled (有効)][Infinite Extent (Unbound) (無限(制限なし))]を選択します。
    Post Process Volume settings
  4. [Post Process Volume(後処理ボリューム)] > [Color Grading(カラーグレーディング)]プロパティに移動します。
  5. [Color Grading LUT (カラーグレーディングLUT)]を選択し、適用するLUTテクスチャーをリストから選択します。
    Post Process Volume color grading settings

ビネット

後処理ボリュームのレンズ画像エフェクトのプロパティを使用して、楕円ビネットを適用することができます。
基本的なビネットを追加するには、次のようにします。
  1. [Post Process Volume(後処理ボリューム)]アクターをレベルに追加します。
  2. [Lens(レンズ)] > [Image Effects(画像エフェクト)]プロパティに移動し、[Vignette Intensity(ビネット強度)]を選択して設定します。
    Post Process Volume vignette settings

トラブルシューティング

トーンマップサブパスを有効にすると色が変化する

r.Mobile.TonemapSubpass=1を有効にすると、トーンマップサブパスなしのレンダリングに比べて、色の彩度が目に見えて増加する可能性があります。これは、Unreal Engineのデフォルトのフィルムトーンマッパーが、トーンマップサブパスが無効なときにはアクティブでないトーン曲線を適用するためです。
トーンマップサブパスを有効にしたまま元の色の表示を復元するには、以下のいずれかの方法でトーンカーブを無効にします。
  • コンソール変数: 実行時にShowFlag.ToneCurve=0を設定します。
  • 後処理ボリューム: 後処理ボリュームをレベルに追加し、[Film (フィルム)] > [Tone Curve Amount (トーンカーブ量)][0]に設定します。

エフェクトが表示されない

エフェクトが表示されない場合、次のことを確認してください。
  • [Post Process Volume Settings(後処理ボリュームの設定)] > [Enabled(有効)]を選択したこと。
  • カメラが後処理ボリュームの範囲内にあること、または[Post Process Volume Settings(後処理ボリュームの設定)] > [Infinite Extent (Unbound)(無限(制限なし))]を選択したこと。
Post Process Volume settings
ナビゲーションロゴ
日本語
© 2026 Meta