Movie Render Queue渲染通道

关于Movie Render Queue支持的渲染通道的参考指南

Choose your operating system:

Windows

macOS

Linux

在渲染作业的设置中对 渲染通道(render passes) 进行设置,即可将其添加到 Movie Render Queue 输出。

点击并拖动滑块可查看Movie Render Queue支持的部分渲染通道示例。

每个渲染通道都会以单独的渲染模式输出你的电影。所有选中的渲染通道都将在最终输出文件夹中依次输出。你可以在外部后期制作中或合成所选的节目时使用它们。

添加渲染通道不会将它们额外应用到最终渲染。每个通道都以选中的输出格式输出为一个单独序列。

在UI中单击 +设置(+ Setting) 下拉菜单并选择要输出的渲染模式,即可将渲染通道添加到你在 设置(Settings) 窗口中的渲染作业。所有渲染通道都列示在 渲染(Render) 组下。

点击查看大图。

单击其中任意选项,将它们添加到输出 渲染(Rendering) 下的设置(Settings)列表中。

点击查看大图。

你可以像使用任何其他设置一样启用和禁用渲染通道,并且可以选择它们来编辑其属性(若有任何可用)。

支持的渲染通道

虚幻(Unreal)的主要输出由默认的 延迟渲染(Deferred Rendering) 设置来处理,将产生你在视口中看到的最终图像。提供了一些变体,包括细节光照、仅光照、路径追踪器、反射和无光照。这些变体不会在创建最终图像时使用,在此处提供只是为了匹配关卡编辑器视口。本部分详细介绍渲染通道的完整列表。

延迟渲染

延迟渲染(Deferred Rendering)包括如下选项:

渲染通道

示例图像(点击可放大)

说明

延迟渲染(Deferred Rendering)

[![最终渲染(Final render)](RenderFinal.jpg)(w:450)](RenderFinal.jpg)

显示场景的最终图像,与你在视口中看到的相匹配。

细节光照(Detail Lighting)

[![细节光照(Detail Lighting)](RenderDetailLighting.jpg)(w:450)](RenderDetailLighting.jpg)

一种特殊的着色器变体,仅显示与法线贴图相结合的光照。在显示场景的几何体时非常有用。

仅光照(Lighting Only)

[![仅光照(Lighting Only)](RenderLightning.jpg)(w:450)](RenderLightning.jpg)

类似于细节光照,但没有影响光照的法线贴图。

路径追踪器(Path Tracer)

[![路径追踪器(Path Tracer)](RenderPathTracer.jpg)(w:450)](RenderPathTracer.jpg)

在累加每个帧时,显示路径追踪数据。如需了解如何保持此模式的高图像质量,请参阅"减少路径跟踪器渲染中的噪点(Reducing Noise in Path Tracer Renders)"。路径追踪器目前并不支持所有渲染功能。

仅反射(Reflections Only)

[![仅反射(Reflections Only)](RenderReflective.jpg)(w:450)](RenderReflective.jpg)

一种特殊的着色器变体,使世界场景中的所有内容都100%反光。

无光照(Unlit)

[![仅无光照(Unlit Only)](RenderUnlit.jpg)(w:450)](RenderUnlit.jpg)

一种特殊的着色器变体,仅显示反射率,但没有光照信息。

所有延迟渲染(Deferred Rendering)通道都具有相同的属性,但每个渲染通道都可以单独配置。

![延迟渲染选项(Deferred Rendering Options)](DeferredRenderOptions.png)

ID

属性

说明

1

累加器包含Alpha(Accumulator Includes Alpha)

如果启用,多重时间/空间取样将针对alpha通道进行累加。这要求将r.PostProcessing.PropagateAlpha设置为1或2,为此,你可以转到"项目设置(Project Settings)" > "渲染(Rendering)",然后使用"在后期处理中启用Alpha通道支持(Enable Alpha Channel Support in Post Processing)"设置。必须从你的场景中移除天空和迷雾,确保它们不会使所有像素不透明。如果启用此设置,将会使累加成本增加约30%,因此除非必要,应避免使用此设置。这适用于不使用多重时间或空间取样的渲染。

2

禁用多重采样效果(Disable Multisample Effects)

禁用混合了多种像素的后期处理效果,例如景深、时间抗锯齿、动态模糊和色相差,在使用对象Id渲染通道时不需要这些效果。你可以使用此设置为渲染作业排除这些后期处理,而不必在场景中手动禁用它们。

3

其他后期处理材质(Additional Post Process Materials)

