Geometry Best Practices For Unreal Engine
Geometry Best Practices For Unreal Engine
Geometry Best Practices For Unreal Engine
Unreal Engine
Geometry best practices for Unreal Engine
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Release information
Document history
Issue Date Confidentiality Change
01 October 7, 2021 Non-confidential First issue
Your access to the information in this document is conditional upon your acceptance that you will not use or
permit others to use the information for the purposes of determining whether implementations infringe any
third party patents.
THIS DOCUMENT IS PROVIDED “AS IS”. ARM PROVIDES NO REPRESENTATIONS AND NO WARRANTIES,
EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES
OF MERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A
PARTICULAR PURPOSE WITH RESPECT TO THE DOCUMENT. For the avoidance of doubt, Arm makes no
representation with respect to, and has undertaken no analysis to identify or understand the scope and content
of, patents, copyrights, trade secrets, or other rights.
TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ARM BE LIABLE FOR ANY DAMAGES,
INCLUDING WITHOUT LIMITATION ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, OR
CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
ARISING OUT OF ANY USE OF THIS DOCUMENT, EVEN IF ARM HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
This document consists solely of commercial items. You shall be responsible for ensuring that any use,
duplication or disclosure of this document complies fully with any relevant export laws and regulations to assure
that this document or any portion thereof is not exported, directly or indirectly, in violation of such export laws.
Use of the word “partner” in reference to Arm's customers is not intended to create or refer to any partnership
relationship with any other company. Arm may make changes to this document at any time and without notice.
If any of the provisions contained in these terms conflict with any of the provisions of any click through or
signed written agreement covering this document with Arm, then the click through or signed written agreement
prevails over and supersedes the conflicting provisions of these terms. This document may be translated into
other languages for convenience, and you agree that if there is any conflict between the English version of this
document and any translation, the terms of the English version of the Agreement shall prevail.
The Arm corporate logo and words marked with ® or ™ are registered trademarks or trademarks of Arm Limited
(or its affiliates) in the US and/or elsewhere. All rights reserved. Other brands and names mentioned in this
document may be the trademarks of their respective owners. Please follow Arm's trademark usage guidelines at
http://www.arm.com/company/policies/trademarks.
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 2 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
(LES-PRE-20349)
Confidentiality Status
This document is Non-Confidential. The right to use, copy and disclose this document may be subject to license
restrictions in accordance with the terms of the agreement entered into by Arm and the party that Arm
delivered this document to.
Product Status
The information in this document is Final, that is for a developed product.
Web Address
www.arm.com
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 3 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
Contents
1 Overview ........................................................................................................................................................................ 5
1.1 What is Geometry?................................................................................................................................................... 5
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 4 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
1 Overview
In this guide, you will learn about how to make geometry optimizations using the Epic Unreal Engine
game engine.
Geometry is one of the main components when you create a 3D game. To ensure a game runs well on
all devices, geometry must be optimized as much as possible. This guide tells you how to make
geometry optimizations for 3D assets to make more efficient games that perform better on mobile
platforms.
By the end of this guide, you will understand how to do the following:
• Optimize geometry for mobile devices
• Effective triangle and polygon usage
• Level of Detail (LOD) tips and tricks
• Other geometry best practices
Vertices are the points that make up the surface of a 3D object. An edge occurs when you connect
two vertices with straight line. Three vertices connected to each other by three edges is a triangle,
and is sometimes referred to as a polygon or face.
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 5 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
Within 3D software such as Max, Maya, or Blender, we usually work using quads (a four-sided
polygon) because they are easier to change and work with. When rendered on screen, polygons are
displayed as triangles, so we use this term in this guide.
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 6 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
Having fewer triangles means the game can be released on more devices, not only devices that have
the most powerful GPUs. The following image shows a scaled down version of two objects using
fewer triangles:
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 7 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
In this image, edges are removed that do not contribute to the silhouette. As a result, the two objects
look the same in shaded mode.
On mobile platforms, the maximum vertices on each mesh is 535 because GPU support for 32-bit
indices is not guaranteed on all platforms. For example, Android devices with Mali-400 GPU do not
support 32-bit indices and the mesh will not render.
View and test the game on your target devices and do not use a monitor display. Some details created
with many triangles might not be visible on a phone.
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 8 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
The following example shows a game with a static camera point of view using more triangles on
foreground objects:
The maximum number of triangles used on a model depends on the following factors:
• The number of objects that are visible at a time in the game. Multiple visible objects have a lower
triangle count, but if there are only two or three objects visible, we can use a more triangles.
• The target device. Newer smartphones such as the Samsung Galaxy S series can handle more
complex geometry than an older mobile device.
The following example shows a robot character with a higher polycount, and a game with hundreds of
soldiers in one frame using fewer triangles:
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 9 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 10 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
These statistics help you check that your assets stay within budget and quickly identifies assets that
are not.
Another powerful tool is the Shader Complexity and Quads view mode. This mode is used to visualize
the number and shader instructions and helps you see areas where your geometry is too complex. In
the following screenshot, red areas are particle effects and red vertices towards the middle of the
scene are visible:
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 11 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
To bring this mesh back into the green, you can lower the number of triangles to reduce the mesh
complexity. Additionally, you can use LOD, as described in Level of Detail.
When you are creating details, it is important to consider that small triangle details on a 3D object will
not be visible on the final screen in the game. These details are affected by a combination of a small
phone screen size and the placement of 3D objects in the game level.
Focus on big shapes and forms that contribute to the silhouette of the object instead of the detail, as
shown in the following example:
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 12 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
Do not model intricate details using high density triangle meshes and use textures and normal maps
for fine detail. The following image shows an example of a mesh with and without normal map:
Use fewer triangles on areas that are not often seen from the camera point of view, like the bottom of
a car or the back of a wardrobe. You can also delete these areas, however, delete areas carefully in
case you need to reuse the scene. For example, if you delete the bottom part of a table mesh, it cannot
be placed upside down.
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 13 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
Vertices are expensive to process, and small triangles cause more vertices. This processing also
affects memory bandwidth, because there is more data that needs to be sent to the GPU. On a mobile
device the GPU processing affects battery life, so the user cannot play the game for as long.
Additionally, 3D objects with a high polygon count experience problems with micro triangles when
these objects are moved further away from the camera.
Do not model details using many polygons. Instead, use textures and normal maps for this type of fine
detail. You can also merge vertices or triangles that are too small.
In the following image, the triangles in the area in the green square are too small to be visible on
phone screens:
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 14 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
If an object is further from the camera, use LOD to reduce complexity. LOD makes objects simpler
and have less dense triangles. In the following image, the character on the left uses less triangles and
utilizes normal map for finer detail:
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 15 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
For example, a long thin triangle is a bevel on a pillar when viewed from a distance. These bevels are
not a problem if they are viewed close, like in the following image:
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 16 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 17 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
3 Level of Detail
As an object moves further from camera, we can see less detail in that object. For example, it is
difficult to see the difference between an object that consists of 200 triangles and an object with
2000 triangles from 20 meters away. Using fewer triangles boosts performance because fewer
triangles need to be processed. The following image shows an example of objects with different
triangle counts in the distance:
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 18 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
• Helps mitigate problems caused by micro triangles, as explained in Do not use micro triangles.
• Helps objects placed further away in the scene look better, as shown in the following image:
When using LOD, focus on the silhouette of the objects. LOD can also apply to shader complexity, to
optimize shader and material for objects that are further away. For example, by reducing the number
of textures used. Remove polygons on flatter areas and use mipmap as LOD for texture.
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 19 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
In this example, a different method of mesh optimization is used, such as removing parts that are
not visible from the camera.
• On an object that is already simple or an object that has a low triangle count
LOD comes with a memory overhead and therefore, a bigger file size. The LOD mesh data will need to
be saved in memory.
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 20 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
Do not use very dense triangles on lower LOD when objects are further away.
Test the LOD as they will be seen at the correct distance from camera. Lower LOD can look wrong
when viewed at a close distance but appear fine at the distance intended, as shown in the following
image:
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 21 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
Too little polygon reduction affects performance improvements because a similar number of triangles
are rendered. Too much polygon reduction and popping are more noticeable on LOD switch.
• The LOD meshes cost memory to store the extra meshes and increase file size
• Increased time needed to create and verify LOD models if they are created manually by an artist
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 23 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
Using smoothing group effects, UV islands split and can reduce the quality of a normal map when we
bake the normal map. Extra care must be taken to prevent this.
When smoothing groups are used on a 3D model, the smoothing groups are exported from the 3D
software and imported into the engine. Ensure smoothing groups are enabled in your 3D software to
export these groups correctly.
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 24 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
The wireframe of the rock cliff mesh in this image shows simple geometry and topology.
In the final scene, the rock cliff looks better with material applied and the problem with topology is not
noticeable, as shown in the following image:
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 25 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
5 Related information
The following resources are related to material in this guide:
• Unreal Engine documentation
• Use Streamline to Optimize Applications for Mali GPUs
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 26 of 27
Unreal Engine Geometry best practices for Unreal 102695
Issue 01
Engine
6 Next steps
This guide has introduced you to using geometry in the Unreal Engine game engine. You learned
about triangles and polygon usage, using LOD, and other best practices for geography.
After reading this guide, you can use these best practices to optimize the performance of your apps
on mobile devices that use Unreal Engine.
Copyright © 2021 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 27 of 27