High Quality Media Export Overview

Provides a high level description and briefly describes how to use High Quality Media Export

Windows
MacOS
Linux

While High Quality Media Export is generally ready for you to use and provide feedback on, you may encounter issues when extending the system since the internal APIs are still in development. Additionally, not all Render Movie's functionality (such as Composure, GBuffer Channels, ProRes/AvidDNxHD, and XML export) is in High Quality Media Export at this time. We will continue to update and improve the functionality and stabilize the UI for High Quality Media Export before it is released from Beta.

High Quality Media Export is a successor to the Sequencer Render Movie feature, and is built for higher quality, easier integration into production pipelines, and user extensibility. With High Quality Media Export you can accumulate multiple render samples together to produce the final output frame, which allows for higher quality anti-aliasing, radial motion blur, and reduced noise in ray tracing.

High Quality Media Export also supports several other new features to produce high-quality renders, such as the new High Resolution setting that allows tiled renders to overcome GPU memory limits and device timeout limitations. You can also export translucent images (with appropriate project/scene settings), produce 16-bit HDR images with linear data, and save render configurations into assets that you can reuse and share between developers. Lastly, batches are now managed with the new render queue, which allows you to batch render multiple sequences easily, similarly to the rendering process in Adobe After Effects.

More specifically, this feature provides different benefits to different Unreal users over the existing Render Movie feature:

  • Gaming: You can produce higher-quality game trailers with less artifacts from motion blur and temporal anti-aliasing.

  • Automotive: Temporal super-sampling enables rotational motion blur for car wheels, and high-resolution tiling allows large output images.

  • Virtual Production: High-quality anti-aliasing and motion blur enable better looking output content.

  • Architectural Visualization: Spatial super-sampling allows nicely anti-aliased images with little ray tracing noise.

Example of 8K still-rendered image. Click to expand.

Eventually, High Quality Media Export will replace the existing Render Movie feature in Sequencer.

Using High Quality Media Export

  1. Verify the Movie Render Pipeline plugin is enabled (this is on by default).

  2. Navigate to Window > Cinematics and select Movie Render Queue. A popup for the queue appears.

    navigation

  3. Select +Render to add sequences to the queue. You can also drag and drop sequences into the queue from the Content Browser.

    add sequence

  4. Select the link in the Settings column to adjust various options for the render. When complete, select Accept to confirm your selections. You can also save your settings as a Preset.

    settings column and links

  5. Select Render when you are finished. You can Render (Local) to use the render in your current session, or Render (Remote) to create a new render process on your machine.

Rendering Locally vs. Remotely

There are two rendering options available, Local and Remote. Render (Local) renders in the same process as Unreal Engine and is similar to Play In Editor (PIE). This option is useful for previewing your render as you are working, since you do not need to save your changes.

Render (Remote) launches an external process that renders all sequences in your queue. Because Remote render is resource intensive and does not run Editor’s code during the render, you must save your project so the external process can read the disk files.

There are also several customization options available with the Render options. The default behaviors of these options are determined by the Project Settings and can be adjusted to run your own code, such as adapting Render (Remote) to use third-party render-farm management software. Additionally, the command line used to launch the separate process is written to the Output Log, which can be a starting place for building your own automated render farms.

You can implement your own render farm by inheriting from UMoviePipelineExecutorBase (MoviePipelineExecutor.h). You can see examples in MoviePipelinePIEExecutor.h and MoviePipelineNewProcessExecutor.h as a starting point for writing your own behavior for these options when customizing the rendering system to match your studio’s individual needs.

Adjusting Render Settings

There are three different kinds of options built into High Quality Media Export that you can adjust: Output Format, Rendering, and Settings. To add an option from any of these categories, select +Setting and choose the option you want. Each setting can be toggled on or off without deleting your settings, and each setting may have additional sub-options you can adjust to meet your needs. You can also add custom settings to this list by implementing the UMoviePipelineSetting (MoviePipelineSetting.h) class.

As you adjust your settings, we recommend having at least one Output Format and one Rendering option enabled. Without these, High Quality Media Export will still work, but it will not produce any images or files, and instead will run through the system. This could be useful if you are writing your own setting that may not need to render anything to work.

adding settings

If you want to save your current settings for future use, select Presets > Save as Preset. You can then name and save your preset for future use.

adding a new preset

Output Format Options

