Признайтесь, вы подумали о S.T.A.L.K.E.R. 2, который как раз разрабатывают на Unreal Engine 5. Но это не он.

В данной статье я хочу сравнить прозводительность UE4 и UE5, используя ассеты оригинального Сталкера.

Предистория

Году в 2018 я загорелся идеей изучить Unreal Engine 4 и заодно создать на нём свою игру. Я сперва потыкался в редакторе сам, потом прошёлся по обучающим роликам, но никак не мог придумать что именно я хочу сделать, а также где взять ассеты для игры. Сам то я умею только программировать.

И тут мне в рекомендации на ютубе попадается видео с названием навроде "Я перенёс СТАЛКЕР на Unreal Engine 4 !!!11". Заголовок звучал громче чем само видео, потому что автор только импортировал одну из мультиплеерных карт оригинальной трилогии, натянул оригинальные текстуры, добавил траву, источники освещения и сказал "Вах как красиво!". Однако, это видео всё равно было очень полезно, потому что оно содержало инструкцию о том, где взять оригинальные ассеты и как их импортировать. А заодно это видео намекнуло мне, что я хочу сделать именно сталкера. Я же как раз фанат этой серии игр!

И что же вышло?

Понимая, что полноценная одиночная кампания мне не по силам, я решил сделать мультиплеер. Я опущу 2 года чтения мануалов движка, создания материалов и конечно же написания основного кода игры, так как это не по теме.

В итоге имеем:

  • Портированы Затон из "Зова Припяти" и Бар из "Чистого Неба"

  • Портированы все текстуры и сделаны материалы, которые могут правильно воспользоваться оригинальными текстурами

  • Собственная система погоды, которая может выдать и солнечный день, и туман, и сильный ливень в ночи

  • Собственная система предметов и инвентаря

  • Собственная система стрельбы

  • Реализованы режимы "Battle Royale" и "Deathmatch", в которые можно поиграть на Затоне и в Баре соответственно

  • Внедрены необходимые оптимизации дабы всё это работало на моих тогдашних Intel Core i3 3rd gen и Nvidia 1050ti и выдавало минимум 60 кадров в секунду на максимальных настройках

А можно увидеть своими глазами?

Вы можете увидеть финальную графику здесь:

А геймплей Королевской Битвы здесь (геймплей записывался на старой графике):

Также можете пощупать всё сами, скачав игру отсюда

Игра работает только в мультиплеере и ищет сервера через Steam, поэтому вам нужно сперва пробросить к себе порт 27016, потом запустить сервер через StartServer.bat и зайти на него. По умолчанию запустится Королевская Битва и для старта матча нужно минимум 2 игрока. Чтобы поменять настройки сервера вам нужно зайти в папку StalkerMP\Config и переименовать _Server_BR.cfg либо _Server_DM.cfg в Server.cfg, а также отредактировать настройки в этих файлах как вам угодно.

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

А причём здесь Unreal Engine 5?

В декабре 2021 я решил глянуть как всё это будет работать на новом движке от Epic Games, благо он может запускать проекты для UE4 без дополнительных телодвижений (что намекает на то, что это просто дальнейшее развитие UE4, а цифра 5 в названии ради маркетинга).

Ещё стоит упомянуть, что разрабатывал я на Intel Core i7 3-го поколения и Nvidia GeForce 1050ti и соотствественно оптимизировал в первую очередь под них. Для разбирающихся, я в основном полагался на Hierarchical Level of Detail (HLOD), а также пришлось оптимизировать некоторые материалы при помощи вставок на чистом DirectX SM5. При этом я не использовал обычный LOD.
А сравнения снизу уже сделаны на AMD Ryzen 9 5900X и Nvidia RTX 3080ti, из-за чего использование того же HLOD не даёт практически никакого прироста производительности.

Ну и, в конце концов, оригинальные модели делались для собственного движка студии GSC Game World ещё в нулевые, а используемая в данном сравнении карта Затон была выпущена в 2009 году. Поэтому и количество полигонов и разрешение текстур соотвествующее. К примеру, в наше время моделька одного персонажа может иметь больше полигонов, чем любая из карт Сталкера целиком.

