ALPHA POINT: техническое демо на Unreal Engine 5

Вступление

Данная статья основана на видео-докладе The Making of «Alpha Point» — UE5 Technical Demo, который был представлен техническими руководителями The Coalition в рамках GDC 2021.

Примечание: В связи с недавним релизом Unreal Engine 5.1, часть технической информации содержащейся в данной статье могла утратить свою актуальность. Более того, несмотря на огромную работу проделанную разработчиками, некоторые моменты данной презентации являются наглядным примером того как не надо делать. Например, не стоит записывать 4K видео что бы потом запихнуть его в PowerPoint, перезаписать его ещё раз в 1080p виде доклада и выложить на YouTube. А затем рассказывать о качестве работы TSR и сравнивать качество рендеринга при разных настройках и т.д.

Однако, вы по прежнему можете найти тут некоторые интересные моменты и подробности связанные с самим процессом разработки. Или оценить всё это в контексте развития движка. В конце концов, вы можете просто посмотреть красивые картинки и ролики.

Несколько слов о The Coalition

Канадская студия The Coalition (бывшая Zipline Studios, Microsoft Game Studios Vancouver и Black Tusk Studios) является одной из ведущих студий Microsoft и входит в состав XBOX Game Studios.

Данная студия, прежде всего известна тем, что вполне успешно возродила серию Gear of War.

В 2014 права на серию полностью перешли к Microsoft. У The Colation появилась возможность выпустить новую часть Gears Of War на новом поколении консолей с использованием Unreal Engine 4.

Серия Gears of War всегда была неразрывно связана с Unreal Engine. Именно на Unreal работают все игры серии, начиная с самой первой части GoW (UE3).

Эта серия всегда была отличной демонстрацией возможностей как Unreal так и Xbox.

Благодаря возможностям новых консолей и внедрению множества новых технологий и фич, разработчики смогли вывести серию на новый технологический уровень.

Новое поколение

В данный момент разработчик работают вместе с Epic Games над Unreal Engine 5 и с уверенностью смотрят в будущее. UE5 является отличной возможностью показать на что способно новое, 9 поколение консолей и современные ПК.

Для нас Unreal Engine 5 — это фундамент для игр нового поколения.

Мы очень взволнованы тем, что у нас есть возможность поработать с Unreal Engine 5 уже сейчас.

Возможность проверить наши силы.

Дать необходимый фидбэк Epic и работать с ними так тесно, насколько это возможно.

Убедится в том, что UE5 готов и оптимизирован для создания AAA проектов под 9 поколение консолей.

Кейт Рейнер — Studio Techical Director

Alpha Point

ALPHA POINT: техническое демо на Unreal Engine 5

Всем привет, меня зовут Колин Пенти (Colin Penty) и я Techincal Art Director в The Coallition, сегодня я хочу представить вам наше новое демо Alpha Point для Unreal Engine 5 и рассказать о его создании.

Для начала, поговорим о целях которые мы преследовали, работая над данным демо.

Наши основные цели:

  • Определиться с подходами и рабочими процессами для моделирования высоко-полигональных объектов и их текстурирования.
  • Реализовать новый базовый материал и новый пайплайн для текстур.
  • Модифицировать движок и оценить его потенциал к изменению. Для этого мы внесли в демку два важных изменения:
  • ○ Добавили Convolution Bloom и оптимизировали его для Xbox.
  • ○ Добавили VFX G-Buffer с обратным считыванием Niagara
  • Оценить рабочий процесс с использованием Megascans.
  • Оценить Nanite и Lumen и UE5 в целом.
  • Измерить/оценить производительность и потребление памяти для Xbox Series X/S
  • Выявить любые имеющиеся проблемы Unreal Engine 5 на Xbox Series X/S.

Предупреждение:

Все ассеты были созданы специально для Alpha Point Tech Test. Демо не имеет отношения ни к одной игре, находящейся в разработке. Изначально данное демо создавалось для просмотра внутри студии. Оно никогда не предназначалась для показа на GDC или YouTube. Это очень здорово, что теперь мы можем продемонстрировать нашу работу и поговорить о ней.

  • 90% ассетов были созданы командой The Coalition, остальные 10% это Мегасканы.
  • Демо было записано напрямую с Xbox Series X.
  • Демо не соответствует окончательным целевым показателям касательно частоты кадров.
  • Демо не соответствует окончательному входному и выходному разрешению (input or output resolutions).
