Alpha Point UE5 Technical Demo Notes

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 the key points below.

Alpha Point UE5 Technical Demo Notes

The Coalition created a technical demo to evaluate the new features found within Unreal Engine 5. They detail out their findings in their Game Developers Conference (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 the key points below.

Note: This information is 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

  • Most of the 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

Decals

  • 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
  • Benefits
    • 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
  • A 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 materials for consistency and control
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 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
  • Workaround
    • 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

Note: 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

Lumen

Quality

  • 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
      • This leads to screen dependent indirect results if the parameter is too high
      • Lumen sometimes recalculates on camera cuts

Performance

  • 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, Lumens 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
Pass 1.0 Quality 0.25 Quality TC Custom Engine High
SSGISceneColorReduction 0.118 0.12 0.119 0.112
LumenScreenProbeGather 3.77 2.722 2 1.759
LumenReflections 0.59 0.487 0.49 0.217
Diffuse Indirect Composite 0.22 0.212 0.222 0.219
LumenScreenLighting 0.815 0.77 0.737 0.625
Update Lumen 0.12 0.12 0.12 0.12

Reflections

  • 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 the size on screen and roughness of the material
    • Roughness 0 is the fastest
    • Half-roughness is the slowest
    • Roughness 1 is almost as slow as half-rough
    • The average cost in the 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

Quality

  • 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

Performance

  • 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

Performance

  • Nanite base performance is fairly consistent regardless of what's on-screen
Name Milliseconds
Nanite: CullRasterize 0.871
Nanite: EmitDepthTargets 0.144
Nanite: Base Pass 1.01
Nanite: Readback 0.07
  • 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 for insects was 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 most 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 features 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 are too low to maintain performance parity with Series X
  • Virtual Shadow Maps is quite slow potentially due to the 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
  • The 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 are 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

Conclusion

  • 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

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