Также, чтобы полностью понять сравнения снизу, рекомендую почитать про систему Nanite, которая является главным нововведением в UE5. Грубо говоря, при включенном Nanite движок самостоятельно генерирует LOD и переключается между ними так, чтобы это не было заметно глазу. Также в UE5 добавили систему Lumen, но её в данном посте не будет.

Собственно, сравнение

Тестирование проводилось в полностью скомпилированной игре, чтобы интерфейс редактора не влиял на результаты.
Сравнивать я буду одни и те же сцены, все на карте "Затон", но в разных сценариях:

  1. Изначальная сцена на UE4 со всеми оптимизациями, включая HLOD

  2. Та же сцена с теми же оптимизациями, но на UE5. Система Nanite при этом включена, но в сцене нет ни одной модели, которая её использует.

  3. Та же сцена с теми же оптимизациями на том же UE5, но с полностью выключенном Nanite (r.Nanite 0 в консоли)

  4. Та же сцена на UE5 с полностью активным Nanite и без HLOD

Я не нашёл как сделать удобное сравнение картинок на хабре (это вообще возможно?), поэтому рекомендую открывать их в отдельной вкладке и сравнивать самостоятельно. Вы можете увидеть частоту кадров справа вверху, а более подробная статистика находится ниже.

Вид с "Шевченко" на "Станцию переработки отходов"
UE4
UE4
UE5 с включённым, но неиспользуемым Nanite
UE5 с включённым, но неиспользуемым Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

Вы можете заметить слегка разное освещение. Это из-за того, что UE5 принудительно включил авто экспозицию, хотя я отключал её в проекте на UE4. Это нужно для Lumen, потому что иначе оно выглядит хуже. Мне же авто экспозиция не нужна, поэтому я захардкодил минимальное и максимальное значение экспозиции так, чтоб оно выглядело примерно как на UE4

Несмотря на одинаковые настройки, UE5 рендерит объекты слегка по-другому:

Этот камыш не рендерится в UE4 и не отбрасывает тень
Этот камыш не рендерится в UE4 и не отбрасывает тень
А здесь наоборот, машину на мосту видно в UE4, но не видно в UE5
А здесь наоборот, машину на мосту видно в UE4, но не видно в UE5
Если отключить HLOD, то корабль и здания вдали выглядят лучше (кто бы мог подумать)
Если отключить HLOD, то корабль и здания вдали выглядят лучше (кто бы мог подумать)

Производительность UE5, однако, оставляет желать лучшего:

Движок

FPS

% FPS

UE4

293

100 %

UE5 при не используемом Nanite

134

46 %

UE5 при выключенном Nanite

209

71 %

UE5 при используемом Nanite и без HLOD

101

34 %

Вид с болота на "Шевченко"
UE4
UE4
UE5 с включённым, но неиспользуемом Nanite
UE5 с включённым, но неиспользуемом Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

Здесь можно заметить, что Nanite слегка двигает координаты текстур, что видно на материале земли на последних двух скриншотах.

Движок

FPS

% FPS

UE4

267

100 %

UE5 при не используемом Nanite

132

49 %

UE5 при выключенном Nanite

198

74 %

UE5 при используемом Nanite и без HLOD

98

37 %

Вид внутри "Скадовска"

В данной сцене присутствует 4 стационарных (stationary) источников света

UE4
UE4
UE5 с включённым, но неиспользуемом Nanite
UE5 с включённым, но неиспользуемом Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

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

Nanite по какой-то причине не рендерит декаль грязи в конце комнаты
Nanite по какой-то причине не рендерит декаль грязи в конце комнаты

Движок

FPS

% FPS

UE4

350

100 %

UE5 при не используемом Nanite

162

46 %

UE5 при выключенном Nanite

264

75 %

UE5 при используемом Nanite и без HLOD

114

33 %

Вид с опоры ЛЭП на почти всю карту

