"Alpha Point" UE5 Technical Demo

"Alpha Point" UE5 Technical Demo

Jul 26, 2021 6:49 PM

The Coalition created a technical demo to evaluation the new features found within Unreal Engine 5. They detail out their findings with their GDC 2021 talk. It's a great watch, highly recommended! However, if you don't have the time to watch it, I've written out of the key points below.


Information as of Unreal Engine 5 Early Access Preview 2

High Polygon Modeling

  • IMPORTANT: Nanite currently doesn't support β€”-
    • Translucency
    • Masked Materials
    • Spline Tools
    • Pixel Depth Offset
    • Vertex Colors
    • World Position Offset
  • The ideal target triangle count was between 300k-500k
    • Primarily a DDC issue with regards to slow-down, UV editing, and importing/re-importing time
  • Texture painting would slow down within Substance Painter considerably when painting 8K textures. Preferred 4k textures.
  • Currently ideal to utilize Nanite with opaque materials
  • Nanite should scale well as DDC tools improve

Vines and Foliage

  • Majority of foliage were non-nanite meshes due to no translucency material support
  • Nanite is not the best for extremely detailed opaque foliage assets, such as a tree
  • Vines were generated using Blenders Icy app and are using Nanite


  • Utilized parallax occlusion decals to fix seams and add in additional detail
  • Have a strong decal workflow due to Nanite assets having material painting limitations
  • Benifits
    • Tinting
    • Detail Maps
    • Macro Maps
    • Parallax Occlusion Mapping

Base Material Setup

  • Allows up to 4 material layers
  • Ability to change blend mode per layer
  • Everything is wrapped into a Material Function
  • Clear naming conventions and guidelines
  • Mixture of these functions β€”-
    • Per-Layer
    • Micro Detail
    • Macro Detail

Texture Pipeline

  • Created a new TCTextureToolkit pipeline
  • Allows them to easily manage textures and materials using Substance, Megascans, and Unreal
  • Automatically sets up texture references and metadata
  • Interfaces with Perforce automatically
  • Exports to Unreal with appropriate channel packing setup
    • Packing Normal with Roughness and Metalness like Gears 5
  • Allows auto-importing into Unreal

Texture Generation

  • Assets shared base rock color/normal/roughness maps for the most part
  • Baked out unique Ambient Occlusion, Cavity, and Curvature maps per asset using Marmoset Toolbag 4
    • Bake would happen on megascans high poly asset
  • Textures created in Substance, Photoshop, or Mixer
  • Always replaced Megascans materials with their own materials for consistency and control
Left: Their Materials | Right: Megascans Material
Left: Their Materials | Right: Megascans Material

