Virtual production is supported in Unreal Engine through the use of various cinematic tools, rendering features, and workflows. The Slay sample, built by Mold3D Studio, was created to demonstrate techniques, rendering features, and workflows that can be achieved when considering virtual production in Unreal Engine.
This document provides an overview of how to view the Slay sample, as well as the workflows and production techniques that were used to create it.
Prerequisites
-
The Slay sample content is a graphically intensive scene. It requires at least an Intel Core i9 Series processor and GeForce RTX 2080 Ti, or similar.
-
When opening the project or Level for the first time, there may be a long initial load time as numerous assets are loaded and compiled for the first time.
Setup
To set up a project with the Slay sample, follow these steps:
-
Open the Epic Games Launcher, click the Unreal Engine section, then open the Learn tab.
-
Scroll down the page to the Slay sample, then click Free to add the sample to your Vault.
-
Click Create Project and follow the on-screen instructions to download the Slay sample content and start a new project.
- Open your new project in the Unreal Editor.
You should now see the temple_P Level in your viewport.

Viewing the Slay Sequence
To view the Slay sequence, click the Cinematics button in the main toolbar and select TF_Edit.

This will open the Master Sequence for the Slay cinematic. You can see the multiple shots used to assemble the full sequence in this view.

Select the Camera button on the Shot Track to look through the Cameras for each shot, and click the Play button to play the sequence.

Quixel Megascan Assets
The Temple Level was built using a combination of unique assets and Quixel Megascan assets. These assets were used in Slay to provide background details, props, and foliage. Using Quixel Megascan assets in your project can save time and resources when creating large environments.

You can view some of the Quixel Megascan assets used in the Slay sample by navigating to the Quixel Megascan website. Some notable examples include:
-
Gravestones in the Temple courtyard.
-
Location or era-specific props placed around the Level.
-
Grass and other foliage placed in the gardens and other areas.
Shot-Based Workflow
The Slay sequence was created using Sequencer and its Shot-Based workflow. This was done so that each shot contains all necessary content for that shot only, rather than a larger single sequence. This setup allows for quick modifications to the sequence as a whole, as shots can be edited, trimmed, and re-arranged, just like in any non-linear editing software.
In the Master Sequence TF_Edit, you can see all the shots arranged in the Shot Track. Additionally there are Audio Tracks for playing audio that has been timed to the sequence edit, and a Fade Track for controlling the fade to and from black.

Double-click any shot to open and view its contents.
Level Visibility
The first shot of Slay is an exterior view of the Temple. Because of this unique angle, it was necessary to create a custom Landscape and assets for a Level that only is visible for the duration of Shot TF0010_02. The Level’s visibility is controlled by the Level Visibility Track, and can be seen in shot TF0010_02 (Shot 1)
With the Level Visibility Track placed inside the shot, it will evaluate only for the duration of the shot. In this case, the Level containing the lower-resolution Landscape for use when inside the Temple is hidden, and the Level containing higher-resolution Landscape and other assets is displayed instead.

You can manually preview the higher-resolution Landscape Level by navigating to the Levels panel, enabling Terrain_TF0010, and disabling Terrain.
Using Spawnables
Spawnables are Actors that are spawned and typically exist only for the duration of a single sequence. These are used extensively in several shots throughout the Slay sequence in order to address problems unique to each shot. Since each shot is its own sequence, spawnables will only exist for the duration of a shot, making it easier to manage these Actors.
An example of a spawnable Actor can be seen in Shot TF0020_01 (Shot 2). In this example, the original static mesh door is hidden and replaced with a spawnable Skeletal Mesh door, containing animation to match the character’s movement as she opens it. When the shot ends, the door is unspawned automatically.

Artist Collaboration
In the Slay sample, each shot is its own sequence, and therefore its own asset. Shots also contain Subscene Tracks which are their own sequence assets as well. Because of this division of assets, it is much simpler to enable multiple artists to work on a single sequence or shot at the same time, without file conflicts occurring. Subscenes can also be duplicated, enabling the same contents to be reused and shared across multiple instances.
In several shots, you can see Subscene Tracks for both Lighting and FX, which enable artists from these disciplines to work within these sequences instead of the main shot sequence. In this way, subscenes are not only useful for limiting file conflicts, but also for Sequencer organization.

You can double-click a Subscene section to open it and view its contents.

When a shot or subscene is opened from a parent sequence, it will be displayed within the context of the Master Sequence. This means that even though you are viewing only a single subscene, all tracks from the Master Sequence and current shot also remain visible. You can edit lights, add visual effects, and perform other actions with full visual context of the scene.

This context view can be enabled or disabled by toggling Evaluate Sub Sequences In Isolation from Sequencer’s Playback Menu.
Camera Animation
The Camera animation for Slay was created entirely in Sequencer. In some cases, additive camera animation is also used to enhance the camera movement. This is done using Camera Animation Sequences, which are a form of Template Sequence.

Double-clicking one of these Template Animations will open the corresponding template sequence, where you can view the animation that is being used.

Lighting and Materials
Lighting, Materials, and Effect usage plays a critical role in the Slay sample. Proper utilization of the Master Sequence and Shot ecosystem enables artists to more effectively light and apply material adjustments for each shot.
Lighting Workflows
As mentioned previously, lighting and other workflows can occur within Subscenes. Here, a typical lighting workflow would be to add your necessary Light Actors to the sequence as Spawnables. This is done so that the lights will only remain visible for the duration of the shot, and do not need to be manually turned on or off.