На данной сцене вы можете увидеть баг в UE5, когда при определённом положении и повороте камеры объекты в кадре становятся чёрными, но иногда отрисовываются нормально. Как я понял из гугла, тот же самый баг присутствует и в UE 4.26 (я использовал 4.25), то есть UE5 тут не виноват. Баг как-то связан с драйверами Nvidia и для починки надо откатиться на более старую версию. Я не хотел этого делать, поэтому оставил как есть. Я не заметил какого-либо влияния бага на производительность, поэтому считаю сравнение честным.

Стоит заметить, что Static Mesh с Opaque материалами не видно вообще (ландшафт, корабли, стволы деревьев), в то время как Static Mesh с Masked материалами мерцают (кусты и листва деревьев), а Instanced Foliage (трава) не затронут вообще. При этом баг не затрагивает Static Mesh, для которых включён Nanite (последний скриншот). Однако, Nanite не работает с Masked материалами, поэтому кусты и деревья всё ещё мерцают.
Ещё забавно то, что баг не проявляется в редакторе, но проявляется в скомпилированном проекте.

UE4
UE4
UE5 с включённым, но неиспользуемом Nanite
UE5 с включённым, но неиспользуемом Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

Движок

FPS

% FPS

UE4

230

100 %

UE5 при не используемом Nanite

131

56 %

UE5 при выключенном Nanite

176

77 %

UE5 при используемом Nanite и без HLOD

79

34 %

Вид с опоры ЛЭП на почти всю карту без прямого солнечного освещения

Описанный выше баг в UE5 присутствует и здесь.
В данном случае отключено солнечное освещение, поэтому производительность выше.

UE4
UE4
UE5 с включённым, но неиспользуемом Nanite
UE5 с включённым, но неиспользуемом Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

Движок

FPS

% FPS

UE4

256

100 %

UE5 при не используемом Nanite

139

54 %

UE5 при выключенном Nanite

222

87 %

UE5 при используемом Nanite и без HLOD

89

35 %

Вид с опоры ЛЭП на почти всю карту при сильном ливне (нет солнца и очень много полупрочзачного дождя)

Казалось бы, дальние объекты не видно, а значит они не должны отрисовываться и производительность должна быть выше. Жаль, что движок не учитывает глубину тумана (капли дождя видны только вблизи, а эффект дождя вдали - на самом деле туман) при вырезании невидимых объектов, поэтому он сперва отрисывывает всё, а потом закрашивает туманом. При этом производительность только ниже чем в солнечный день, а всё из-за множества полупрозрачных (Translucent) частиц дождя.

UE4
UE4
UE5 с включённым, но неиспользуемом Nanite
UE5 с включённым, но неиспользуемом Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

Движок

FPS

% FPS

UE4

164

100 %

UE5 при не используемом Nanite

131

80 %

UE5 при выключенном Nanite

142

87 %

UE5 при используемом Nanite и без HLOD

81

49 %

Нет, я не перепутал скриншоты. Я ожидал, что Nanite будет посередине между включённом, но не используемом, и полностью выключенном. Но нет, он показал себя хуже всех... И это странно, потому что если убрать HLOD, оставить Nanite включённым, но не используемым, то fps падает всего на 1 на текущем железе (На старом железе разница была большая, но цифр у меня уже нет). Я не знаю что здесь не так.

Опять же напомню, что все эти ассеты создавались для игры 2009 года и для совершенно другого движка, и полигонов там по современным меркам мало, а Nanite из UE5 делается для очень многополигональных сцен. Но это всё равно странно!

Однако производительность падает даже при выключенном Nanite. Это точно не Lumen, я проверял, это что-то ещё...

Куда уходят драгоценные милисекунды?

В данной главе сравниваются данные, отображаемые консольными командами stat gpu и stat rhi в попытке понять, какой компонент движка стал хуже делать свою работу. Если вам такое не интересно, можете пройти сразу к выводам.

Компонент

Объяснение

Prepass

Подготовка сцены к отрисовке

Basepass

Собственно, базовая отрисовка сцены

Shadows

Просчёт и наложение теней. Сюда включены Shadow Depths и Shadow Projection.

HZB

Расчёт глубины сцены. Это нужно для исключения невидимых объектов из дальнейшей обработки.

SSAO

ScreenSpace Ambient Occlusion

Postprocessing

Постпроцесс, то есть наложение дополнительных эффектов поверх уже отрисованной сцены

