Search public documentation:


Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 Home > Particles & Effects > Particles Systems > VFX Optimization in UE3
UE3 Home > FX Artists > VFX Optimization in UE3

VFX Optimization in UE3


This document assumes prior knowledge of Cascade, the Material Editor, Kismet, and Matinee along with common effects related performance issues. There are multiple avenues to a performance issue solution, this document attempts to outline how Epic's effects team goes about solving these issues with the tools available in UE3.

VFX Optimization Topics


A stack of modules in cascade
A component of an emitter which determines behavior
Particle System
A combination of a single, or multiple emitters
Particle System Component
An instance of a particle system
Emitter Actor
The Actor placed in a scene which references the Particle System Component

Common Offenders For Poor Effects Performance

The amount of screen space the particles cover, and the number of instructions on those particles. Overdraw = Number of layers * number of pixels affected. (GPU)
Tick Time
The amount of time it takes the Game Thread to update all particle systems (Game Thread)
Draw Calls
The state setups to prepare for GPU (Render Thread)
Bounds Calculation
The amount of time it takes to update the bounds of an effect, which are used to determine visibility based on camera frustum. (are the effects bounds in view?)

There are many subsets to these primary issues, which generally contribute to the creation of the issue, and for each subset there is usually a tool we use to manage performance issues.

Core Systems For Effect Performance

The amount of time it takes to draw the pixels on the screen (overdraw)
Game Thread
The amount of time it takes to update the particle systems behavior (Tick Time)
Render Thread
The amount of time it takes to pack particle geometry and associated draw calls (Draw Calls)

Once you establish where your issue(s) lie, you can use the following to begin optimizing: