Unreal Engine 中的色调映射
更新时间: 2026年4月14日
在 Meta Quest 上,可在 Unreal Engine 中使用某些色调映射特效,却不会产生与色调映射相关的传统性能成本。Meta Quest 集成方案渲染色调映射仅需额外约 600 微秒的渲染时间,只是实际性能因设备和场景复杂性而异。之所以能够实现这一点,是因为集成方案使用 Vulkan 子通道,而非 Unreal Engine 的移动 HDR 模式或额外渲染通道。
Vulkan 色调映射子通道支持以下后期处理特效:
“图形演示”示例展示了这些常见的色调映射特效:
“图形演示”示例应用可在以下地方获取:
如要启用 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 节点,或在玩家控制器上调用 ConsoleCommand() 并使用命令字符串 r.Mobile.TonemapSubpass 1。
Note
色调映射子通道与移动端延迟着色不兼容。如果启用了移动端延迟着色,则色调映射子通道将自动禁用。可以将色调映射子通道与 HDR 渲染和透视功能结合起来,用于混合现实应用程序。这需要一个特定的场景颜色格式,其中包括用于透视混合的 Alpha 通道数据。
默认情况下,HDR 使用 PF_FloatR11G11B10 像素格式,该格式没有 Alpha 通道。透视混合需要 Alpha 数据,因此必须切换到 PF_A2B10G10R10 格式。
如要启用 HDR 和透视功能:
将以下代码行添加到项目的 DefaultEngine.ini 中:
r.Mobile.SceneColorFormat=4
这会将场景的颜色格式设置为 PF_A2B10G10R10,为透视合成提供所需的 Alpha 通道。
通过设置 r.Mobile.TonemapSubpass=1 启用上述色调映射子通道。
Note
如果没有 r.Mobile.SceneColorFormat=4,透视混合将无法正常工作,因为默认 HDR 像素格式 (PF_FloatR11G11B10) 不包含 Alpha 通道数据。可以通过更改 Post Process Volume(后期处理体积)属性和 Level Sequence(关卡序列)中的值来实现特定的色调映射特效。Vulkan 子通道支持:
- 关卡序列中的淡入淡出轨迹
- 后期处理体积属性中的场景颜色渐变
- 后期处理体积属性中的颜色分级 LUT
- 后期处理体积属性中的晕影
在 Level Sequence(关卡序列)中添加淡入淡出轨迹,并在该轨迹上定义关键点,即可实现淡入淡出特效。淡入淡出值为 1.0 表示完全不透明的黑色,而 0.0 表示完全透明。
实现淡入淡出效果:
在主工具栏中,点击 Cinematics(过场动画)> Add Level Sequence(添加关卡序列)。
在序列器中,点击 + Track(+ 轨迹),然后选择 Fade Track(淡入淡出轨迹)。
选择 Fade(淡入淡出)轨迹,然后点击 o 添加关键帧。
添加 Post Process Volume(后期处理体积)并更改该处理体积的 Scene Color Tint(场景颜色渐变)属性,即可添加颜色渐变或色调。
添加基础颜色渐变:
将 Post Process Volume(后期处理体积)Actor 添加到关卡。
前往 Post Process Volume Settings(后期处理体积设置)属性,然后选择 Enabled(启用)和 Infinite Extent (Unbound)(无限范围(无边界))。
将 Color Grading|Misc(颜色分级|其他项)> Scene Color Tint(场景颜色渐变)属性设置为想要的颜色渐变效果。
可以使用序列器随着时间的推移逐渐改变后期处理体积的颜色渐变,从而制作昼夜循环的动画效果。例如,可以让“场景颜色渐变”从夜晚时的蓝色逐渐变为黎明时的红色,再变为白天时的中性白色。
要创建“场景颜色渐变”属性变化的序列:
在主工具栏中,点击 Cinematics(过场动画)> Add Level Sequence(添加关卡序列)。
在序列器中,点击 + Track(+ 轨迹)> Actor to Sequencer(将 Actor 添加到序列器),然后选择后期处理体积。后期处理体积已添加到序列器中。
在添加到序列器的后期处理体积中,点击 + Track(+ 轨迹)> Settings(设置)> Color Grading|Misc(颜色分级|其他项)> Scene Color Tint(场景颜色渐变)。场景颜色渐变设置已添加到序列器中。
展开 Scene Color Tint (Settings)(场景颜色渐变(设置)),然后点击 o 在所需位置添加关键帧。
要应用颜色分级 LUT:
向项目添加 LUT 纹理。
将 Post Process Volume(后期处理体积)Actor 添加到关卡。
前往 Post Process Volume Settings(后期处理体积设置)属性,然后选择 Enabled(启用)和 Infinite Extent (Unbound)(无限范围(无边界))。
前往 Post Process Volume(后期处理体积)> Color Grading(颜色分级)属性。
选择 Color Grading LUT(颜色分级 LUT),然后从列表中选择要应用的 LUT 纹理。
利用 Post Process Volume(后期处理体积)的 Lens Image Effects(镜头图像特效)属性即可应用椭圆形晕影。
添加基础晕影:
将 Post Process Volume(后期处理体积)Actor 添加到关卡。
前往 Lens > Image Effects(镜头 > 图像特效)属性,然后选择并设置 Vignette Intensiy(晕影强度)。
与不使用色调映射子通道的渲染效果相比,启用 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)(后期处理体积设置 > 无限范围(无边界))。
- 渲染 — Meta Quest 渲染注意事项概述
- 前向着色渲染器 — 为 Meta Quest 应用程序配置前向着色渲染器
- 透视 API 概览 — 在 Unreal Engine 项目中设置透视功能
- 兼容性矩阵 — 各 Unreal Engine 版本和集成方式下的功能支持