Translucency

Просчёт полупрозрачных объектов

GPU Scene Update

Я не знаю что это, гугл тоже не помог

Nanite

Собственно, новая технология в UE5. Включает все строки с Nanite в названии.

[unaccounted]

Некие расчёты видеокарты, которые движок не смог отследить

Triangles drawn

Количество отрисованных полигонов

Вид с "Шевченко" на "Станцию переработки отходов"
UE4
UE4
UE5 с включённым, но неиспользуемом Nanite
UE5 с включённым, но неиспользуемом Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

UE4

UE5,
Nanite не используется

UE5,
Nanite выключен

UE5,
нет HLOD,
Nanite используется

Prepass

0.58

0.57

0.57

0.57

Basepass

0.71

0.97

0.92

2.24

Shadows

1.19

2.01

1.11

2.79

HZB

0.37

0.18

0.15

0.25

SSAO

0.28

0.26

0.26

0.33

Postprocessing

0.35

0.32

0.35

0.34

Translucency

0.14

0.19

0.17

0.28

GPU Scene Update

0.00

1.91

1.64

1.96

Nanite

-

1.22

-

2.23

[unaccounted]

0.12

0.20

0.88

0.21

Triangles drawn

1,210,837

19,180

19,298

1,663,262

Уже в первой сцене можно заметить причину тормозов:

  • Basepass в UE5 подскакивает на 0.20 ms даже без Nanite, а с ним вообще отбирает больше 2 ms!

  • Nanite также требует значительно больше времени на Shadows, а вот без него производительность даже немного улучшилась.

  • Также в UE5 оптимизировали HZB, либо же часть его работы попадает в [unaccounted].

  • SSAO работает чуть-чуть быстрее в UE5 без Nanite, но медленнее если его включить. Разница, впрочем, мизерная.

  • Postprocessing тоже стал чуточку быстрее.

  • Расчёты Translucency стали медленнее во всех случаях, а с Nanite так вообще в 2 раза хуже.

  • GPU Scene Update не отнимал вообще нисколько времени в UE4, а в UE5 неожиданно стал отнимать больше полутора миллисекунд.

  • Ну и, собственно, сам Nanite, к сожалению, скорее уменьшает производительность, так как в сцене изначально не так уж много полигонов чтоб их оптимизация давала эффект.

  • К слову о полигонах. UE5 почему-то не учитывает большинство отрисованных полигонов в своей статистике если Nanite не используется. Сам Nanite при этом проигрывает HLOD в количестве вырезанных полигонов на целых 250 тысяч. Впрочем, хоть я это и не показал в статье, эта же сцена на UE4 без HLOD отрисовывает примерно 1,750,000 треугольников, так что Nanite всё же немного свою работу делает.

Вид с болота на "Шевченко"
UE4
UE4
UE5 с включённым, но неиспользуемом Nanite
UE5 с включённым, но неиспользуемом Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

UE4

UE5,
Nanite не используется

UE5,
Nanite выключен

UE5,
нет HLOD,
Nanite используется

Prepass

0.62

0.48

0.48

0.49

Basepass

0.79

0.97

0.92

2.42

Shadows

1.24

2.11

1.23

2.90

HZB

0.39

0.20

0.17

0.22

SSAO

0.29

0.26

0.26

0.26

Postprocessing

0.34

0.31

0.34

0.32

Translucency

0.14

0.19

0.19

0.20

GPU Scene Update

0.00

1.90

1.76

1.88

Nanite

-

1.24

-

2.52

[unaccounted]

0.11

0.20

0.93

0.20

Triangles drawn

1,434,587

38,282

38,428

1,681,518

  • В данной сцене Prepass неожиданно стал заметно быстрее в UE5, хотя в предыдущей сцене разницы не было.

  • Также в этой сцене больше полигонов, что видно по цифрам без Nanite. А вот с ним число почти не изменилось, то есть здесь он делает свою работу лучше.

  • По остальным параметрам ситуация такая же, как и в предыдущей сцене.

Вид внутри "Скадовска"
UE4
UE4
UE5 с включённым, но неиспользуемом Nanite
UE5 с включённым, но неиспользуемом Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