«Надеюсь вам понравилось это видео» — Колин Пенти

Ранний этап разработки

ALPHA POINT: техническое демо на Unreal Engine 5

Здесь вы можете увидеть ранние наброски и различные изображения собранные нами для вдохновения. В целом, это некая смесь из древних руин и неизвестных технологий, которая оказалась для нас интересным решением. А привёл нас к этому наш старший художник Kesvick Allen.

ALPHA POINT: техническое демо на Unreal Engine 5

Это ранние изображения из Alpha Point. Здесь вы можете увидеть пример блокаута сцены (грейбокс), скульпт колонны в ZBrush. Затем идёт скульпт обелиска. Это всё очень простые наброски сделанные на ранних стадиях производства. Некоторые скульпты и освещение могут выглядеть «поломанными».

Вот так выглядел наш коридор где-то в середине продакшена:

ALPHA POINT: техническое демо на Unreal Engine 5

Технические характеристики

Для финальной версии этого демо был использован Unreal Engine 5 Early Access.

Alpha Point — это ролик кинематографического качества который работает в реальном времени с частотой кадров 30 FPS на XBOX Series X.

Вывод осуществляется в 4K с использованием Temporal Super Resolution (новая технология апскейла в UE5). В результате выполняется масштабирование внутреннего разрешения (internal resolution) с 1080p до 1440p.

В самой сцене более 100 миллионов треугольников.

Используются такие системы как Nanite, Lumen, Virtual Shadow Maps, Virtual Textures, TSR (Temporal Super Resolution), Convolution Bloom и некоторые другие новые технологии.

Наше путешествие в недра технологий

ALPHA POINT: техническое демо на Unreal Engine 5

В действительности, мы начали производство данного демо ещё на Unreal Engine 4. Мы знали что в скором времени перейдем на пятую версию Unreal и сможем по полной использовать высоко-полигональное моделирование. Так что мы начали процесс производства на UE4 ещё в октябре, а на UE5 мы перешли в конце ноября.

Интересный факт — данное демо работало на UE4 ЭКСТРЕМАЛЬНО медленно.

Практически все художники жаловались на тормоза. Всё это было результатом того, что в сцене были очень тяжелые меши. UE4 просто не рассчитан на подобную нагрузку. Так что переход на UE5 был поистине восхитительным событием. Во многом, благодаря технологии Nanite. Всё что у нас было, стало работать в редакторе намного лучше и более отзывчиво.

Мы закончили это демо в начале Февраля на раннем билде UE5, который представлял из себя pre-Early Access. В Мае мы обновили наше демо и перенесли его на Unreal Engine 5 Early Access. После этого, мы снова собрали статистику по производительности и памяти уже на обновленной версии. Поскольку мы уже знали, что поделимся проделанной работой и собранной статистикой, мы хотели быть уверенными в том что представляем максимально достоверные и свежие сведения о производительности.

Работа с высоко-полигональными моделями

ALPHA POINT: техническое демо на Unreal Engine 5

Моделирование всех этих высоко-полигональных объектов может занять много времени. Это звучит довольно очевидно и не является сюрпризом. Но это действительно так.

Требуется более тщательное, предварительное планирование. Повторное использование — это ключевое условие, при разработке подобных ассетов. Убедитесь что делаете всё максимально модульным в стиле «китбаш»

Качественный/хороший концепт имеет большое значение. Намного более важное значение, чем раньше. Чтобы предотвратить всевозможные переделки и доработки, у вас должно быть чёткое направление и представление что делать дальше.

Поскольку все детали вылеплены вручную, внимание к масштабу имеет решающее значение.

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

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

«Грубый скульпт» важен для согласования с командой и необходим прежде чем начать делать подробные и детализированный скульпт. Иными словами прежде чем делать финальный детализированный, скульпт, лучше сделать грубый, примитивный скульпт, определиться с базовыми формами, определиться с масштабом, добавить его в окружение, посмотреть на всё это с позиции игрока/наблюдателя.

Преодоление порога в 1 миллион треугольников в обычных DCC (Digital Content Creation) инструментах становится испытанием.

Некоторым инструментам действительно тяжело переваривать такие объёмы геометрии и я поговорю об это более подробно.

Проблемы связанные с «тяжёлыми» моделями