The Output Format options allow you to select the output file format. Unlike Render Movie, multiple file formats can be output at once, and they are no longer dependent on the data you are rendering.

You can also create your own format by implementing the UMoviePipelineOutputBase, which gives you a callback for each output frame containing all images rendered in that frame, such as burn ins, UI widgets, and the final image.

Output Format

Description

.bmp Sequence (8bit)

Sequences are clamped in the [0-1] range, meaning that no HDR values are preserved. sRGB gamma correction is applied to 8-bit targets.

.exr Sequence (16bit)

HDR values are preserved but if the Tone Curve is enabled, linear values are rescaled to approximately the [0-1] range with only the brightest highlights going above one. Disabling the Tone Curve writes linear values in the [0-100] or more range depending on the intensity of lights and other bright objects. To produce transparent images, check Output Alpha and make sure to set “Enable Alpha Channel Support in Post Processing” to Linear color space only. No sRGB gamma correction is applied to .exr targets.

.jpg Sequence (8bit)

sRGB gamma correction is applied to 8-bit targets.

.png Sequence (8bit)

To produce transparent images, check Output Alpha and make sure to set “Enable Alpha Channel Support in Post Processing” to Linear color space only. sRGB gamma correction is applied to 8-bit targets.

.wav Audio

Audio export no longer requires rendering a second pass in real time, but Editor must be launched with the -deterministicaudio argument. If using Render (Remote) this argument can be omitted (it is automatically applied to the external process). This prevents any audio from being audible in the editor and may still produce audible artifacts between shots due to the time that passes to allow for motion blur and engine warm up frames.

To produce a transparent image you must delete or hide all opaque things in the scene (skybox, atmospheric fog) where you want to apply transparency.

Video containers (such as ProRes or Avid DNxHD) are not currently supported.

Rendering Options

Currently, there are two options available for rendering, Deferred Rendering and UI Renderer (Non-Composited).

Deferred Rendering produces the final image that you see in the viewport during editing. This is the only supported rendering output at this time.

UI Renderer (Non-Composited) is an option designed to help compensate for how UMG widgets are rendered. Because High Quality Media Export renders to an off-screen target/view, UMG widgets added to the viewport are not included in the render. This option renders the widgets into a separate .PNG or .EXR file that can be composited in post-production.

Settings Options

The Settings Options contains various rendering options and includes: Anti-aliasing, Burn In, Camera, Console Variables, Game Overrides, and High Resolution.

Anti-aliasing

Anti-aliasing controls the number of samples used to produce a final frame. There are two types of sampling that produce the final frame, Spatial and Temporal. Temporal sampling takes the time the camera shutter is open and slices the sample into corresponding time slices, and then uses engine motion blur to interpolate and uses Engine motion blur to interpolate between the smaller slices. For each Temporal Sample, there are N many renders accumulated, where N is determined by the Spatial Sample Count variable. This enables rotational motion blur as the time period normally represented by a single directional motion blur is now represented through many small directional motion blurs.

Any combination of Spatial and Temporal sampling produces the same pattern of offsets used for anti-aliasing. This means that it is generally more efficient to put your samples into Temporal Sampling instead of Spatial, since non-moving objects will receive the same anti-aliasing, and moving objects will be blurred, hiding the aliasing.

There are several other notable options within anti-aliasing, such as Override Anti-Aliasing, Render Warmup Count, and Engine Warmup Count.

Override Anti-Aliasing enables you to choose a different anti-aliasing method. You can select from None, MSAA (Forward rendering), FXAA, and Temporal AA (TAA).

While you can use MSAA and FXAA to experiment with anti-aliasing results, we do not recommend using either of these options at this time.

You can use Spatial and Temporal sampling with TAA to experiment with anti-aliasing results, though it is not recommended in most cases. If TAA is enabled then there is a limit on how many unique positions are chosen for anti-aliasing. This limit is defined by r.TemporalAASamples, which defaults to 8. If TAA is enabled and you have more than 8 samples, we recommend enabling Override Anti-Aliasing and set it to None to disable TAA.

Render Warmup Count controls the number of samples used to build the temporal history before rendering begins. When a camera cut or shot occurs, the temporal history used by TAA is cleared to prevent “ghosts” from the previous camera angle appearing. To allow anti-aliasing on the first frame this history must be rebuilt. All samples are taken at the same time without ticking the engine between them.