UE4

UE5,
Nanite не используется

UE5,
Nanite выключен

UE5,
нет HLOD,
Nanite используется

Prepass

0.56

0.09

0.10

0.08

Basepass

0.44

0.43

0.36

0.25

Shadows

1.14

1.81

1.24

2.87

HZB

0.39

0.15

0.15

0.18

SSAO

0.26

0.26

0.26

0.26

Postprocessing

0.34

0.42

1.68

0.33

Translucency

0.08

0.13

0.12

0.13

GPU Scene Update

0.00

1.64

1.52

5.20

Nanite

-

1.21

-

2.46

[unaccounted]

0.01

0.54

0.38

0.11

Triangles drawn

1,004,122

42,488

42,579

1,684,821

Данная сцена находится в помещении, что сильно влияет на цифры

  • Prepass, неожиданно, почти ничего не стоит в UE5 во всех сценариях

  • Basepass и HZB тоже работают лучше в UE5

  • Shadows и Translucency по прежнему медленнее

  • А Postprocessing вообще удивил. Почему полное отключение Nanite делает его таким медленным в данной сцене?

  • GPU Scene Update по-прежнему замедляет работу, а при использовании Nanite вообще ведёт себя ужасно

  • Обратите внимание, что UE4 здесь рисует заметно меньше треугольников чем в предыдущих сценах, а UE5 во всех сценариях рисует больше. Подозреваю, что в UE5 сломалось вырезание объектов, которые полностью скрыты за другими.

Вид с опоры ЛЭП на почти всю карту
UE4
UE4
UE5 с включённым, но неиспользуемом Nanite
UE5 с включённым, но неиспользуемом Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

UE4

UE5,
Nanite не используется

UE5,
Nanite выключен

UE5,
нет HLOD,
Nanite используется

Prepass

0.85

0.54

0.58

0.52

Basepass

0.87

1.09

0.83

2.71

Shadows

0.97

1.58

1.09

2.70

HZB

0.52

0.33

0.29

0.37

SSAO

0.27

0.26

0.28

0.26

Postprocessing

0.33

0.30

0.32

0.31

Translucency

0.10

0.13

0.13

0.15

GPU Scene Update

0.00

1.91

2.21

1.94

Nanite

-

1.24

-

2.81

[unaccounted]

0.01

0.10

0.63

0.11

Triangles drawn

1,464,696

39,090

38,833

1,682,196

Мы снова вернулись на открытое пространство. Цифры не сильно отличаются от "Вида с болот на Шевченко", поэтому добавить здесь нечего.

Вид с опоры ЛЭП на почти всю карту без прямого солнечного освещения
UE4
UE4
UE5 с включённым, но неиспользуемом Nanite
UE5 с включённым, но неиспользуемом Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

UE4

UE5,
Nanite не используется

UE5,
Nanite выключен

UE5,
нет HLOD,
Nanite используется

Prepass

0.85

1.92

1.15

4.79

Basepass

0.91

1.09

0.83

0.92

Shadows

-

-

-

-

HZB

0.67

0.35

0.30

0.34

SSAO

0.28

0.27

0.29

0.26

Postprocessing

0.34

0.33

0.40

0.33

Translucency

0.10

0.14

0.13

0.15

GPU Scene Update

0.00

1.25

1.20

1.31

Nanite

-

0.81

-

2.47

[unaccounted]

0.01

0.07

0.50

0.07

Triangles drawn

1,067,320

139,303

139,141

1,681,544

А здесь я сменил солнечную погоду на облачную, поэтому теней здесь нет.

  • Prepass внезапно стал тяжелее, чем при наличии солнца

  • Солнца нет, соответственно Shadows ничего не делает

  • GPU Scene Update и Nanite стали заметно дешевле

  • Число треугольников в UE4 заметно упало, а в UE5 с Nanite не изменилось. Без Nanite же число выросло в 10 раз, но там статистика поломана, поэтому на них не смотрим.