Среднее количество треугольников в наших ассетах: от 300 000 до 500 000 треугольников. Эти значения являются комфортными для наших художников. Это в 15 раз больше чем среднестатистический ассет из Gears 5. Так что это значительное улучшение.

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

DCC при этом сильно замедляется. Это основная причина почему наши художники старались не заходить за пределы в 1 миллион.

Редактирование UV было одной из самых больших проблем при поликаунте в 1 миллион треугольников.

Операция Импорта и повторного импорт в UE5 была немного медленной.

ALPHA POINT: техническое демо на Unreal Engine 5

Также, нами было протестировано рисование 8K текстур. При таком сценарии использования Substance Painter начинал работать значительно медленнее. В итоге, художники предпочли придерживаться 4K разрешения.

Nanite не поддерживает такие вещи как translucency, masked materials, spline tool, pixel depth offset, vertex colors on instances, или world position offset.

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

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

Растительность и виноградные лозы

ALPHA POINT: техническое демо на Unreal Engine 5

Nanite в настоящее время не работает с полупрозрачными материалами или масками. Если вы можете построить использование непрозрачного материала, который лучше всего.

Как результат этих ограничений, растительность в сцене, в основном, не нанитовая,

Преимущество отказа от использования Nanite для растительности заключается в том, что мы можем использовать смешивание/наложение растительности на основе PDO.

Виноградные лозы были созданы с помощью Blender Ivy Gen и являются Nanite-геометрией.

Декали

Использование декалей типа parallax occlusion Это позволило нам исправить швы с поломанной геометрией, а также добавить дополнительные детали.

Те же преимущества, что и у нашего базового материала:

• Tinting

• Detail Maps

• Macro Maps

• POM

Мы быстро пришли к тому, что наличие надёжного подхода к работе с декалями очень важно для Nanite-ассетов, учитывая ограничения по рисованию материалов, поскольку такие вещи как vertex paint не поддерживаются.

Настройка материала

ALPHA POINT: техническое демо на Unreal Engine 5

Специально для этого демо мы создали новый Base Material. Здесь нет ничего революционного, но кому-то это может показаться интересным:

Допускается использование до 4 слоёв (material layer). Есть возможность менять режим наложения (blend mode) для каждого слоя. Всё это обернуто в Material Function. Мы используем чёткие соглашения по именованию и гайдлайны. Технические художник организуют всё в функции вне зависимости от их размера и сложности. У нас очень подробная и хорошо расписанная документация касательно создания материалов. На изображении выше вы можете увидеть смесь из функций микро- , макро- и послойной детализации.

Пайплайн для текстур

ALPHA POINT: техническое демо на Unreal Engine 5

Мы создали новый пайплайн для текстур, который называется TC Texture Toolkit. Вы можете увидеть как выглядит интерфейс этой утилиты на изображении выше.

Он позволяет легко управлять текстурами и материалами используя Substance, Megascans, Unreal. Он позволяет настраивать текстурные референсы и мета-данные, таких как теги и категории. Всё это автоматизировано для работы с Perforce.

Экспорт в Unreal происходит c соответствующей упаковкой каналов. В текстуру упаковывается Normal, Roughness и Metalness как в Gears 5. Для сохранения текстурной памяти мы упаковываем всё это в формат BC7. Это реально помогло нам в Gears 5 и мы продолжаем это делать и здесь. Также, есть возможность автоматического импорта в Unreal.

Генерация текстур

<i>Ассет слева — это наш материал. Ассет справа — Megascans.</i>
Ассет слева — это наш материал. Ассет справа — Megascans.

Ассеты горной породы по большей части имеют общие карты colour/normal/roughness.

Уникальные карты AO/Cavity/Curvature для каждого ассета запекаются с помощью Marmoset Toolbag 4.

Скорость запекания была значительно увеличена с помощью RTX карт.

Запекание происходит с использованием высоко-полигональных ассетов мегасканов. Мы можем создавать базовые текстуры в Substance, Photoshop или Mixer. Для достижения полного контроля и однородности мы всегда заменяли материалы Megascans нашим собственным. Большинство ассетов в сцене это не мегасканы

Наложение деталей

ALPHA POINT: техническое демо на Unreal Engine 5

В Gears 5 мы добавили карты детализации (detail maps) для большинства ассетов и это было значительным отличием, по сравнению с Gears 4. Разрабатывая наш следующий пайплайн мы хотели идти дальше, в том же самом направлении. Так что мы добавили ещё больше деталей.

