-
-
Notifications
You must be signed in to change notification settings - Fork 99
Performance Optimization Guidelines
Graphics Card Memory is mostly limited across multiple Target Devices, so it makes sense using the CPU Memory, there are some engines out there which does work mostly on the GPU but for Unreal Engine this is not the case, a lot of it like Animations etc. are still using massively the CPU.
It also makes no sense to cache most of the Data, because in the end on a complicated system the amount of memory can be a bottleneck, sometimes generating the data at runtime is much faster.
Here some performance optimization guidelines:
- Increase
Time Between Animation Library Framesto the most acceptable value - Enable
Use Distance Updatingand play around with theDistance Updating Ratio - Increase
Auto Lod Ratio - Disable Animations for High Distance LODs, do you really need to Animate LOD 14 which is 800 Meters away from the camera?
- Solve the Animations just one time per frame when having just one Update Group
- Use Multiple Update Groups, Updated Groups, when using correctly are the most powerful optimization technique in TS
- Multi-Thread the controller; 95% of all functions are Thread safe
- Use C++ Instead of BP
- Use max 30–75 bones on the Mesh
- Increase
Time Between Animation Library Framesto the most acceptable value - Decrease
Highest Detail Draw Distance - Increase
Auto Lod Ratio - Disable Animations for High Distance LODs, do you really need to Animate LOD 14 which is 800 Meters away from the camera?
- Make sure the Mesh has enough LODs, there is no performance downside using too many LODs, it may look wrong having just a quad on the last LOD
- In the Tweak Section, make sure the Textures having good dimensions
- Use max 30–75 bones on the Mesh
- Make sure the Material you use is optimized, because the Vertex Skinning of the Vertices is a heavy operation
- Use less geometry for the mesh, you can exclude LODs from the system in the Mesh Asset, most of the Time LOD 2 or 3 is good enough for the 1st LOD
Having 2 Material on the Mesh meaning, there are 2 Mesh Sections under the hood:
- One Archetype with 1 Mesh Section is generating 1 Draw call, with 4 Mesh Sections, 4 Draw Calls
- Individual Instances don't create draw calls
- Keep the Instances count high but keep the Archetype count low
- Instances create CPU and GPU Memory
- More Animations Create More Memory on the CPU and GPU
- Increase
Time Between Animation Library Framesto the most acceptable value to increase FPS
When Solving the Meshes in code, there is an option to Collect Garbage: Turbo Sequence is Allocating Animation Data which gets pushed every frame into the GPU, this data will increase to async load the Animation. On many animations or on meshes with many bones it makes sense to collect garbage, when the amount of Bones are smaller of the Mesh and/or there are not many animations used, not collecting garbage can be faster.