Other lighting techniques can be used to enhance your shots, such as using Light Blockers to block out certain areas of a scene from the main Level’s light. Afterward you can more directly control the lighting of a shot using your spawnable lights.
For example, in Shot TF0020_01 (Shot 2), if you disable the Camera button to stop piloting it, then navigate in the viewport to view the Temple entrance area, you should see a large Light Blocker being used. This is used so that a more controlled lighting environment can be created for the shot.

With the light blocker in place, other lights can be spawned to better enhance the lighting in this shot, such as the spotlight shining through the nearby lattice, which casts soft shadows on the door.

In some other cases, it may be necessary to hide certain meshes to let light pass through and shine on your Actors. In Shot TF0080_01, part of the Temple structure is hidden in order to let the sunlight cast on the Oni character.

Lighting Channels are also used in Slay to control how lights affect the environment and characters. In this case, spawnable lights are only affecting Channel 2. This same channel is then enabled on all Characters, causing them to be lit by these lights. The environment is not lit by these lights because those meshes only have Channel 0 enabled.

Material Workflows
If a Material is set up with parameters, you can reference these parameters in Sequencer to make overriding material parameter adjustments. In Slay, this was done to make minor adjustments to materials for specific shots. Similar to the previous lighting and shot-based workflows, these edits can be made on a per-shot basis without persisting to the next shot.
In Shot’s TF00110_01 Lighting Subsequence, you can see the Roughness and other parameters on Oni’s armor material are adjusted using Material Element Tracks. The Material Element number corresponds to the same Material Element ID on the mesh.

Clicking Add Parameter (+) will reveal a list of the available material parameters for that element. Select a parameter to add it as a track.

Render Settings
The Slay sample was created to be rendered as Final Pixel out, showcasing the high quality images that can be rendered with Unreal Engine. Because of this, there are several important parameters that are being set that increase the fidelity of the scene in both the viewport and when rendered using Movie Render Queue.
Post Process Volume
Post Processing is used in the scene to control Ray Tracing effects such as Global Illumination, Reflections, and Shadows. Color correction is also applied using Color Grading and Filmic Tonemapper properties.
To view the post process properties being used in Slay, select the Post Process Volume in the Level. It can be found by searching for it in the World Outliner.

You can preview the effects of the Post Process Volume by enabling or disabling the Enabled property in its details. Using post processing can help you in making your scenes appear more vibrant.


Viewport Optimization
As Slay is a graphically intense project, it became necessary to optimize the editor viewport experience to ensure smooth, reliable performance when working in Unreal Engine. This was done by setting certain Console Variables within the DefaultEngine.ini Configuration File.
Some examples of the variables being set are:
r.HairStrands.Enable 1.0
r.HairStrands.DeepShadow.Resolution 512.0
r.RayTracing.Shadows.AcceptFirstHit 1.0
r.RayTracing.SkyLight.ScreenPercentage 55.0
To view the other console variables in use, you can navigate to the Config folder located in the install location of the Slay project and open DefaultEngine.ini in a text editor.
Movie Render Queue Settings
The final picture for Slay is rendered using Unreal Engine’s Movie Render Queue tool. Movie Render Queue supports several features for producing high-quality renders, such as its temporal subsampling feature which is used to apply a high-quality radial motion blur effect. Additionally, Console Variables are used in Slay to increase graphical fidelity during the rendering process.
To open the Movie Render Queue window, click the Render button in Sequencer’s Toolbar.

The specific render settings used for Slay are saved as a Movie Pipeline Master Config Asset. To apply this preset to the render, click the Settings dropdown menu and select Slay_MovieRenderQueue_Preset.

To see the settings being used, click the Slay_MovieRenderQueue_Preset settings text. This will open the Render Settings window which contains the various output, quality, and other settings applied during the rendering process.

Anti-Aliasing
In order to reduce image noise, as well as to produce smoother edges and motion blur, Anti-Aliasing is used with Temporal Sample Count set to 19.

Console Variables
To increase graphical fidelity in several areas including Motion Blur, Subsurface Scattering, and Raytracing, the following Console Variables are used:

r.MotionBlurQuality 4.0
r.MotionBlurSeparable 1.0
r.DepthOfFieldQuality 4.0
r.ScreenPercentage 125.0
r.ViewDistanceScale 50.0
r.SSS.Quality 1.0
r.SSR.Quality 4.0
r.Shadow.DistanceScale 10.0
r.ShadowQuality 5.0
r.Shadow.RadiusThreshold 0.001
r.SkeletalMeshLODBias -4.0
r.RayTracing.GlobalIllumination.FireflySuppression 1.0
r.RayTracing.SkyLight.ScreenPercentage 100.0
r.RayTracing.AmbientOcclusion 1.0
r.DiffuseIndirect.Denoiser 1.0
r.RayTracing.Shadows.AcceptFirstHit 0.0
r.HairStrands.Enable 1.0
r.PathTracing.MaxBounces 2.0
r.TemporalAACurrentFrameWeight 0.3
r.RayTracing.GlobalIllumination.SamplesPerPixel 4.0
r.RayTracing.Reflections.MaxRoughness 1.0
r.RayTracing.GlobalIllumination.MaxBounces 2.0