Мы добавили Detail Normal, Detail Diffuse, и Detail Roughness в одну текстуру BC 7 (для экономии памяти). Для сравнения, в Gears 5 95% карт детализации это Detail Normals.

Мы использовали кривую цвета (Colour curve) в Базовом материале, чтобы при необходимости придать оттенок диффузной карте (Grayscale Diffuse map. Таким образом мы могли быстро менять цвет этого канала, хранящего информацию в оттенках серого.

Мы добавили возможность маскирования карт детализации (detail map masking). Это позволяет использовать несколько карт детализации на материал. Если у нас есть к примеру металл и дерево в одном материале, у них могут быть разные карты детализации. Это довольно затратно с тоочки зрения производительности. Так что мы смотрим в сторону поддержки массива текстур (texture array) — нам нужен функционал мип-генерации, чтобы перейти к массивам текстур.

Функция рисования объемного тумана

ALPHA POINT: техническое демо на Unreal Engine 5

Изначально система Paintable Volume Fog была разработана для Gears 5. Об этом рассказывали на Unreal Dev Days 2019.

Система построена на технологии пересекающихся карт высот (intersecting heightmap), такой же как Gears 5, но с большим количеством улучшений.

Кистями могут быть произвольные меши, т.е. любой меш может быть кистью.

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

Теперь у нас есть функция Fog Shadowing (Затенение тумана) так что туман может затенять сам себя и отбрасывать тень на землю. Так же мы улучшили эффекты шума и распада.

Здесь вы можете увидеть небольшой пример того как это работает в редакторе.

Эту систему написал James Sharp.

Здесь вы так же можете увидеть наличие меша который покрывает землю и создаёт некое подобие нижнего тумана. Благодаря мощностям XBOX у нас появилась возможность сделать текстуру тумана более детализированной.

Наслоение материалов

ALPHA POINT: техническое демо на Unreal Engine 5

Из-за чрезвычайно большого количества вершин, мы больше не можем смешивать слои материалов с помощью vertex paint (и Nanite не поддерживает это). Даже если Nanite разрешит это делать или у вас будет возможность раскрашивать инстансы, мы всё равно не сможем это использовать поскольку это мгновенно раздует наши бюджеты потребления памяти.

Пришлось полагаться на множество других методов для детализации слоев, чтобы заменить подход с использование Vertex Color. Чтобы вы понимали мы использовали данный подход последние 10-20 лет. Так что пришлось избавиться от этой привычки.

Мы использовали Material UP-vector — это отличный (попиксельный) способ покрыть песком наши поверхности или что-то ещё.

Кроме того мы использовали много декалей.

Мы использовали множество мелких обломков (debris) на основе Nanite китбашей.

Ещё мы использовали смешивание не-nanite мешей при помощи Pixel Depth Offset.

Система Volumetric Material Layer Painting) (в разработке)

Рисование объёмными слоями материалов<br />
Рисование объёмными слоями материалов

Изначально Ryan DowlingSoka решил протестировать как будет выглядеть рисование материалами на Nanite.

Здесь используется подход, основанный на технологии пересекающихся карт высот (которую мы использовали для рисования объёмного тумана).

Этот подход позволяет художникам рисовать слои материалов прямо в редакторе и решает одну из наших самых больших проблем.

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

В настоящее время у нас есть проблемы с производительностью — использование каналов стоит примерно 30% GPU, но я подозреваю, что здесь есть некоторые возможности для оптимизации связанные с ALU.

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

Виртуальные текстуры

ALPHA POINT: техническое демо на Unreal Engine 5

В основном, в данной сцене используются текстуры с разрешением 4K.

Разрешение 8K не даёт существенной разницы в качестве для наших ассетов. Мы настроили все наши текстурные семплеры для работы с Streaming Virtual Textures.

Это позволяет использовать текстуры с более высоким разрешением, не раздувая бюджет на текстуры из-за разделения текстур на тайлы (tiles). В любом случае даже 4K разрешение, является для нас высоким. Для сравнения в Gears 5 для важных ассетов использовались 2K текстуры.

Виртуальные Текстуры обходятся дороже традиционных текстур (две выборки текстур (texture fetches) и немного математики) По этому, чтобы снизить затраты, при семплировании текстур мы повторно используем UV.

