Engine Engine 5 Early Access Notes

My compiled notes of the new features within Unreal Engine 5 Early Access 2.

Engine Engine 5 Early Access Notes

My compiled notes of the new features within Unreal Engine 5 Early Access 2. These notes primarily outline  —

  • How to implement the feature
  • What are the benefits of the feature
  • What are the current limitations of the feature

Nanite

Nanite is the new virtualized geometry system powering Unreal Engine 5. It uses a new static mesh format geared towards explosively increasing the geometry complexity limit of Unreal Engine. It smartly compresses the Static Meshes, streams it's information directly from the hard drive, and dynamically adjusts it's geometry on the triangular level.

Everything that can be Nanite, should be Nanite

What to know

  • Currently only supports Opaque materials
  • Do not use on detailed/thin static meshes
    • Examples: Foliage, trees, planes, etc
  • Each mesh will need to have Nanite manually enabled
  • Level of Detail (LOD) is automatically handled
  • A fallback LOD can be used to maintain detail at a distance

How to enable

Method 1

  1. Right-click the Static Mesh in the Content Browser to open the action menu
  2. Navigate to the Nanite option in the action menu
  3. Click Enable

Method 2

  1. Open the Static Mesh details windows
    • Double Click the Static Mesh asset in the Content Browser
    • Right-click the Static Mesh asset → Click Edit
  2. Navigate to the Details Panel
    • Usually located on the right side of the Static Mesh Details window
  3. Toggle on the Enabled checkbox

What is not supported

  • Translucent Materials
  • Masked Materials
  • Deforming Meshes (Such as Splines)
  • Skeletal Meshes
  • Pixel Depth Offset
  • Vertex Colors
  • World Position Offset
  • Aggregate Geometry [Static Meshes with fine/thin details]

Resources

Nanite Virtualized Geometry
Overview of Unreal Engine 5’s virtualized geometry system to achieve pixel scale detail and high object counts.

Lumen

What to know

  • Static lighting will NOT work
    • Static light contribution is disabled
    • Static lights will NOT emit Lumen lighting
    • It's highly ideal to disable static lighting completely in the project settings
      • Doing so allows for Material Ambient Occlusion and Material Bent Normals to work with Lumen Global Illumination in addition to removing static lighting overhead.
  • Emissive materials emit Lumen lighting
    • Uses screen space calculations
    • Still need to utilize light actors for proper lighting
    • Doesn't incur additional performance costs
  • Lumen utilizes the Mesh Distance Fields for it's lighting calculations
  • Lumen uses a lot of caches to achieve it's real-time performance
    • Local light changes quickly
    • Global light changes can take a few seconds to propagate
  • Set Software Ray Tracing Mode to Global Tracing to save on performance cost
  • Set Software Ray Tracing Mode to Detail Tracing for higher quality rendering at a higher performance cost

Post Process Settings

  • Set Global Illumination Method to Lumen
  • Increase Global Illumination Final Gather Quality to increase quality and reduce noise
    • Will increase GPU costs
  • Set Reflections Method to Lumen
  • Increase Reflection Quality to increase the quality of Lumen reflections on surfaces and reduce noise
    • Will increase GPU costs

Supports

  • All light types
    • Directional
    • Sky
    • Point
    • Spot
    • Rect
  • Light Functions (Direction Light only)
  • Material Bent Normals (If Allow Static Lighting is disabled in the Project Settings)
    • Apply the CVAR r.GBufferDiffuseSampleOcclusion=1 and restart the editor to fully enable
  • Material Ambient Occlusion (If Allow Static Lighting is disabled in the Project Settings)
  • Reflections
    • Full range of material roughness and specular values
    • Diffuse Global Illumination
    • Shadowed Skylight
    • Clear-Coat Materials

Replaces

  • Ray Tracing
  • Screen-Space Global Illumination (SSGI)
  • Distance Field Ambient Occlusion (DFAO)
  • Screen Space Reflections

How to enable

Project Settings → Rendering → Set Dynamic Global Illumination Method to Lumen

Project Settings → Rendering → Set Reflection Method to Lumen

Project Settings → Rendering → Generate Mesh Distance Fields

