Optimising graphics performance
Good performance is serious to the hit of many games. beneath are some easy strategy for maximise the velocity of your game’s rendering
Locate high graphics impact
The graphical parts of your game can mainly impact on two system of the mainframe: the GPU and the CPU. The primary rule of any optimisation is to find where the presentation problem is, because strategy for optimising for GPU vs. CPU are rather diverse (and can still be conflicting – for example, it’s quite general to make the GPU do further work while optimising for CPU, and associate versa).
Common bottleneck and ways to verify for them:
GPU is repeatedly imperfect by fill rate or memory bandwidth.
Lower the exhibit resolution and run the game. If a lesser display decision makes the diversion run faster, you might be imperfect by fill tempo on the GPU.
CPU is often imperfect by the number of batch that require to be render.
Check “batches” in the Rendering data window. The more batch are being rendered, the senior the cost to the CPU.
The GPU has too various vertices to process. The numeral of vertices that is suitable to ensure good recital depends on the GPU and the difficulty of vertex shades
. Generally speaking, aim for no additional than 100,000 vertices on mobile. A PC manage well even with numerous million vertices, but it is motionless good apply to keep this number as low as probable through optimisation.
The CPU has too several vertices to procedure. This could be in painful meshes, cloth simulation, particles, or extra game objects and mesh. As above, it is normally good apply to keep this number as low as probable without compromise game quality. See the section on CPU optimisation below for regulation on how to do this.
If depiction is not a difficulty on the GPU or the CPU, present may be an issue away – for example, in your script or physics. utilise the Unity Profile to position the difficulty.
To make objects on the screen, the CPU has a lot of giving out work to do: working out which lights affect that entity, location up the shared
and shared parameters, and sending picture information to the graphics driver, which then prepare the information to be sent off to the graphics card.
All this “per object” CPU usage is resource-rigorous, so if you have lots of evident objects, it can add up. For example, if you have a thousand triangles, it is much easier on the CPU if they be all in one mesh
, rather than in one mesh per triangle (adding up to 1000 meshes). The cost of both scenario on the GPU is very similar, but the occupation done by the CPU to render a thousand objects (instead of one) is considerably higher.
Reduce the noticeable object count. To reduce the sum of work the CPU needs to do:
mingle close objects together, either yourself or using Unity’s draw call batching.
Use fewer materials in your matter by put separate texture into a superior texture atlas.
Use less things that grounds objects to be render manifold times .
Combine objects jointly so that each interlock has at least several hundred triangles and uses merely one Material
for the entire mesh. Note that combine two objects which don’t share a matter does not provide you any recital increase at all. The mainly ordinary reason for requiring several materials is that two mesh don’t share the same texture; to optimise CPU performance, make certain that any matter you combine divide the same textures.
When using many pixel
lights in the Forward depiction path, there are situation where combine objects may not build sense. See the Lighting routine section below to find out how to supervise this.
GPU: Optimising model geometry
There are two basic system for optimising the geometry of a model:
Don’t use any extra triangles than essential
Try to maintain the number of UV mapping seam and hard ends (doubled-up vertices) as low as probable
Note that the real number of vertices that graphics hardware has to procedure is frequently not the same as the number report by a 3D application. Modelling application usually display the number of different corner points that build up a model (known as the numerical vertex count). For a graphics card, still, some arithmetic vertices require to be split into two or further logical vertices for rendering purpose. A vertex must be hole if it has multiple standard, UV coordinates or vertex colors. therefore, the vertex count in agreement is frequently higher than the reckon given by the 3D application.
While the sum of geometry in the model is mostly pertinent for the GPU, some features in Unity as well process models on the CPU.