Ниже приведены результаты профилирования:

GPU XSX: VirtualTextureFeedbackCopy: 0.032ms

CPU XSX: 0.205ms

Текстурная память

ALPHA POINT: техническое демо на Unreal Engine 5

Виртуальное текстурирование:

  • Total VT Physical Memory: 379mb
  • File Cache Size: 128mb
  • Total CPU Upload Memory: 9mb
  • Total Disk Size: 1.5gb
  • Streaming Texture Pool: 550.68mb

Пул стриминга:

  • Pool size: 1gb (должен стать меньше)
  • Required Pool: 131.25mb
  • Non-streaming Mips: 430.14mb

Проблемы с тайлингом стен и пола

В процессе работы мы столкнулись с проблемой тайлинга поверхностей стен и пол.

В Gears 5 мы использовали бесшовную карту высот, которую мы могли спокойно применить к любому произвольному мешу на земле, чтобы добиться нужного вида. Плюсы такого подхода:

  • Простота повторения, так как она основана на материале.
  • Нет зависимости от геометрии. Поверхность земли может быть практически любой формы.

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

Но нам по по прежнему нужно было как-то детализировать поверхности типа пола и стен.

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

Нам требовалась возможность тайлить детализированные меши на подобных поверхностях без каких-либо швов.

Блюпринт для тайлинга мешей

ALPHA POINT: техническое демо на Unreal Engine 5

Мы создали BP, который позволил нам тайлить меши. По сути, происходит обработка меша как при тайлинге карты высот.

BP также может спавнить не нанитовые меши грязи и жидкости, которыми мы можем рисовать World Position Offset используя цвета вершин.

• У этих мешей включен PDO (Pixel Depth Offset), чтобы они смешивались с тайлящайся нанитовой основной.

• Отличная замена Vertex Color Painting. Имеет возможность спавнить геометрию типа обломков и т.д.

Это экономит время художника, т.к. рисовать на земле не нужно.

Примечание: Epic упоминала, что в будущем, намерена внедрить поддержку какой-то карты смещения (displacement map) для работы с Nanite, которая решит большинство этих проблем. И возможно подобный блюпринт больше не понадобится.

Temporal Super Resolution (400% Zoom)

Новый апскейлер даёт удивительные результаты! И он действительно превосходит всё то что мы использовали в Gears 5 на UE4. Из недостатков, он достаточно требователен.

Переменная «стоимости» меняется в зависимости от входного разрешения.

• 2,7ms апскейл из 1440p в 4K

• 2.23ms апскейл из 10BOp в 4K

• 0.966ms апскейлер Gen 4

В демо есть действительно заметные улучшения вокруг травинок. В TSR версии даже песок выглядит более детализированным.

Выявлены особые возможности по оптимизации Xbox для команды Xbox.

В целом гораздо более четкое изображение по сравнению со старым апскейлером, Epic рекомендует использовать 1080p и позволить TSR апсемлинг до 4K.

Качество Lumen

В сцене используется полностью реалтаймовое освещение:

  • Виртуальные карты теней работают в реальном времени.
  • Lumen Indirect (освещение переотраженным светом)
  • Lumen Reflections (отражения)

Визуальное качество Lumen в целом довольно высокое. Качество жизни художника значительно возросло без UV, уровней детализации и запекания света. Ситуации, с которыми мы сталкивались при работе над Gears 5, когда свет запёкся неправильно или его нужно проверить или переделать, полностью исчезли благодаря Lumen. Это просто феноменально.

Некоторые болевые точки Lumen связанные с визуалом:

  • Полугрубые отражения могут показаться слегка шумными.
  • Пасс Lumen Screen Traces не учитывает значение интенсивности (Indirect Lighting Intensity), которое может привести к некоторой косвенной «зависимости от экрана», если этот параметр слишком высок. Думаю в скором времени Epic избавятся от этого параметра, чтобы исключить возникновение подобных ситуаций.
  • Иногда вы видите, как Lumen пересчитывает кадры.

Производительность Lumen

Здесь вы видите изменения качества Lumen от 0,25 до 1 + TC Custom

TC Custom — Lumen Сustom Console Variable Tuning

В конфиге TC Custom качество глобального освещения и отражений Lumen (Gl Quality и Reflections) установлено на 0.25 и используются следующие консольные переменные:

