Skip to content

Optimization of 3D scene and fixing rendering issues on mobile devices (Unreal Engine 4).

Notifications You must be signed in to change notification settings

agscpp/VintageBarInterior

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VintageBarInterior

Увеличение количества FPS

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

  • Объединять объекты, которые находятся рядом в один Actor для того, что они рисовались за меньшее количество draw calls. Этот метод, также, как и механизм Object Instancing, даст нам не плохую производительность за счет избавления от лишнего обмена между CPU и GPU при рендеринге. На рисунках 1, 2 в качестве примера показана производительность, достигаемая до и после объединения бутылок. Если обратить внимание, то можно заметить, что количество draw calls уменьшилось, а FPS увеличилось, после внесенных изменений. Для осуществления подобного объединения необходимо выделить желаемые объекты и нажать Merge Actors в контекстном меню.
  • Уменьшение разрешения 4K текстур. Данный метод хорошо подходит не только для сокращения размеров приложения, но и для увеличения FPS. Для воплощения этого метода необходимо открыть в Content Browser текстуры с 4K разрешением и в настройках этих текстур увеличить значение LOD Bias на один.
  • Увеличение количество LOD (Level of Detail). Этот подход позволит нам уменьшить количество треугольников используемых при прорисовке элементов. Он достаточно прост в реализации, так как от нас лишь требуется в настройках Static Mesh изменить параметр Number of LODs и Unreal Engine сам сгенерирует эти LOD.
  • Уменьшение количество Static Mesh. В рассматриваемых проектах большое обилье однотипных элементов, которые рисуются при помощи отдельного Static Mesh (Например: пол и потолок). В целях оптимизации мы можем заменить эти однотипные элементы одним таким элементом с большим размером. Преимуществом будет опять же уменьшение количество draw calls. Единственное, кроме масштабирования, от нас будет требоваться правильно настроить UV.
  • Разбиение сложных материалов на более простые. Не стоит делать один большой материал с множеством функционала, так как создается значительная нагрузка при рендеринге объектов, использующих подобный материал. В качестве примера можно рассмотреть MI_Green_plaster_wall, у которого родительский материал умеет создавать пыль, имитировать облезшую краску и т.п. Но при этом сам MI_Green_plaster_wall все это не использует в своей работе. Если обратиться к рисункам 3 и 4, то можно увидеть, насколько можно уменьшить граф после вынесения логики для MI_Green_plaster_wall.
  • Удаление лишних элементов сцены. В представленной сцене к таким элементам можно отнести, например, объекты, расположенные в кладовке, к которой у пользователя нету доступа, а также источники света и отражающие элементы, которых достаточно много.

Рисунки 1-2 — Производительность достигаемая до и после объединения

Рисунки 3-4 — Исходный и новый материал

Диаграмма 1 — Сравнительная диаграмма способов оптимизации

About

Optimization of 3D scene and fixing rendering issues on mobile devices (Unreal Engine 4).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published