在完成渲染后应用的其他后期处理材质数组。这可能会显著增加额外的时间。默认包括 MovieRenderQueue_WorldDepthMovieRenderQueue_MotionVectors

4

添加默认层(Add Default Layer)

创建一个额外的模板层,其中包含Stencil Layers(模板层)数组中未包含的所有对象(见下文)。此默认层将单独渲染,让你可以创建不包含较小的对象组的渲染,以便稍后重新合成。

5

模板层(Stencil Layers)

模板层的列表,其中包含场景中的很多对象组。此场景将重新渲染所有对象,然后,不包含指定层中的对象的像素将被剪切并变成黑色。随后应用后期处理,并保留使用DoF、动态模糊和TAA的能力。可以通过"窗口(Window) > 层(Layers)"创建新层。模板层不支持每个层都具有后期处理材质,因为它们将与基础层的其他后期处理材质匹配,且仅与支持自定义深度/模板的材质兼容。

模板层

实时渲染中的很多效果要求将内容绘制到屏幕,这些效果稍后可以用于屏幕空间后期处理,例如 屏幕空间反射(Screen Space Reflections)屏幕空间环境光遮蔽(Screen Space Ambient Occlusion)。在更加传统的分层系统中,你只能渲染一个角色,同时需要从周围的环境中选取反射效果。这在实时渲染中通常是不可能的,因此转而实施了 模板层(Stencil Layers)

利用模板层,针对每个层重新渲染整个场景,但属于一个层的actor也会渲染到模板缓冲区中。然后使用 模板层(stencil layers) 剪切不属于要置于此层上的actor范围内的像素。优势在于阴影投射对象将仍然可以将阴影投射到你的actor上,并且你的actor将能够将阴影投射到其他层上。

一旦渲染到模板缓冲区,应用的后期处理效果将占用每个像素,并将半透明黑色写入到像素中。此过程在半透明之后并在后期处理之前发生,然后将对此层应用后期处理。alpha通道可以保留,以便在后期制作中了解哪些像素实际受到影响以及受影响程度。

以下是三个模板层和默认层的示例。你可以看到后期处理效果(例如景深)已经正确应用,并且前景中的对象已经从背景图像中剪切出来。这些图像可以一起添加回去,从而形成与最终渲染相似的结果,虽然这可能需要取消预乘数据。

渲染划分成不同的模板层。

以下是Nuke中的示例,该示例对原始图像中的某个指定层应用了一次色调偏移。渲染原始图像时,在颜色输出(Color Output)设置中启用了alpha通道累加,但禁用了色调曲线(Tone Curve)。

点击查看大图。

点击查看大图。

模板层不是真正的层系统,因为半透明对象将显示其后面其他层中的不透明对象,并且在前景对象挡住半透明对象时,背景层将显示黑洞。

减少路径追踪器渲染中的噪点

路径追踪器(Path Tracer)渲染模式累加渲染的每个帧的路径数据。这会产生有噪点的图像,因为填充了图像的像素,尤其是当摄像机帧的内容发生显著变化时。

点击查看大图。

要减少此噪点,你应该增加抗锯齿(Anti-Aliasing)设置中的空间采样数。

![增加的空间采样计数(Increased spatial sample count)](IncreaseSpatialSamples.png)

这将多次渲染图像,并且额外的采样将使路径追踪器更有效地填充间隙。需要大量空间样本才能有效去除路径追踪器渲染中的噪点,而这将极大增加输出图像所需的时间。

具有1、8、16、32、64、128个采样的路径追踪器渲染示例

目前无法确保完全没有噪点的渲染。

路径追踪器渲染模式在虚幻引擎4.26中是试验性质的。未来会进行进一步调整。

对象ID

![延迟渲染(Deferred Render)](objectidcomp1.png)(w:650)

![对象ID渲染(Object ID Render)](objectidcomp2.png)(w:650)

对象ID渲染通道在虚幻引擎4.26中是试验性质的。此外,此功能仅在虚幻编辑器中可用,不能在发布版中使用。

对象ID(Object Id) 渲染通道输出一个图像,其中,场景中的每个组件都会分配到唯一的ID。你可以在后期制作套件中使用此图像,以在场景中选择单独的对象,并为这些对象创建遮罩,以便可以有选择地将调整应用到特定对象。例如,你可以仅更改一个对象或一组对象的色调,而不会影响整个图像的色调。