r.Lumen.TranslucencyVolume.GridPixelSize 64 r.Lumen.ScreenProbeGather.DownSampleFactor 64 r.Lumen.ScreenProbeGather.ScreenSpaceBentNormal 0

В целом производительность Lumen ещё предстоит улучшить. Epic знает об этом и в будущем будет уделять больше внимания производительности Lumen при 60fps. Снижение Lumen Reflection Quality до 0,25 вполне безопасно. Понижение значения Lumen Gl Quality ниже 1 может привести к появлению тонких временных мерцаний или ореолов (гостинг).

ALPHA POINT: техническое демо на Unreal Engine 5

Отражения Lumen

В визуальном плане, иметь уровень с отражениями работающими в реальном времени — это фантастика.

Микро самоотражения (microselfreflection) реально предотвращают утечки зеркальных отражений. Больше не нужно использовать текстуры bent norrnal из Gears 5 или RCA для наших персонажей.

Само собой нам больше не нужно размещать зонды для захвата отражений..

Программная версия Lumen строит отражения на основе репрезентации мешей полученных с помощью Signed Distance Fields. Получить отражения на основе реальных треугольников в сцене можно с использованием аппаратного рейтрейсинга (HW Raytracing).

Для дополнительных деталей (частицы в этой воде) используется трассировка в экранной области (screen trace).

Производительность меняется в зависимости от размера на экране и шероховатости материала.

Roughress O — самый быстрый вариант. Half-Roughress более медленный Roughress 1 в большинстве случаев такой же медленный как и Half-Roughress

Усредненная стоимость для сцены с водой 0.6ms

Производительность Lumen Reflection меняется в зависимости от того сколько пикселей на экране отражают информацию и уровня их шероховатости.

Lumen Reflection Quality 0.25 соответствует буферу половинного разрешения.

Качество Виртуальных карт теней

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

Они необходимы чтобы Nanite работал как следует.

Требуется Nanite-ассеты.Присутствует некоторая поддержка и не-нанитовых ассетов (на раннем этапе разработки).

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

Производительность Виртуальных карт теней

ALPHA POINT: техническое демо на Unreal Engine 5

Первоначальные результаты производительности немного беспокоили нас:

  • Virtual Shadow Maps требовали 6.3ms при разрешении 1080p

После оценки и анализа в PIX, мы заметили на земле много больших низко-полигональных мешей которым было разрешено отбрасывать тени. В том числе песок и вода. После исключения всех ненужных ассетов из процесса формирования/отбрасывания теней, стоимость VSM упала до 3ms при разрешении 1080p

Вывод: размер объекта отбрасывающего тень может повлиять на производительность намного сильнее, чем количество его вершин. Особенно если это обычный объект (не-нанитовый). Это наихудший сценарий для VSM в плане производительности.

Производительность Nanite

ALPHA POINT: техническое демо на Unreal Engine 5

Производительность системы Ninite оказалась довольно стабильной и однородной, вне зависимости от того, что происходит на экране.

Производительность на XSX при 1080p:

  • Nanite: CullRasterize: 0.871ms
  • Nanite: EmitDepthTargets: -144ms
  • Nanite: Base Pass: 1.01ms
  • Nanite: Readback: 0.07ms
  • Total: 2.095ms

В качестве теста, посмотрим на обычную стену и Nanite будет потреблять 2.0ms

Non-Nanite base pass и pre-pass: 1,185ms

  • Vegetation
  • Blended PDO water/sand
  • Character
ALPHA POINT: техническое демо на Unreal Engine 5

Сложность и разнообразие материала, вероятно, наилучший способ контролировать «стоимость» нанитов для сцены. Но с этим нужно провести больше тестов. Всё, что можно сделать с помощью нанитов, должно быть ими.

Насекомые с помощью системы NIAGRA

Нам очень понравилось как выглядят Niagara-насекомые в ролике который сделали Epic для презентации UE5. И мы решили добавить их в своё демо. Насекомые были сгенерированы с помощью системы Niagara. Коллизии и спавн частиц работают на GPU с помощью SDF (Signed Distance Fields)

  • 6655 инструкций
  • Примерно 500 части на эмиттер
  • Стоимость 0.134ms на XSX для GPU Sim.
  • Стоимость Base Pass с насекомыми 0.2ms.
ALPHA POINT: техническое демо на Unreal Engine 5

Кастомный VFX буфер

