Анализ особенностей Unreal Engine 5.2 является ли это ответом на #StutterStruggle?

Анализ Unreal Engine 5.2 ответ на #StutterStruggle?

Почти три года спустя после первого показа Unreal Engine 5, мы на пороге выпуска первых крупных игр на UE5, включая Immortals of Aveum, The Lords of the Fallen и Stalker 2: Heart of Chernobyl. С выпуском Unreal Engine 5.2 пришло время еще раз взглянуть на новые функции, добавленные в последней редакции, и на то, как эти дополнения окрасят игры будущего – включая проекты от разработчиков, ранее создававших собственные движки, таких как CD Projekt Red и Crystal Dynamics.

Процедурная генерация стала главным нововведением в UE5.2, как продемонстрировано в демо Electric Dreams в марте. Если вы помните, пространства, показанные в оригинальном показе Unreal Engine 5 с использованием Lumen in the Land of Nanite и Valley of the Ancient, были созданы очень особенным способом. Художники вручную размещали и располагали каждый элемент окружения из готовых ассетов, часто тратя время на копирование и вставку этих ассетов с изменением поворота и масштаба, чтобы создать редко населенные скалистые окружения, которые мы видим в этих демо. Хотя такой подход может быть эффективным способом создания проектов малого масштаба, подобных этим демонстрациям, такое «сборка из набора» (как это называется) может быть неудобной для настоящей разработки видеоигр. Это требует большого количества ручного труда и ограничивает возможности движка, так как неэффективное перекрытие множества мешей негативно сказывается на производительности аппаратного ускорения трассировки лучей Lumen.

В демо Matrix Awakens Epic продемонстрировала процедурный инструмент для заполнения городских окружений, но с 5.2 они также выпустили другую систему для естественных открытых окружений, подобных тем, которые мы видим в демо Electric Dreams. Здесь Nanite используется не только для непрозрачных объектов, таких как скалы, но и для объектов, таких как листья и кусты, которые используют прозрачности с масками альфа-канала. Основываясь на моем первом контакте с демо и самом редакторе, эта техника кажется эффективной в создании убедительных окружений высокого качества из ограниченного количества ассетов и с минимальным вмешательством художника. Это должно упростить заполнение больших миров достаточным количеством деталей, где Nanite обеспечивает необходимую детализацию.

Некоторые отличия лучше показать визуально – поэтому мы сделали эту видеопрезентацию специально для вас. Посмотрите на YouTube

Еще одним положительным побочным эффектом этого более системного метода размещения является улучшение производительности, где аппаратный Lumen теперь работает заметно лучше на стандартных настройках. В одном примере я замерил улучшение частоты кадров на 14 процентов по сравнению с программным Lumen при том же разрешении, при этом увеличился уровень детализации отражений – теперь можно увидеть отдельные листья вместо неопределенных блобов программной версии. Качество рассеянного освещения также улучшилось в аппаратной реализации, так как программное решение имело тенденцию слишком затемнять теневые области. Это значительное улучшение по сравнению с окружениями, основанными на наборе, таких как Valley of the Ancient, где аппаратный Lumen работал гораздо хуже и фактически был непригоден к использованию, несмотря на более высокое качество.

Хотя это впечатляет, важно отметить, что эти обобщения обычно верны при ограничении видеокартой, но в случае ограничения процессором результаты могут быть разными. Например, при запуске демо UE5.2 с более низким разрешением программный Lumen обеспечивает незначительное увеличение производительности на 10 процентов по сравнению с аппаратным Lumen. Требования к процессору, скорее всего, также будут высокими, так как даже с Core i9 12900K и оперативной памятью DDR5 6400MT/s демо работает немного более 60 кадров в секунду в среднем. При перемещении по миру с более высокой скоростью демо становится все более ограниченным процессором, что сказывается на производительности и вызывает рывки.

Интересно, что, несмотря на то, что UE5 является современным движком, он пока не оптимально масштабируется на процессорах с большим количеством ядер и потоков – что подтверждают результаты прошлого года. Например, переход от шести до восьми ядер на 12900K увеличивает производительность при ограничении процессором всего на шесть процентов, а включение гиперпоточности увеличивает производительность еще на четыре процента в этой тестовой последовательности. Включение еще восьми эффективных ядер не улучшает кадровую частоту.

