Optimizing a project is not always a straightforward task and getting the maximum performance can be challenging because it can, at times, be where milliseconds matter most.
Getting Started Optimizing Your Project
There are multiple places you can start looking to improve performance by optimizing your project. This can start with improving content creation workflows, performing profiling captures to know where time is being spent to render each frame, and using built-in editor tools.
Unreal Engine already does a lot of heavy-lifting to optimize your project for performance without needing to set up anything. But, that doesn't mean that these built-in systems can't be adjusted to fit your project's needs more closely.
The guide below will help you get started in identifying common performance issues and where to look for them. You'll also learn about some of the tools available in the editor that you can use to optimize and improve performance.
Guidelines for Optimizing Rendering for Real-Time
Optimization and development best practices for real-time rendering.
Rendering Pipeline Optimization
The choice of some optimizations can directly affect the rendering pipeline that Unreal Engine uses. They can improve performance for the project in general or may be well-suited for a specific platform you want to develop for.
For example, Unreal Engine offers multiple rendering paths with a Deferred path (default) and a Forward renderer. For platforms like VR and Mobile, the Forward Renderer can improve performance but it does not support all rendering features of the engine.
In other cases, changes to the rendering pipeline can improve performance by rendering at a lower resolution and upscaling rather than rendering at native resolution, all while maintaining the same visual fidelity as the native resolution.
Forward Shading Renderer
Describes the advantages of using the Forward Shading Renderer.
Screen Percentage with Temporal Upscale
An overview of using Screen Percentage with Temporal Upsampling.
Dynamic Resolution
A method of dynamically adjusting the screen percentage to improve performance.
Configuration Files and Scalability Optimizations
Through console commands and configuration files, you can set properties that scales your project for the type of experience or platform your application is developed for.
Console commands are used to call and set specific properties. These can be used in configuration files and scalability settings to improve quality and performance of the rendered image for development of the project or for the final shipped product. Configuration files can store these callable scalability settings to automatically set them for the project, and they can even be platform-specific.
For example, a configuration file can be set up which has multiple scalability options for a user to select from to make the application run better on lower end hardware, or the configuration file can store presets that are designed for specific platforms to use that best optimize the application to run on it.
Configuration Files
Initial settings for configuring gameplay or engine behavior on startup.
Command-Line Arguments Reference
List of command-line arguments available for Unreal Engine.
Anti-Aliasing and Upscaling
A high level overview of the Anti Aliasing options available in Unreal Engine.
Ray Tracing Performance Guide
A selection of topics for improving performance of ray tracing features in your projects.
Hardware Ray Tracing Tips and Tricks
A collection of topics to aid with development of projects using hardware ray tracing features.
Scalability and The Developer
An overview of Scalability options and considerations for content creators, testers, programmers, and managers.
Scalability Reference
Scalability options, properties, and console variables.
Stat Commands
Console commands specific to displaying game statistics
Asset Optimization
Optimization of assets in your project starts with the workflows you choose when developing the project. Sometimes this can mean creating those assets in ways that work best with Unreal Engine's tools. Other times, the built-in editor tools can do this work for you.
For example, manually creating level of detail (LOD) meshes for every object can be a time-consuming process. Unreal Engine provides its own automatic tool to generate LODs for your meshes. You can even configure the properties for how LODs are generated manually or let it perform the task automatically.
The built-in tools and systems below can help you to improve performance during development of your project.
Nanite Virtualized Geometry Overview
Learn about Nanite's virtualized geometry system and how it achieves pixel scale detail and high object counts.
Visibility and Occlusion Culling
An overview of available visibility and occlusion culling methods.
Texture Streaming
System for loading and unloading textures into and out of memory during gameplay.
Creating and Using LODs
How To Create and Use LODs.
Setting Up Per-Platform LODs
How to set up LOD's on a per-platform basis.
Static Mesh Automatic LOD Generation
How To use the Automatic LOD Generation system in UE5.
Proxy Geometry Tool
The Proxy Geometry tool set was developed as a way to increase your Unreal Engine 4 (UE4) projects performance while keeping the visual quality of your project uneffected.
Debugging and Profiling Tools
Unreal Engine provides its own debugging and profiling tools and offers plugins for some external applications. These tools are useful for inspecting and identifying areas to improve performance.
For example, using the visualization modes of the Level Editor can visually identify costs of materials currently being rendered on screen. Profiling tools for the CPU and GPU can capture individual frames and breakdown millisecond cost of what is being rendered. With this type of information, you can see what is taking the longest to render in a single frame. By investigating high-cost line items, it may be possible to optimize those elements further.
The tools below will help you debug and profile elements of your project to look for performance optimization opportunities.
Using RenderDoc with Unreal Engine
RenderDoc is a standalone open-source graphics debugger that you can use to perform single-frame captures and inspect them.
Unreal Insights
Profile your project's performance with Unreal Insights.
GPUDump Viewer Tool
A multi-platform command that dumps intermediary RDG textures and buffers to disk for investigating and debugging rendering issues.
Render Resource Viewer
A tool to assist in identifying resources and their assets allocated to GPU memory.
Primitive Debugger
This is a runtime-only tool to view information about primitives being rendered in the game client.
Other Topics
Dealing with a GPU Crash
An overview of investigating, resolving, and reporting GPU Crashes in Unreal Engine.