Мы добавили новый G-Buffer для Base Pass. Материалы могут записывать кастомные VFX данные в G-Buffer и использовать их в Niagara. Можно сказать что UE5 имеет отличный потенциал к расширению так же как и UE4.

Добавление Convolution Bloom на консоли

ALPHA POINT: техническое демо на Unreal Engine 5

Convolution Bloom не является фичей UE5.

  • Первоначально Convolution Bloom был добавлен Epic Games в UE 4.16 как неигровая фича из-за ресурсоёмкости.
  • The Coalition выполнила первый раунд оптимизации
  • В настоящее время рендеринг происходит в четвертном (1/25) разрешением.
  • Рендеринг выполняется после апскейла.
  • В сочетании с мощью Xbox Series X производительность Convolution Bloom была оптимизирована с 7ms+ до 0,9ms, а дополнительные оптимизации реализованы с помощью TC.

Очень надеюсь что мы сможем использовать его в наших будущих проектах.

UI виджет для контроля производительности

ALPHA POINT: техническое демо на Unreal Engine 5
  • Мы создали FPS Widget UI который позволяет мгновенно получить информацию о состоянии FPS. Собирает статистику и делает отчёты в реальном времени. В Gears 5 мы получали отчёты постфактум.
  • Real-time 0/0 @ 30, 0/0 @ 45, 0/0 @ 60
  • Average FPS и MS.

В будущем планируется добавить функцию сброса среднего значения FPS и добавить статистику по VFX и Character Pwan.

Потребление памяти

  • Static Mesh Total Memory 61mb (44 уникальных объекта)
  • Nanite Streaming Pool Size 512mb (стандартный размер)
  • Nanite Total 1077.62mb

Краткий обзор производительности XBOX SERIES X

ALPHA POINT: техническое демо на Unreal Engine 5

Наша цель 60FPS при 50% внутреннем разрешении (или выше) с апскейлом (Temporal Super Resolution) до 4K.

Со всеми включенными next-gen функциями, Lumen (высокое качество) и Convolution Bloom, на XBOX SERIES X мы имеем следующую производительность:

  • Средний FPS: 46FPS
  • Среднее время кадра: 21ms
  • GPU: 21ms
  • Draw Thread 13ms в простое, 19ms при движении камеры (Development mode)
  • Game Thread 7.5ms (Development mode)

Наиболее требовательные системы: Lumen, Virtual Shadow Maps, Temporal Super Resolution, Nanite

Мы не получили 60FPS, но мы на пути к этому. И конечно же мы работаем с Epic над этим.

Уровень производительности XBOX SERIES S

  • Целевое выходное разрешение 1440p или 1080p при 60FPS.
  • Входное разрешение (до апскейла) подлежит обсуждению.
  • Технология Temporal Super Resolution очень полезна при использовании Xbox Series S. Необходимо устранить временное мерцанием при более низких разрешениях.
  • В данный момент внутреннее разрешение Xbox Series S слишком низкое, чтобы говорить о паритете производительности с Series X.
  • Virtual Shadow Maps на Series S работаю довольно медленно, потенциально из-за проблем с HZB.
  • Производительность CPU не вызывает беспокойств.
  • Требуются дальнейшие оптимизации под GPU.

Уроки которые мы извлекли при работе над Alpha Point

ALPHA POINT: техническое демо на Unreal Engine 5
  • Движок Unreal Engine 5 достаточно стабилен и подходит для внедрения в производство.
  • Отлично работает на Xbox Series X/S.
  • Нам нравится предсказуемая производительность Nanite независимо от загрузки сцены. Это технология которая меняет правила игры. Одновременно с этим он привносит серьёзные изменения рабочего процесса в области создания контента под UE5.
  • Самым узким местом для создания Nanite-ассетов с миллионами треугольников, являются приложения для разработки цифрового контента и их текущий инструментарий.
  • Lumen даёт прекрасные результаты в режиме реального времени, несмотря на это Epic Games предстоит ещё много работы над производительностью основных систем.
  • Виртуальные Карты Теней (VSM) создают удивительные тени, подобные тем, что мы получаем с помощью трассировки лучей. Возникают проблемы с производительностью при большом количестве объектов отбрасывающих тени и нескольких источниках света.
  • Подходы к созданию контента так же важны, как и технологии.
  • Изначально, создание ассетов для Nanite потребует много времени, но есть много потенциальных возможностей для ускорения/автоматизации рабочих процессов.
  • Нужно следить за разрешением и потреблением памяти у Xbox Series S — чтобы быть уверенными в том, что мы не сдали позиции.
  • Чтобы получить стабильные 60FPS с TSR, требуется оптимизировать работу GPU с функциями UE5 примерно на 33%,
  • Unreal Engine 5 действительно раскрывает потенциал художников и позволяет нам создавать невероятно детализированные миры.