После шести ядер/потоков UE5 не показывает значительного масштабирования производительности – поэтому современные процессоры остаются неиспользованными.

Учитывая, насколько широко распространенным станет UE5 в ближайшие годы, это немного разочаровывает – особенно учитывая, что среднее количество ядер процессоров продолжает увеличиваться. Например, в игре Cyberpunk 2077 мы видим увеличение частоты кадров на 88 процентов при переходе от четырех ядер до 16 ядер на 12900K, тогда как в демо Electric Dreams мы видим только 30-процентное улучшение. Основываясь на этом, UE5 все еще имеет много места для роста в плане использования современных многопоточных процессоров.

Если у вас есть видеокарта Ada Lovelace (Nvidia RTX 40-серии), то DLSS 3 Frame Generation может быть эффективным противодействием и его легко реализовать для разработчиков, достаточно всего 11 кликов после нахождения плагина на Unreal Engine Marketplace. С его помощью я замерил улучшение частоты кадров на 97 процентов в этом сценарии, ограниченном процессором. Я думаю, что это делает DLSS3 (и его будущие аналоги от AMD и Intel) неотъемлемым инструментом для разработчиков, создающих игры на UE5.

Еще одно важное обновление производительности в UE5.2 – это улучшение поведения компиляции шейдеров, что является постоянной проблемой для меня, как для постоянного читателя. Единственный способ предотвратить сбои компиляции шейдеров в UE4 и UE5.0 – предоставить этап предварительной компиляции перед запуском игры. Это доступно в нескольких играх на UE4, но требует, чтобы разработчики прошли игру методично, чтобы построить полную библиотеку всех шейдеров, с которыми сталкиваются игроки. Если что-то пропущено, все равно возникают сбои.

Программное освещение Lumen иногда может быть слишком темным по сравнению с аппаратной версией, как видно на этом скриншоте.

Вместе с UE 5.1 и соответствующим обновлением Fortnite, Epic добавили асинхронную схему компиляции шейдеров, которая работала в реальном времени, предварительно компилируя шейдеры на фоне на процессоре во время игры, чтобы, надеюсь, предотвратить сбои. Эта техника не совершенна, так как если шейдер должен быть отрисован, но он не готов, то игра будет подтормаживать. В UE5.2 этот асинхронный система стала точнее и, что самое важное, позволяет разработчику отложить отображение шейдера до его полной компиляции, что потенциально позволяет полностью устранить все связанные со шейдерами сбои, но с потенциальным эффектом отображения эффекта или материала с небольшой задержкой.

Это улучшенная асинхронная предварительная компиляция шейдеров и новая функция skipdraw из 5.2 имеют трансформирующий эффект на основе моих тестов, устраняя самые большие сбои (~500 мс) и значительно улучшая плавность. Однако это не полностью устраняет сбои, остаются примеры сбоев в диапазоне 30-50 мс, которые не встречаются в полностью «разогретом» кэше. Некоторые из них могут быть связаны с сбоями прохождения, которые UE5 унаследовал от UE4 – и которые все еще присутствуют в последней версии Fortnite, работающей на Unreal Engine 5.2.

Что касается сбоев, Unreal Engine 5.2, безусловно, является улучшением – но сбои в прохождении требуют доработки, и даже новая асинхронная система кэширования шейдеров не является универсальным решением, на которое разработчики могут полностью полагаться для плавного игрового опыта. Во-первых, она, кажется, не включена по умолчанию, что может пропустить некоторые разработчики, и, во-вторых, она вызывает некоторые сбои, которые затем исправляются с помощью более традиционного метода кэширования шейдеров. Поэтому, вероятно, имеет смысл комбинировать эту новую асинхронную систему с более старой системой предварительного кэширования для достижения наиболее плавного опыта на ПК.

Будет интересно увидеть, как эти две новые функции из Unreal Engine 5.2 будут использоваться в сторонних играх, от Immortals of Aveum в августе до The Lords of the Fallen в октябре и Stalker 2 в декабре. 2023 год пока не стал таким, каким я надеялся для игр на ПК, но еще есть время, чтобы что-то поменялось, и UE5.2 может сыграть ключевую роль.