Resources

Lumen Global Illumination and Reflections
A high level overview of Lumen’s dynamic global illumination and reflections features.

Virtual Shadow Maps

A new shadow map method that aims to deliver film-quality shadows to Unreal.

What to know

  • Significantly increases shadow resolution on Nanite geometry

How to enable

Project Settings → Rendering → Set Shadow Map Method to Virtual Shadow Maps

Resources

Virtual Shadow Maps
Overview of Unreal Engine 5’s high resolution shadowing designed with film-quality assets and large dynamically lit open worlds in mind.

Virtual Textures

How to enable

Project Settings → Rendering → Enable Virtual Texture Support

Resources

Virtual Shadow Maps
Overview of Unreal Engine 5’s high resolution shadowing designed with film-quality assets and large dynamically lit open worlds in mind.

Quixel Megascans

What to know

  • Now natively built into the engine
  • Can drag & drop assets directly into the viewport

Resources

Quixel Bridge Plugin for Unreal Engine
Quixel Bridge lets you access the Megascans library to bring environments, materials, and metahumans into Unreal Engine.
Quixel Bridge - Manage 3D content and export with one click
Quixel Bridge provides 3D asset management and saves time with one click integrations to your preferred tools, for free.

World Partition

What to know

  • Massive Source Control & Collaboration Improvements
    • Actors are checked out rather than the level
    • Actors hold the edit metadata
    • One file per actor system
  • Automatically loads and unloads cells based on stream sources
    • i.e: Player character
  • All cells are initially unloaded
  • Will automatically grow additional cells automatically
    • Might require you to save the level before it updates
  • Nanite meshes will be dynamically culled
  • Non-nanite meshes will be loaded and unloaded
  • Actors have a World Partition settings category in their Details Panel
    • Can adjust which world partition cell an actor is placed in
  • Maximize effectiveness by using HLOD's and Data Layers

World Partition Window

Window → World Partition

  • 4 partition cells are generated by default
  • To manually load/unload cells — Select the cells → Right Click → Load/Unload Selected Cells

World Partition Settings

  • Can adjust cell size and loading range from the World Partition Setup

World Settings → World Partition Setup

How to enable

  1. Project Settings → World Partition → Enable World Partition
  2. Create a new level
  3. World Settings → Enable World Partition

Note: Might require an Engine restart in some cases

Useful Commands

  • wp.Runtime.ToggleDrawRuntimeHash2D

Resources

World Partition
An overview and how to for the World Partition system.

World Partition - HLOD

HLODs are extremely useful in conjunction with the World Partition system to group distance or non-interactive actors together. For example, distance mountains, trees, cliffs, etc.

Note: Currently doesn't support Landscapes and Water Components

Creating a new HLOD

Right Click in Content Browser -> Miscellaneous -> HLOD Layer

Applying an HLOD to an actor

Select actor(s) in Viewport -> Details Panel -> HLOD

Resources

World Partition - Hierarchical Level of Detail
How to use Hierarchical Levels of Detail in your World Partition world.

World Partition - Data Layers

Utilize Data Layers to organize and dynamically load and unload groups of actors.

Creating Data Layers

You can create Data Layers from the Data Layers window.

  1. Open Data Layers Window — Window -> Data Layers
  2. Right-Click inside of the Data Layers Window and choose one of the available options

Adding actors to a Data Layer

You can add Actors to a Data Layer from an Actors Details Panel

Select Actor in Viewport -> Details Panel -> Data Layers

Resources

World Partition - Data Layers
An introduction to Data Layers and how they can be used in your projects.

One file per actor

  • This is automatically enabled when using World Partition
  • Can be enabled when not using the World Partition System
    • All Actors: World Settings -> World -> Enable Use External Actors
    • Specific Actors: Select Static Mesh in Viewport -> Packaging Mode -> Set to External

Resources

One File Per Actor
An introduction to the One File Per Actor System and how it can be used in your projects

Mega Assemblies

  • Accepts most actor types
  • Known as the PackedLevelInstance class

Resources

If you like the content and it has helped you, please consider supporting the development of the Unreal Directive.