Choose your operating system:
Windows
macOS
Linux
在渲染作业的设置中对 渲染通道(render passes) 进行设置,即可将其添加到 Movie Render Queue 输出。
每个渲染通道都会以单独的渲染模式输出你的电影。所有选中的渲染通道都将在最终输出文件夹中依次输出。你可以在外部后期制作中或合成所选的节目时使用它们。
添加渲染通道不会将它们额外应用到最终渲染。每个通道都以选中的输出格式输出为一个单独序列。
在UI中单击 +设置(+ Setting) 下拉菜单并选择要输出的渲染模式,即可将渲染通道添加到你在 设置(Settings) 窗口中的渲染作业。所有渲染通道都列示在 渲染(Render) 组下。
单击其中任意选项,将它们添加到输出 渲染(Rendering) 下的设置(Settings)列表中。
你可以像使用任何其他设置一样启用和禁用渲染通道,并且可以选择它们来编辑其属性(若有任何可用)。
支持的渲染通道
虚幻(Unreal)的主要输出由默认的 延迟渲染(Deferred Rendering) 设置来处理,将产生你在视口中看到的最终图像。提供了一些变体,包括细节光照、仅光照、路径追踪器、反射和无光照。这些变体不会在创建最终图像时使用,在此处提供只是为了匹配关卡编辑器视口。本部分详细介绍渲染通道的完整列表。
延迟渲染
延迟渲染(Deferred Rendering)包括如下选项:
渲染通道 |
示例图像(点击可放大) |
说明 |
---|---|---|
延迟渲染(Deferred Rendering) |
显示场景的最终图像,与你在视口中看到的相匹配。 |
|
细节光照(Detail Lighting) |
一种特殊的着色器变体,仅显示与法线贴图相结合的光照。在显示场景的几何体时非常有用。 |
|
仅光照(Lighting Only) |
类似于细节光照,但没有影响光照的法线贴图。 |
|
路径追踪器(Path Tracer) |
在累加每个帧时,显示路径追踪数据。如需了解如何保持此模式的高图像质量,请参阅"减少路径跟踪器渲染中的噪点(Reducing Noise in Path Tracer Renders)"。路径追踪器目前并不支持所有渲染功能。 |
|
仅反射(Reflections Only) |
一种特殊的着色器变体,使世界场景中的所有内容都100%反光。 |
|
无光照(Unlit) |
一种特殊的着色器变体,仅显示反射率,但没有光照信息。 |
所有延迟渲染(Deferred Rendering)通道都具有相同的属性,但每个渲染通道都可以单独配置。
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_WorldDepth 和 MovieRenderQueue_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)设置中的空间采样数。
这将多次渲染图像,并且额外的采样将使路径追踪器更有效地填充间隙。需要大量空间样本才能有效去除路径追踪器渲染中的噪点,而这将极大增加输出图像所需的时间。
目前无法确保完全没有噪点的渲染。
路径追踪器渲染模式在虚幻引擎4.26中是试验性质的。未来会进行进一步调整。
对象ID
对象ID渲染通道在虚幻引擎4.26中是试验性质的。此外,此功能仅在虚幻编辑器中可用,不能在发布版中使用。
对象ID(Object Id) 渲染通道输出一个图像,其中,场景中的每个组件都会分配到唯一的ID。你可以在后期制作套件中使用此图像,以在场景中选择单独的对象,并为这些对象创建遮罩,以便可以有选择地将调整应用到特定对象。例如,你可以仅更改一个对象或一组对象的色调,而不会影响整个图像的色调。
对象ID通道具有几个具体的要求,需要提供有用的信息。按照这些步骤来启用该通道,并设置你的渲染队列来提供支持:
-
打开 插件(Plugins) > 内置(Built-In) > 渲染(Rendering) ,然后启用 Movie Render Queue其他渲染通道(Movie Render Queue Additional Render Passes) 插件。启用插件后,需要重新启动编辑器。这会将对象ID添加为Movie Render Queue设置菜单中的选项。
-
将 对象ID(有限)(Object Ids (Limited)) 渲染通道添加到作业设置中。
-
对于计划与对象ID通道组合在一起的其他渲染通道,将 禁用多重采样效果(Disable Multisample Effects) 设置为 真(true) 。这将排除动态模糊、景深、抗锯齿和其他将混合多个像素层的后期处理,确保所有对象保持清晰的边缘。为了让对象ID通道需要与最终图像正确排队,此设置是必需的。
-
在 延迟渲染(Deferred Rendering) 设置的 延迟渲染(Deferred Rendering) 数据下,展开 其他后期处理材质(Additional Post Process Materials) ,并同时启用 MovieRenderQueue_WorldDepth 和 MovieRenderQueue_MotionVectors 材质。
-
对于要渲染的所有摄像机,确保将 屏幕百分比(Screen Percentage) 设置为 100 。为了让对象ID通道需要与最终图像正确排队,此设置是必需的。
-
将 抗锯齿(Anti-aliasing) 设置添加到你的作业,并将 空间采样计数(Spatial Sample Count) 至少设置为 8 。这有助于克服不支持TAA的限制。使用 时间采样计数(Temporal Sample Count) 不会产生所需的结果,因为每个采样之间缺少可以覆盖缝隙的动态模糊;你最终将得到对象的多个副本,彼此隐约重叠在一起。
-
将 .exr序列(.exr Sequence) 输出模式添加到你的设置,并停用或移除任何其他输出。确保启用了 多层(Multilayer) 属性。
在完成这些设置后启动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数值在应用模糊之前会显著降低。
以下是一个示例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,可以在整个引擎中应用此设置,或者可以在每次开始电影渲染时将其应用为控制台变量。
[Startup] r.BasePassForceOutputsVelocity=1
UI渲染器(非合成)
UI渲染器将渲染作为含有alpha的单独输出添加到视口的Slate或UMG控件。你可以将此功能与合成程序中的最终图像结合使用,从而添加要渲染的任何UI元素。