Unreal Engine 5 Early Access Notes

Unreal Engine 5 Early Access Notes

Created
Jul 29, 2021 8:04 AM
Tags
UE5Notes

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

  • How to implement the feature
  • What are the benifits of the feature
  • What are the limitations of the feature

This article will be updated periodically.

icon

If you end up finding this article useful — spread the word!

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.

icon

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
    1. Double Click the Static Mesh asset in the Content Browser
    2. Right click the Static Mesh asset → Click Edit
  2. Navigate to the Details Panel
    1. 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

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 cost
  • 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 quality of Lumen reflections on surfaces and reduce noise
    • Will increase GPU costs
image

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

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 Textures

How to enable

Project Settings → Rendering → Enable Virtual Texture Support

Resources

Quixel Megascans

What to know

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

Resources

World Partition

What to know

  • Massive Source Control & Collaboration Improvements
    • Actors are checked out rather than the level
    • Actors hold the edit meta data
    • 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

image

How to enable

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

icon

Might require an Engine restart in some cases

Useful Commands

  • wp.Runtime.ToggleDrawRuntimeHash2D

Resources

World Partition - HLOD

HLOD's 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.

icon

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

image

Resources

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

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

Mega Assemblies

  • Accepts most actor types

Resources

icon

Thank you for reading!

My goal with Unreal Directive is to provide an extremely useful and easy to understand resource for Unreal Engine developers across all skill levels. Therefore, if you have found this article useful, spread the word! Please share it with your developer friends and peers. If you have a suggestion, or have come across an issue with the article, please message me via Twitter or via email.

Thank you,