Detail Mapping

  • Added Detail Normal, Detail Diffuse, and Detail Roughness in a single BC7 texture
    • BC7 Texture: Three-channel color (4-7 bits per channel, alpha (0-8 bits) channel optional
  • Utilizes a color curve in the base material in order to give grayscale diffuse maps colors when needed
  • Added detail map masking to allow multiple detail map sets per-material
    • Warning: Can get expensive if excessively done
    • Aiming to implement texture array support, but currently blocked by mip-generation

Paintable Volume Fog

  • Brushes can be arbitrary mesh
    • Basically, any mesh can be utilized as a brush to paint the fog
  • Layering system to allow stacking and overlapping of brushes
  • Fog shadows itself and the ground

Layered Materials

  • Can no longer vertex paint material layers due to extremely high vertex counts
    • And Nanite doesn't support it
  • Relied on the following techniques instead β€”-
    • Material up-vector
    • Decals
    • Placed debris
    • Kit-bashing
    • Blending non-nanite meshes using Pixel Depth Offset

Volume Material Layer Painting

  • WIP
  • Leverages the paintable volumetric fog approach of intersecting height maps
  • Allows artists to paint material layers in-editor
  • Painting in world scape, spanning across mesh boundaries
  • Can create many brushes on separate layers to get desired results
  • Performance concerns
    • Adds roughly 30% to GPU cost
    • ALU bound

Virtual Textures

  • Most textures were 4k
    • 8k didn't make a noticeable difference
  • All texture samplers are Streaming Virtual Textures
    • Allows the use of higher resolution textures without blowing texture budgets due to textures being split into tiles
  • More expensive than traditional textures
    • Two texture fetches + some math
    • Reused UV's when sampling textures to reduce cost
  • Performance Cost
    • GPU Xbox Series X: VirtualTextureFeedbackCopy: 0.032ms
    • CPU Xbox Series X: 0.205ms

Texture Memory

  • Virtual Texturing
    • Total VT Physical Memory: 379 MB
    • File Cache Size: 128MB
    • Total CPU Upload Memory: 9 MB
    • Total Disk Size: 1.5 GB
    • Streaming Texture Pool: 500.68 MB
  • Streaming Pool
    • Pool Size: 1 GB (should come down in size)
    • Required Pool: 131.25 MB
    • Non-streaming Mips: 430.14 MB

Tiling Grounds and Walls Issues

  • Geometry was too dense to make large atomic mesh
    • Takes up a large amount of memory
    • Very large triangle count β€” 20~ million triangles per room
  • Work arround
    • Tile a mesh using a blueprint
    • Layer in detail

Tiling Mesh Blueprint

  • A blueprint that allows a mesh to tile
  • Treats the mesh like a tiling height map
  • Utilized to also spawn non-nanite liquid and dirt meshes
    • Allows World Position Offset painting using Vertex Colors
    • Allows Pixel Depth Offset to allow blending
    • Replaces Vertex Color Painting
  • Ability to spawn mesh debris
    • Saves artists time by removing the need to paint the ground

Epic has mentioned they intend to support some form of displacement map with Nanite in the future. This would help resolve the tiling mesh issue.

Temporal Super Resolution

  • Amazing results!
  • Performance
    • 2.7ms from 1440p to 4k
    • 2.23ms from 1080p to 4k
  • Noticeable improvements around grass blades in demo
  • Overall much charger image than old up-scaler
  • Epic recommends targeting 1080p and utilizing TSR to upscale



  • The demo uses all real-time lighting
    • Real-time virtual shadow maps
    • Lumen Indirect
    • Lumen Reflections
  • Lumen visual quality is overall quite strong
  • HUGE quality of life improvements for artists with no need for lightmap UV's, level assets, or light bakes to manage
  • Some visual pain points β€”-
    • Semi-rough reflections can appear a noisy
    • The Lumen Screen Trace pass does not respect the Indirect Lighting Intensity value
      • Leads to screen dependent indirect results if the parameter is too high
      • Lumen sometimes recalculates on camera cuts


  • The Coalition (TC) Custom Settings
    • Set Lumen Global Illumination and Reflections to 0.25
    • Set CVars
      • r.Lumen.TranslucencyVolume.GridPixelSize 64
      • r.Lumen.ScreenProbeGather.DownSampleFactor 64
      • r.Lumen.ScreenProbeGather.ScreenSpaceBentNormal 0
  • Overall, Lumen performance still has a ways to go.
  • Epic is aware of the performance issues and will be focusing more on Lumen 60fps performance in the future
  • Lowering Lumen Reflection Quality to 0.25 is pretty safe
  • Lowering Lumen Global Illumination Quality below 1 can introduce subtle temporal flickering or ghosting issues

Lumen Performance Details - Xbox Series X at 1080P

Pass1.0 Quality0.25 QualityTC CustomEngine High
Diffuse Indirect Composite
Update Lumen


  • Visually fantastic!
  • Micro self reflections prevent specular leaking.
    • No more need for bend normal textures
  • Reflects Signed Distance Field mesh representation or triangle representation of scene using Hardware Raytracing
  • Uses a screen trace for additional details
  • No need to place reflection captures
  • Variable Cost
    • Depends on size on screen and roughness of the material
    • Roughness 0 is fastest
    • Half-roughness is the slowest
    • Roughness 1 is almost as slow as half-rough
    • Average cost in scene is 0.6ms
  • Lumen Reflection cost varies depending on how many pixels on the screen are reflecting and their roughness
  • Lumen Reflection Quality of 0.25 appears to be a half res buffer

Virtual Shadow Maps


  • Key to get the appropriate amount of shadow resolution on Nanite meshes
    • Contact shadows are an inferior alternative
  • Requires Nanite asset
    • Some early support for non-nanite assets exist
  • Creates a RayTrace-Like soft shadow falloff


  • Initially had concerning results
    • Virtual Shadow Maps were taking 6.3ms @ 1080p
  • During performance evaluationβ€”-
    • Found that a lot of large ow poly ground meshes were being included as shadow casters
    • After disabling those assets, cost went down to 3ms @ 1080p
  • Takeaway β€”- The size of the shadow caster may affect performance more than vert count of the shadow caster.



  • Nanite base performance is fairly consistent regardless of what's on screen

1080P on Xbox Series X

  • Did a test of staring at a simple wall and Nanite was 2.0ms
  • Non-Nanite base pass and pre-pass: 1.185ms
    • Vegetation
    • Blending Pixel Depth Offset water and sand
    • Character
  • Material complexity and variety is probably the best way to control Nanite cost
    • Requires additional testing
  • Anything that can be Nanite should be Nanite

Niagara Insects

  • Insects generated in Niagara
  • GPU based and collides/spawns with Signed Distance Field's
  • 6655 instructions
  • 500~ particles per emitter
  • Cost: 0.134ms on Xbox Series X for GPU Simulation
  • Base Pass cost of insects is 0.2ms

Custom VFX Buffer

  • Adds a new G-Bugger to the base pass
  • Materials can write custom VFX data to the GBuffer and custom it in Niagara
  • Niagara data-interfaces so the majority of the code can be contained in a plug-in

Convolution Bloom on Console

  • Originally added as a non-gaming in UE 4.16
    • Non-gaming due to being expensive
  • Currently rendering it at a quarter resolution
  • Renders after the upscale from TSR
  • Required code changes to expose to Xbox
    • By default, it's not exposed to consoles in general

Performance UI Widget

  • Created a custom FPS Widget UI
  • Allows instantaneous FPS health information
  • Real-time reports rather than after the fact
  • Real-time % @ 30/45/60
  • Averages FPS and MS
  • Future consideration
    • Ability to reset averages
    • Incorporate Character Pawn and VFX stats

Memory Overview

  • Static Mesh Total Memory: 61 MB (44 unique objects)
  • Nanite Streaming Pool Size: 512 MB (Default)
  • Nanite Total: 1077.62 MB

Xbox Series X Performance

  • Target 60 FPS at 50% or higher input resolution with Temporal Super Resolution to 4k
  • With all next-gen feature enabled, Lumen at high quality and convolution bloom
    • Average FPS: 46 FPS
    • Average Milliseconds: 21ms
    • GPU: 21ms
    • Draw Thread: 13ms still // 19ms while moving camera (Develop Mode)
    • Game Thread: 7.5ms
  • Most expensive systems β€”-
    • Lumen
    • Virtual Shadow Maps
    • Temporal Super Resolution
    • Nanite

Xbox Series S Performance

  • Temporal Super Resolution is very helpful on the Xbox Series S
    • Need to manage temporal flickering at lower resolutions
  • Current internal resolutions too low to maintain performance parity with Series X
  • Virtual Shadow Maps quite slow potentially due to HZB issue
  • CPU is of no concern
  • Future GPU optimizations required
  • Epic promises that GPU will get faster

Alpha-Point Summary

  • UE5 is stable and is viable for production.
  • Works great on Xbox Series X/S
  • Love the consistent predictable cost of nanite regardless of scene load β€” game changer.
    • The largest area of workflow-change for content creators with UE5
  • Largest bottleneck for building Nanite assets with millions of triangles are DDC tool workflows
  • Lumen produces some beautiful results in real-time.
    • More work to be done by Epic on improving performance
  • Virtual Shadow Maps produce amazing Ray-trace-like shadows.
    • Performance concerns with lots of large shadow casters and multiple light sources
  • Content creator workflows as important as nailing the technology
  • Building assets for Nanite will be time consuming initially β€” but there is a lot of room for workflow acceleration and automation
  • Need roughly 33% GPU optimization with UE5 features to land a solid 60fps with dynamic resolution
  • UE5 truly unlocks the artists potential and allows us to realize amazingly detailed worlds

Character Creation

  • Leveraged MetaHumans for teeth and eye creation
  • Leveraged MetaHumans face topology
    • Can export from Quixel Bridge to Maya
  • Leveraged MetaHumans materials
  • For precise control, it's best to model face in a DDC
  • Leveraged multiple detail maps and cloth shaders
  • Sculpted in Z-brush
  • Substance Painter custom pipeline to Unreal
  • 4k Texture Maps from Substance Source and Megascans
  • Maya XGen Grooming and Unreal Integration Alembic for the groom assets


  • Overall, the sum of all the additional visual systems together combined with the power of Xbox Series X/S creates a noticeable visual leap from previous gen games
  • Embracing hybrid workflows yields the best results for achieving quality β€”
    • Megascans (mix and match geometry and materials with DDC/Substance)
    • MetaHumans (used to generate certain components of the head and use base materials)
  • Temporal Super Resolution produces amazing results even at lower resolutions β€” allowing us (The Coalition) to fully saturate the Xbox Series GPU's and leverage the full UE5 feature set
  • The current generation of console combined with UE5 will fully unlock our (The Coalition) potential
  • UE5 games on Xbox Series X/S will look incredible