对象ID通道具有几个具体的要求,需要提供有用的信息。按照这些步骤来启用该通道,并设置你的渲染队列来提供支持:

  1. 打开 插件(Plugins) > 内置(Built-In) > 渲染(Rendering),然后启用 Movie Render Queue其他渲染通道(Movie Render Queue Additional Render Passes) 插件。启用插件后,需要重新启动编辑器。这会将对象ID添加为Movie Render Queue设置菜单中的选项。

    ![其他渲染通道(Additional render passes)](AdditionalRenderPassPlugin.png)

  2. 对象ID(有限)(Object Ids (Limited)) 渲染通道添加到作业设置中。

    ![对象ID设置(The Object IDs setting)](ObjectIdsSetting.png)

  3. 对于计划与对象ID通道组合在一起的其他渲染通道,将 禁用多重采样效果(Disable Multisample Effects) 设置为 真(true)。这将排除动态模糊、景深、抗锯齿和其他将混合多个像素层的后期处理,确保所有对象保持清晰的边缘。为了让对象ID通道需要与最终图像正确排队,此设置是必需的。

  4. 延迟渲染(Deferred Rendering) 设置的 延迟渲染(Deferred Rendering) 数据下,展开 其他后期处理材质(Additional Post Process Materials),并同时启用 MovieRenderQueue_WorldDepthMovieRenderQueue_MotionVectors 材质。

    点击查看大图。

  5. 对于要渲染的所有摄像机,确保将 屏幕百分比(Screen Percentage) 设置为 100。为了让对象ID通道需要与最终图像正确排队,此设置是必需的。

    ![屏幕百分比100%(Screen Percentage 100 percent)](ScreenPercentage100.png)

  6. 抗锯齿(Anti-aliasing) 设置添加到你的作业,并将 空间采样计数(Spatial Sample Count) 至少设置为 8。这有助于克服不支持TAA的限制。使用 时间采样计数(Temporal Sample Count) 不会产生所需的结果,因为每个采样之间缺少可以覆盖缝隙的动态模糊;你最终将得到对象的多个副本,彼此隐约重叠在一起。

    ![将空间采样计数设置为8(Set spatial sample count to 8)](IncreaseSpatialSamples.png)

  7. .exr序列(.exr Sequence) 输出模式添加到你的设置,并停用或移除任何其他输出。确保启用了 多层(Multilayer) 属性。

    ![设置多层EXR(Set multilayer EXR)](SetMultilayerEXR.png)

在完成这些设置后启动Movie Render Queue时,它将输出一个多层EXR,其中包含最终图像、对象ID、世界深度和运动向量。