Вид с опоры ЛЭП на почти всю карту при сильном ливне (нет солнца и очень много полупрочзачного дождя)
UE4
UE4
UE5 с включённым, но неиспользуемом Nanite
UE5 с включённым, но неиспользуемом Nanite
UE5 с выключенным Nanite
UE5 с выключенным Nanite
UE5 с полностью активным Nanite и без HLOD
UE5 с полностью активным Nanite и без HLOD

UE4

UE5,
Nanite не используется

UE5,
Nanite выключен

UE5,
нет HLOD,
Nanite используется

Prepass

0.89

2.03

1.14

4.34

Basepass

0.93

1.18

0.88

1.10

Shadows

-

-

-

-

HZB

1.03

0.39

0.30

0.37

SSAO

0.28

0.26

0.28

0.27

Postprocessing

0.30

0.34

0.39

0.30

Translucency

8.59

7.12

8.15

7.46

GPU Scene Update

0.00

3.00

2.24

3.67

Nanite

-

1.43

-

3.30

[unaccounted]

0.03

0.13

0.53

0.14

Triangles drawn

1,115,490

140,500

139,404

1,796,389

А в данной сцене ну оооочень много полупрозрачных частиц дождя. Важно отметить, что здесь UE5 оказался наиболее близок по производительности к UE4

  • Prepass в UE5 опять хулиганит, причём особенно сильно при включенном Nanite.

  • Basepass отнимает больше времени при включённом Nanite по сравнению с UE4, но меньше при выключенном.

  • А вот HZB работает сильно лучше в UE5 по сравнению с предшественником

  • Translucency тоже лучше в UE5

  • А вот GPU Scene Update стал отнимать ещё больше времени

  • Nanite тоже стал медленнее

  • Число треугольников увеличилось во всех сценариях. Причём на UE4 оно всё ещё меньше чем в солнечную погоду, а вот в UE5 оно заметно больше

Вывод

  • Не переносите старого сталкера на UE5, переносите на UE4

  • Текущая альфа UE5 плохо показывает себя в низкополигональных сценах, что в больших и открытых, что в маленьких закрытых. Производительность падает в среднем до 50% от UE4 в одинаковых условиях.

  • Можно отключить Nanite совсем через команду r.Nanite 0 в консоли, но производительность всё ещё будет хуже - 75% от UE4. Однако, если отключить солнечный свет, то будет около 87% от UE4.

  • Если же убрать HLOD, включить Nanite и активировать его для всех непрозрачных мешей, то производительность упадёт ещё ниже - аж целых 35% от UE4! Частично причина в том, что HLOD упрощает не только модели, но и материалы, а Nanite нет (вроде бы). То есть теперь просчёт пикселей занимает больше времени. Но там явно виновато что-то ещё, и я не знаю что...

  • Если добавить в сцену множество полупрозрачных частиц (дождь), то производительность упадёт везде и очень сильно, но отставание UE5 уменьшится - 80/87/49 процентов от UE4. Это говорит о том, что пиксельные шейдеры в UE5 не трогали, а трогали только вершинные.

  • Собственно, главный вывод - не стоит делать низкополигональные игры на текущей альфе UE5. Надеюсь, это починят в будущем.

Бонус

UE4 уделывает и оригинальный движок сталкера X-Ray по производительности.

К примеру, вид с опоры ЛЭП скачет между 95 и 115 fps в Зове Припяти, в то время как UE4 выдаёт 230 fps. А если уткнуться в землю, то будет ровно 125 fps, то есть X-Ray ограничивает максимальную частоту кадров.

Можно сравнить и с модом Anomaly, который работает на современной фанатской версии X-Ray. Там fps болтается в районе 100, а разглядывание земли поднимает до максимально возможных 500. Картинка при этом сильно красивее, так что фанаты постарались на славу.

Скриншоты
UE4
UE4
Зов Припяти
Зов Припяти
Anomaly
Anomaly

Спасибо за внимание!

