Optimizing Graphics Performance
Unity Manual > Advanced > Optimizing Graphics Performance

Optimizing Graphics Performance

Для успех большое значение имеет требовательность игры к ресурсам, её «производительность». К счастью, Unity предоставляет средства для максимизации производительности игры.

In summary - combine, combine, combine

In detail:

Современные видеокарты очень хорошо справляются с большим количеством полигонов, но they have quite a bit of overhead for every batch that you submit to the graphics card. То есть объект со 100 треугольниками будет столь же дорог в рендере, как и объект с 1500 полигонами. Оптимально для производительности — 1500-4000 треугольников на меш.

Ресурсы при рендере расходуются только на объекты, имеющие компонент Mesh Renderer. And you only pay for those that are within the view frustum. На пустые объекты никакие ресурсы не тратятся.

Лучший путь для повышения производительности — объединять меши так, чтобы каждый меш имел 1500 треугольников и больше, и на каждый меш приходился бы только один материал.

Важно понимать, что одно лишь объединенте двух объектов не даст повышения производительности, если они используют разные материалы. Нужно удостовериться, что после объединения они используют один общий материал.

Есть ещё один нюанс, который нужно учитываться, объединяя объекты: если вы используете много маленьких ИС в сцене, стоит объединять только те объкты, которые находятся близко друг к другу.

Стоимость рендера для меша, который использует несколько материалов, соответствует сумме стоимостей рендера для каждого материала отдельно. Поэтому нужно удостовериться, что объединённые объекты используют общие текстуры, насколько это возможно.

Unity очень хорошо работает с большим количеством полигонов. Unity загружает всю геометрию в видеокарту для хорошего использования кеша и оптимального выравнивания данных.
Удостоверьтесь, что видеокарта не вынуждена работать с большим количеством пакетов (batches).
Количество Pixel Lights существенно влияет на производительность.

If you want to have the best performance and don't care about Bumpmapping or Pixel Lighting, go to Edit->Render Settings... and set Pixel Light Count to zero. This will simply use vertex lighting for all objects. This means all geometry will be rendered only once per frame. This is an extremely useful LOD setting, so your game can run fine on older graphics cards.

 

Pixel lights

If you use pixel lighting, then each GameObject has to be rendered as many times as there are pixel lights that affect the object. If you combine two objects that are very far apart, it might increase the size of the object and now you have a lot of lights affecting this big object. If your objects were seperate however, the light wouldn't have to be applied on the part of the mesh which is far away. This can result in rendering the combined mesh as many times as the uncombined mesh thus you didn't save anything. For this reason, you should keep GameObjects that are very far away as individual Meshes.

When rendering a mesh, Unity finds all lights surrounding the mesh. It then figures out what lights affect the mesh the most. The Edit->Render Settings are used to modify how many of the lights end up as pixel lights and how many as vertex lights.

Every light calculates its importance based on how far away it is from the mesh and how intense it is.

Some lights are more important than others depending on the game context. For this reason, every light has a Render Mode setting which can be set to Force Pixel or Force Vertex.

Imagine the player's car with head lights driving through the night. The head light is the most important light in the game. For this reason, the head lights Render Mode should be set to Force Pixel.

If you have a light that isn't very important and also visually doesn't gain much from being a pixel light, set the lights Render Mode to "Force Vertex". This way you don't waste rendering performance or lose any visual quality.

Shadows

Тени оказывают большое влияние на производительность. Старайтесь использовать их правильно.
Подробности о тенях — Shadows page.

See Also