Демонстрация персонажа

Характеристики персонажа:

  • Лицевая топология в 4 раза выше чем в Gears 5
  • Топология тела в 3 раза выше чем в Gears 5
  • Топология растительности в 250 раз выше чем в Gears

Количество треугольников:

  • Волосы: 3.25 миллионов треугольников
  • Борода: 240,000 треугольников
  • Брови: 11,000 треугольников
  • Ресницы: 3500 треугольников
  • Лицевой пушок: 130,000 треугольников
  • Тело: 160,000 треугольников
  • Лицо: 31,000 треугольников

Создание персонажа

ALPHA POINT: техническое демо на Unreal Engine 5
  • Мы использовали MetaHumans для создания глаз и зубов.
  • Мы использовали MetaHumans для топологии лица.
  • Мы использовали материалы MetaHumans.
  • Для достижения полного контроля лучше моделировать лицо в DCC.
  • Мы использовали множество карт детализации и шейдеров ткани.
  • Скульптинг выполнен в ZBrush
  • Использован кастомный пайплайн из Substance Painter и Unreal
  • 4K Texture Maps из Substance Source и Megascans. Тестировать текстуры в разрешении 8k не было необходимости.
  • Maya XGen и Unreal Integration
  • Alembic для всех ассетов типа groom.

Производительность

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

  • Необходимо добавить LODирование для пуха на лице. Должна быть возможность снижать или отключать его на расстоянии.
  • Команда r.hairstrands.skyAO 0 сохранила нам 2.5ms
ALPHA POINT: техническое демо на Unreal Engine 5

GEN 4 против GEN 5

ALPHA POINT: техническое демо на Unreal Engine 5
  • Плотность геометрии вокруг глаз и бровей
  • Брови: грумминг против стандартных плашек
  • В Gears 4 для бровей использовалась обычная текстура, а не плашки)
  • Детализация шейдера глаз — упреждающий рендеринг против отложенного.
  • Детализация пор: улучшенное наложение деталей и текстуры с более высоким разрешением.
  • Шейдер кожи с Burley SSSSS против обычного SSSSS (sub-surface scattering skin shader)

Выводы:

  • В целом, сумма всех дополнительных визуальных подсистем в сочетании с мощью Xbox Series X создаёт заметный визуальный скачок по сравнению с предыдущим поколением игр.
  • Использование гибридных подходов к работе даёт наилучшие результаты для достижения необходимого уровня качества:
  • Megascans (смешивание геометрии и сведение материалов с помощью DCC/Substance)
  • MetaHumans (используется для генерации определенных компонентов головы + использование базовых материалов)
  • TSR даёт потрясающие результаты даже при более низком разрешении, что позволяет нам по полной нагрузить GPU Xbox Series и использовать полный набор функций UE5.
  • Текущее поколение консолей в сочетании с Unreal Engine 5 позволит полностью раскрыть наш потенциал.
  • Игры UE5 на Xbox Series X и S будут выглядеть невероятно.

Бонус: The Cavern Cinematic Test

Благодарности

Благодарим Epic Games за оказанную поддержку и информацию которая позволила сделать эту презентацию лучше.

Сотрудник The Coalition принимавшие участие в работе на Alpha Point.

Keswick Allen, Ryan DowlingSoka, Anthony Marraffa, James Sharpe, Andy Koo, Greg Mitchell, Aryan Hanbeck, Mike Perzel, Akio Kimoto, Mike Marraffa, Joey Kutzer, Zachariah Scott, Greg Juby, Stu Maxwell, Stef Velzeboer, Aeva Palecek, Christopher Wallis, Anne Hall, David Coleman, Bruno Melo De Souza, Pierre-Olivier Levesque, Yann Dory, Brad Sweder, Erin Olorenshaw.

Текст перевёл и подготовил: Константин Пономарёв

12K12K показов
1.9K1.9K открытий
11 репост
Начать дискуссию