The Engine Warmup Count indicates the number of frames to run the engine for before rendering begins. These frames are not submitted to the GPU and are relatively fast to run. Typically, the warmup is useful for when you need time for cloth physics, particles, or other dynamics to settle into the right position before rendering starts.

Example of anti-aliasing and motion blur. Click to enlarge.

Burn In

This option determines whether to use the default burn in or a custom burn in. You can implement your own UMG Widget to use as a burn in that will be composited later on top of the final image.

Camera

The camera option changes the shutter and affects how motion blur is presented. A 0 means there is no motion blur and 360 is continuous motion blur throughout the frame. A 180 degree shutter is the default. Manual exposure is used for various effects such as high resolution, where it is necessary to turn off auto exposure.

Console Variables

This option enables you to add any console variables that you want executed when the render begins. This can be useful when trying to increase ray tracing sample counts or other quality settings that are too expensive for real time preview in Editor. Not all console commands will be respected (such as show flags) since they are executed in the context of the player’s viewport and not the offscreen viewport High Quality Media Export uses.

Game Overrides

This overrides several common game related settings, such as Game Mode and Cinematic Quality settings. This is useful if the game's normal mode displays UI elements or loading screens that you don't want captured.

High Resolution

The High Resolution settings allow you to use tiled renders to produce larger images than would be normally possible due to maximum texture sizes or memory limits on GPUs. Under High Resolution, you can adjust the Tile Count, Overlap Ratio, and Texture Sharpness Bias.

Tile Count is the number of tiles to break the image into while rendering. For example, a 7680x4320 Output Resolution with 4 tiles will render each tile at 1920x1080.

Visual example of how the tile count works. Click to enlarge.

The Overlap Ratio controls how much each tile overlaps with another. This means a value of 0.1 will cause a 10% overlap between the images that are blended together. This is particularly useful for Depth of Field, which normally produces a different result near the edges of images.

Texture Sharpness Bias biases the texture mipmapping to pick a higher resolution texture when it might normally not. A more negative number means the bias is more likely to select a higher detailed mipmap than it normally would, but if the value is too high, it can cause a grainy image. The bias has no effect on textures that are already displaying their highest quality mipmap.

At this time, High Resolution does not support temporal anti-aliasing and some rendering features that rely on screen space effects. This includes screen space reflections, convolution bloom, lens flares and motion blur on very fast-moving objects.

Ray Tracing

Unreal Engine makes real-time ray tracing possible through the use of denoising techniques that may rely on temporal history. When using high-resolution tiling or when disabling Temporal anti-aliasing, you may need to adjust the following console variables for better results:

  • r.AmbientOcclusion.Denoiser.TemporalAccumulation 0

  • r.GlobalIllumination.Denoiser.TemporalAccumulation 0

  • r.Reflections.Denoiser.TemporalAccumulation 0

  • r.Shadow.Denoiser.TemporalAccumulation 0

Setting these variables to 0 will help the denoiser converge better without temporal history. You may also want to consider disabling the following Denoisers entirely if you have a high enough sample count (64+):

  • r.AmbientOcclusion.Denoiser 0

  • r.DiffuseIndirect.Denoiser 0

  • r.Ray tracing.SkyLight.Denoiser 0

  • r.Reflections.Denoiser 0

  • r.Shadow.Denoiser 0

To adjust any of the denoiser settings, you can add them to the Console Variables so they only apply during a render.

ray tracing denoiser console variable settings

Adjusting Your Output Settings

The Output Setting controls most of the settings related to the sequence’s render. Under File Output settings, you can choose an output directory, file name format, and custom frame rates to render the sequence. The file name format field now shows you the possible format options and examples of their values. You can also adjust the Frame Number Offset, which adds a specified number to the frame numbers when writing to the disk during rendering. This allows you to offset issues regarding negative numbers for labeling frames, which confuses most software. So, instead of writing 2, 1, 0, 1 to the disk, you can instead write out 98, 99, 100, 101 by setting the Frame Number Offset to 100.

The Frames settings are also updated from Render Movie. You can now specify an Output Frame Step which will render every Nth frame. For the frames that are skipped, the game will still tick to make the results between rendering every frame and every Nth frame more consistent. Some image quality differences will be visible (due to a different temporal history), but this option should allow for draft-type renders if needed.

Under Misc, you can disable the Tone Curve. This makes it possible to output .exr files that store the linear data that comes from the Post Processing pipeline that will not be rescaled down to the [0-~1] range as is normally done for display.

settings panel

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