Комментарии (11)


  1. AllexIn
    24.01.2022 18:57
    +8

    UE5 не про "быстрее UE4",

    UE5 про "максимальная детализация + честное освещение"

    Но за разбор всё равно спасибо. Было интересно.


  1. Watcover3396
    24.01.2022 23:11

    Что-бы UE5 не жрал как слон, нужно бета тени переключить на стандартные, новые бета тени очень дорогие и пока не очень понятно какой профит дают, видимо они завязаны на Нанит.

    И должно быть включено

    Это как минимум, вообще Нанит специфичная вещь требующая своего подхода, просто так его включить, оно будет жрать не давая никакого профита, как ты уже заметил.
    А так прикольно, молодец)


    1. IgeNiaI Автор
      24.01.2022 23:19

      Новые тени отключены по умолчанию при переносе проектов из UE4


    1. SK36
      25.01.2022 19:19

      Нет, тени не завязаны на Нанитах. Они сделаны по подобию ВТ (виртуальных текстур), что позволяет увеличить разрешение до 16к. Это даст лучшую детализацию теней от мелких деталей, которые на стандартном CSM из УЕ4 не реализовать. Жрут они не сильно много как со всеми ВТ-шками, но не зависят от геометрической сложности сцены, а больше зависят от количества динамических объектов и динамики самого ИС, а также от разрешения экрана. Ну и болезнь общая имеется как и у стандартных теневых карт - это количество ИС в кадре с тенями. Тут на каждый новый ИС создаётся карта 16к.

      Вообще эпики в пятерке все завязали на Виртуалках, как то виртуальная геометрия, тени или текстуры. Изначально "откусывает" определенный запас по производительности + некоторые расчеты в пространстве экрана (видимые пиксели, их разрешение и тд), но все это перекрывает именно качество и сложность сцен. Это уже более киношный уровень, к которому, они собственно и идут. УЕ5 - это уже не просто игровой движок, а гораздо более разноплановый инструмент (игры, презентации, дизайн, реклама, мультики, фильмы и тд)


  1. PenchoGrusha
    25.01.2022 00:13

    Сталкер, батл рояль, батл рояль в сталкере, ну это просто васянское бинго.

    Lumen, Virtual Shadow Maps, Temporal Super Resolution, World Partition, и всё касающееся анимации, физки и интерфейса оказалось НИНУЖНЫМ и делает сралкера только медленнее. Даже куб на OpenGL рендерится быстрее, чем на Nanite. А обратная совместимость названа маркетинговым трюком, ведь перед нами четвёртая версия, если выкинуть всё, что васяну не понравилось.

    Срочно требуется сравнение с Unity, без него вопрос "На чём делать свой батл рояль по первому сталкеру" остаётся открытым.


    1. AllexIn
      25.01.2022 10:03
      +5

      И что плохого в батл рояле в антураже Сталкера? Я бы сейчас во все игры пихал батл рояль на месте разрабов. Как раньше везде пихали дезматч.


  1. Romutis
    25.01.2022 18:21

    Выходит что григорович, внезапно, врал про сложный перенос якобы почти готовой игры на UE5.


    1. IgeNiaI Автор
      25.01.2022 18:23

      Не обязательно. Моя игра небольшая и мне было легко, но у них может быть другая ситуация. Плюс, как вы могли заметить из моей статьи, UE4 и UE5 расчитаны на разные вещи и под них надо по-разному оптимизировать.


  1. Aaa96
    25.01.2022 19:19

    Миллион лет занимался стульчаком, узнав еще полгода назад какой бардак в пыс - стошнило. И больше игру не жду, сам в геймдеве.
    Статья полезна, тем кто кричит какой хирей крутой движок(однопоточный), да рендер в нём крутой. Но это технологии 2004 года с добавками 2008.


  1. OptimumOption
    25.01.2022 20:46

    Получилось как то… мультяшно(?), что ли…


  1. erisvicious
    26.01.2022 00:35

    Из того что я читал по теме - там действительно идет расчет на тяжелый арт и на довольно серьезную постоянную загрузку - суть выживач на лоупольках будет жрать не сильно меньше очень хайпольных штуковин, ибо работа с геометрией в принципе другая.

    С другой стороны - обратный эффект, очень хайпольные же штуковины будут жрать не сильно больше лоуполи выживача. Отсюда и все мемы про миллиарды поликов в ратайм-рендере.

    Так что да, очень может быть что для портов старых игр и лоуполи-поделок УЕ5 - это на самом деле спорный выбор.