Skip to content

Verification checklist

This topic covers some recommended practice information for those working with RenderStream and Unreal Engine.

General

  • The ValidationFramework plugin is enabled to check for any potential nDisplay / RenderStream issues.
    • Supported Versions
    • UE4.27+: Supported v1.0.1 Only: ✅
    • UE5.0: Testing: ❗
    • UE5.1: Supported v1.1.0+: ✅
    • UE5.2: Supported v1.2.0+: ✅
    • UE5.3: Supported v1.3.0+: ✅
  • Verify all required plugins are in the project directory and enabled.

Channel Defintions

RenderStreamChannelDefinitions have been added to each Cine Camera Actor in the specific scene

Frontplate

  • Frontplate cameras are set to Default Visibility Hidden.
  • Al components to be added to frontplate are added to Force Visible section.
  • Frontplate cameras have the following disabled (unchecked)
    • Fog
    • Atmosphere

Preparation for Source Control Push

Before a push to source control, and especially after making any changes, the Unreal scene should be tested by launching RenderStream via d3. Check for frame drops:

  • During operator camera movements
  • When triggering exposed parameters
  • Test ALL exposed parameters.

Trigger via a RenderStream layer inside d3 to ensure nDisplay / RenderStream is handling these parameters as the artists intended.

Test ALL frontplate objects to ensure they are rendering as the artist intended.

Sometimes these objects need to be built as Actor Blueprints in order to attach specific lighting to them and make sure the object maintains correct lighting conditions on both the backplate and frontplate. See below for example.

Step through all Viewmodes to check for any glaring issues.

For more information on Viewmodes, see Epic’s Documentation .

The Viewmodes most relevant to optimization include:

  • Light Complexity
  • Lightmap Density
  • Stationary Light Overlap
  • Shader Complexity
  • Stationary Light Overlap
  • Shader Complexity & Quads
  • Quad Overdraw

If any issues persist, use Unreal Insights to diagnose them.

Documentation on Unreal Insights (UE4.26) is available from Epic here.

Derived Data Cache

For information about configuring DDC with Disguise see the DDC page.

DDC PakS

If you download Unreal Engine from the Epic Games Store, the engine will come with a DDC Pak (.ddp). The DDC Pak contains derived data for all engine content, so you can start working without compiling shaders and so on. Similarly, some samples are shipped with a DDC Pak for the same reason.

  • Engine DDC Pak

For Example: EngineDir/DerivedDataCache/Compressed.ddp

  • Project DDC Pak

For Example: ProjectDir/DerivedDataCache/Compressed.ddp

Building a project

Considerations while building a project.

An example of an Actor Blueprint with lighting attached:

Actor Blueprint with Lighting attached

Optimization

Optimization is a complex subject influenced by multiple variables such as (but not limited to):

Mobility status for mesh actors and lighting actors

Render settings

Complexity of materials

Amount of Parent Materials vs. Material Instances used.

Complexity of meshes (and for UE5 - whether they are Nanite meshes or not)

Complexity of lighting actors / how many lighting actors are in the scene.

Optimization Recommendations

Use Oodle Texture compression.

Use Nanite whenever possible, except for trees, masked meshes, or opaque meshes.

Do not use Lumen yet.[August 2022: Epic’s official advisory is that it is not yet acceptable for real-time production use in Film / TV / Media].

Screen-Space Global Illumination should be fine (change this setting under Project Settings > Global Illumination > Dynamic Global Illumination Method).

When using Post Processing Volumes, change this setting by ticking the check box under the PostProcessingVolume Actor under Global Illumination, and changing to Screen Space.

Consider GPU baking as many lights as possible and avoid using Ray Tracing.

Use as few lights as possible.

If you must use a Rect Light, don’t use too many and make sure they’re baked.

Turn off shadows under individual Light Actors when they’re not needed.

Reflection captures don’t need a resolution higher than 512.

Learn about Temporal Super Resolution and lower your screen percentage for when using it.

If you’re using TAA, use Temporal Upsampling.

Here are some amazing tools to use DURING dev:

UE stat commands

A list of all stats commands for:-

UE 5.1: https://docs.unrealengine.com/5.1/en-US/stat-commands-in-unreal-engine/

UE 5.0: https://docs.unrealengine.com/5.0/en-US/stat-commands-in-unreal-engine/

Optimise the amount of draw calls

“UE[4] calculates scene visibility to cull objects that will not appear in the final image of the frame. However, if the post-culled scene still > > contains thousands of objects, then draw calls can become a performance issue. Even if we render meshes with low polygon count, if there are too many draw calls, it can become the primary performance bottleneck because of the CPU side cost associated with setting up each draw call for the GPU. Both UE4 and the GPU driver do work per draw call.

However, reducing draw calls is a balancing act. If you decide to reduce draw calls by using few larger meshes instead of many small ones, you lose the culling granularity that you get from smaller models.”

  • Consider combining actors for less draw calls.
  • One mesh with 50 mat IDs is better than 50 meshes with one mat ID each (51 vs 100).
  • Use the console variable editor.

General Onsite Advice

  • If the player can’t see an object, don’t bother rendering it.

  • Trees can be the biggest challenge especially when filling a scene with them. They have an impact on draw calls. High poly assets with multiple materials slots are problematic.

  • Using a visual LOD system can be one solution with better assets closer to the camera, and lower quality ones behind. While a treeline texture plane is useful for the background.

  • Also, turning off all shadows and systematically turning them back on can create the desired effect and a lighter weight project. To compensate for highlights appearing flat as a result, the light function on the Directional Light can be altered to help fake slight foliage shadows.

  • Replacing the Atmospheric Sky and Volumetric Clouds with a sphere that has an unlit shader is a good solution when the time of day does not change in a scene.

  • Volumetric fog can be improved by:-

    • Tweaking the View Distance space

    • Using the following console commands:

      r.VolumetricFoc.GridPixelSize

      r.VolumetricFog.DepthDistributionScale

      r.VolumetricFog.GridSizeZ