对象ID使用Cryptomatte [ https://github.com/Psyop/Cryptomatte]规范存储在EXR文件中,用于读取此数据的插件可用于第三方软件。

世界深度

世界深度(World Depth) 是以世界单位编写的深度,存储在红色通道中。这可以用于在后期制作中重新创建 景深(Depth of Field)。可以从EXR元数据中读取摄像机焦距和快门大小,以自动匹配游戏内的景深。

下面是 Nuke Zdefocus2 节点的示例。此示例将从EXR文件中读取元数据,并生成与实时发现的模糊相似的模糊。

set cut_paste_input [stack 0]

version 12.0 v3
push $cut_paste_input
add_layer {FinalImageMovieRenderQueue_WorldDepth FinalImageMovieRenderQueue_WorldDepth.red FinalImageMovieRenderQueue_WorldDepth.green FinalImageMovieRenderQueue_WorldDepth.blue FinalImageMovieRenderQueue_WorldDepth.alpha}
ZDefocus2 {
 z_channel FinalImageMovieRenderQueue_WorldDepth.red
 math depth
 fill_foreground false
 center {{"[metadata exr/unreal/camera/FinalImage/focalDistance]"}}
 focal_point {960 540}
 size {{"((input.height*(focalLength*focalLength / (fstop * (focalDistance - focalLength)))*.5 / sensorWidth)/10)" x1 26}}
 max_size 100
 filter_type bladed
 legacy_resize_mode false
 show_legacy_resize_mode false
 blades {{"[metadata exr/unreal/camera/FinalImage/dofDiaphragmBladeCount]"}}
 name ZDefocus1
 selected true
 xpos 959
 ypos 229
 addUserKnob {20 User}
 addUserKnob {7 focalLength l "Focal Length"}
 focalLength {{"[metadata exr/unreal/camera/FinalImage/focalLength]"}}
 addUserKnob {7 focalDistance l "Focal Distance"}
 focalDistance {{"[metadata exr/unreal/camera/FinalImage/focalDistance]"}}
 addUserKnob {7 sensorWidth l "Sensor Width"}
 sensorWidth {{"[metadata exr/unreal/camera/FinalImage/sensorWidth]"}}
 addUserKnob {7 fstop l Fstop}
 fstop {{"[metadata exr/unreal/camera/FinalImage/fstop]"}}
}

运动向量(速度)

运动向量存储在X和Y为[0,1]的坐标上,其中[0.5, 0.5]表示无运动。

以下Nuke VectorBlur节点可以用于将运动向量应用至你的图像。虚幻将规格化的运动向量存储到整个屏幕上,这可能与其他渲染包不同。因此,在Nuke VectorBlur节点中,uv_offset设置为-0.5(重新调节为[-.5, .5],而非[0, 1]),然后根据图像的宽度来推动动态模糊比例。

set cut_paste_input [stack 0]
version 12.0 v3
push $cut_paste_input
add_layer {FinalImageMovieRenderQueue_MotionVectors FinalImageMovieRenderQueue_MotionVectors.red FinalImageMovieRenderQueue_MotionVectors.green FinalImageMovieRenderQueue_MotionVectors.blue FinalImageMovieRenderQueue_MotionVectors.alpha}
VectorBlur2 {
 uv FinalImageMovieRenderQueue_MotionVectors
 uv_offset -0.5
 blur_type uniform
 scale {{input.width}}
 soft_lines true
 name Unreal_VectorBlur
 selected true
 xpos 1338
 ypos -93
}

根据你选择的软件,可能需要分别重新调节运动向量的X和Y通道。请参阅下一部分,了解详细信息。

在后期制作中合并对象ID、深度和速度

可以通过合并多重空间采样、深度和速度,生成与虚幻的后期处理管线相似的结果;通过深度贴图得到景深,通过速度纹理得到动态模糊。这样可以使用对象ID遮片来选择对象和颜色以进行更正,然后再应用后期处理。初始渲染时,可以通过8个或更多空间采样重新创建抗锯齿。

要通过DoF和MotionBlur保留正确的光亮高光,应在禁用色调曲线(设置(Settings) -> 颜色选项(Color Options) -> 禁用色调曲线(Disable Tone Curve))的情况下渲染场景。这将在sRGB色彩空间中输出HDR线性数值。应用DoF和MotionBlur之后,现在可以将其(从线性sRGB中)转换为所需的色彩空间如果你没有禁用色调曲线,则在应用DoF和MotionBlur之后,高光看起来会非常暗淡,因为HDR数值在应用模糊之前会显著降低。

![](ColorOutput.png)

以下是一个示例Nuke图表,该图表使用了上述ZDefocus和VectorBlur节点。对于要在Nuke中使用的速度纹理,需交换其红色和绿色通道(下面图表中的RG_TO_GR,使用ShuffleCopy节点)。

此外,由于虚幻将规格化的运动向量[0-1]同时存储在X和Y中,你需要将红色通道重新调节为ImageHeight/ImageWidth(此示例中为1080/1920),或0.5625。为了完成此重新调节,我们从速度通道中减去-0.5,乘以0.5625,然后再将0.5加回速度通道,最后再将其插入VectorBlur节点。如果不重新调节红色通道,将导致动态模糊出现错误的角度。

此Nuke图表利用8次空间采样、对象ID通道、运动向量和世界深度来渲染exr。景深信息是自动从exr元数据中提取的。Cryptomatte节点可用于创建风扇叶片和地毯的遮罩,然后用作单次色调偏移的遮罩。应用色调偏移之后,将会应用此前提及的ZDefocus节点,然后应用VectorBlur。

要使用此功能,必须在项目设置中启用"基础通道期间的输出速度(Output Velocities During Base Pass)"。更改此项目设置之后,必须重新启动编辑器。

此外,r.BasePassForceOutputsVelocity CVar必须设置为1。通过编辑/Engine/Config/ConsoleVariables.ini,可以在整个引擎中应用此设置,或者可以在每次开始电影渲染时将其应用为控制台变量。

![](BasePassOutputsVel.png)

ConsoleVariables.ini

[Startup] r.BasePassForceOutputsVelocity=1

UI渲染器(非合成)

UI渲染器将渲染作为含有alpha的单独输出添加到视口的Slate或UMG控件。你可以将此功能与合成程序中的最终图像结合使用,从而添加要渲染的任何UI元素。

本文基于此前的虚幻引擎版本编写,未针对当前的虚幻引擎5.0版本更新过。