Почему The Finals на UE5 работает лучше чем большинство игр на технологии от Эпик и при чем здесь NVIDIA? То что я нашел вас сильно удивит
Лично меня The Finals никогда особо не впечатляла в техническом плане. Признаюсь, я не так много играл в эту игру, поэтому, возможно, не разглядел всю красоту местных многоэтажек. Тем не менее, я решил разобраться, почему с производительностью в The Finals всё обстоит лучше, чем в среднем по рынку UE5.
То, что я обнаружил, вас удивит.
UE5 сам по себе — это всего лишь инструмент, и очевидно, что в умелых руках любой инструмент может выдавать отличный результат. Однако мне было интересно углубиться в детали и понять, как именно The Finals справляется с вопросом производительности.
TLDR: ответ оказался прост – The Finals использует ветку движка от NVIDIA в которой ключевые технологии от Epic либо не используются, либо заменены на аналоги от NVIDIA. Но давайте о всем по порядку.
Для начала, в чем ключевые отличия UE5 в The Finals от ванильного-UE5?
- В игре не используется Nanite – технология отрисовки геометрии высокого разрешения, в том числе и на консолях. От слова совсем.
- Как результат, в игре также не используются и Virtual Shadow Maps – технология расчета прямого освещения.
- Вместо Lumen используется менее точный, но более производительный RTXGI для расчета отраженного света.
Как видим, основные инновации UE5 в The Finals по просту не задействованы. Давайте теперь разберемся с каждым пунктом отдельно и сравним как они работают и какие у них есть альтернативы за пределами UE5.
Что такое Nanite и Virtual Shadow Maps
Nanite — это технология от Epic, предназначенная для так называемой виртуальной геометрии. Условно говоря, Nanite можно представить как ЛОДы «на стероидах». Эта технология позволяет разработчикам использовать модели с очень высоким геометрическим разрешением, а движок автоматически выбирает подходящий уровень детализации для каждой части модели. Цель — добиться примерно одного треугольника на пиксель в финальном изображении. Большее количество треугольников на пиксель не имеет смысла, но даже с таким подходом современные GPU могут испытывать трудности.
Одна из ключевых инноваций Nanite заключается в том, что он автоматически разбивает модель на части (кластеры, субдивизионы) и генерирует "ЛОДы" для каждой части отдельно, при этом избегая появления "трещин" (cracks). Ранее это была сложная задача, и ЛОДы приходилось создавать для всей модели сразу, но в Nanite эту проблему удалось решить. Epic Games потратили несколько лет на исследование этого метода. Если вам интересно, как он работает, рекомендую посмотреть видео от разработчиков технологии. Примечательно, что подход основан на теореме о раскраске графов.
Nanite также использует программный растеризатор, реализованный через собственный compute-shader, вместо аппаратного. Программный растеризатор — это, по сути, compute-shader, который обрабатывает данные сцены и вычисляет цвет для каждого пикселя, обходя стандартный графический конвейер (ROPs) и заменяя его на compute-конвейер.
Это делается для минимизации влияния overdraw (количество перерисовок пикселей), поскольку традиционно GPU растеризуют треугольники не попиксельно, а блоками по 2x2 или 4x4 фрагмента. Такой подход к растеризации блоками не очень эффективен при использовании одного треугольника на пиксель, поскольку каждый такой треугольник размером с пиксель требует отрисовки как минимум четырёх фрагментов вместо одного.
В общем и целом нанит это прорыв в том как отрисовывается геометрия для очень больших и детализированных сцен, но у него есть цена не равная нулю и не всегда оправданная особенно на не топовом железе вроде Steam Deck или консолей.
Виртуальные карты теней (Virtual Shadow Maps) - это технология расчета прямого света и теней, позволяющая эффективно обрабатывать сложные сцены с высокополигональными моделями. Эта технология требует поддержки Nanite для своей работы. Мы не будем подробно останавливаться на ней, но отметим, что альтернативных методов расчета прямого освещения существует великое множество.
Что такое Lumen и в чем отличие Lumen от RTXGI?
По сути, обе технологии решают задачу вычисления вторичного (отраженного) света с использованием проб и трассировки лучей, но их подходы различаются. Проблему расчета непрямого освещения можно объяснить на простом примере: представьте сцену с одним источником света. Чтобы определить его влияние на конкретную точку поверхности сцены, достаточно учитывать только этот единственный источник. Однако, если добавить расчет непрямого света, каждая точка на поверхности сцены превращается в источник света, поскольку она может отражать свет от основного источника. Это значительно усложняет задачу. Настолько, что между играми, где рассчитывался только прямой свет, и играми с расчетом непрямого света, прошло 20 лет прогресса в технологиях GPU и рендеринга.
Пробы — это небольшие невидимые сферы, которые размещаются по всей сцене особым образом для сбора информации о свете. Такой подход в современных играх позволяет избежать трассировки лучей для каждой точки поверхности, что значительно снижает вычислительную нагрузку на GPU. Этот метод используется для расчета глобального освещения от крупных источников света (например, солнца или неба), где обычно не требуется высокая точность.
В Lumen используется упрощённый двухуровневый подход, основанный на экранных и мировых пробах, которые накапливают свечение между кадрами. Мировые пробы предназначены для более эффективного сбора света от крупных источников, которые не требуют частого обновления. В свою очередь, экранные пробы помогают повысить точность расчётов для небольших источников света, таких как лампы, костры или факелы, которые можно обновлять чаще.
После обновления проб и репроекции экранных значений из предыдущих кадров, UE5 интерполирует эти данные, рассчитывая итоговые значения для каждого пикселя на каждой поверхности в кадре.
Пробы хранятся в виде атласов в текстурах GPU, что может занимать значительное количество памяти и пропускной способности (bandwidth). Из-за использования Lumen экранных проб, которые накапливают свет между кадрами, в играх на UE5 часто наблюдается эффект "гостинга" — артефакты, возникающие из-за неточных вычислений. Проблема мировых проб заключается в том, что свет иногда "протекает" из-за недостаточной плотности проб или их неудачного расположения.
Lumen позволяет использовать либо функции расстояний со знаком (SDF), либо иерархию объёмов (BVH) для трассировки лучей. Первый вариант применяется, когда целевая платформа не поддерживает аппаратное ускорение, например, на PS5 и XSX.
SDF использовался в графике очень давно, особенно в VFX еще до трассировки лучей для расчета освещения. SDF позволяет делать очень крутые трюки без полигонов.
В RTXGI также используются пробы, но только на уровне мира, что требует меньше вычислительных ресурсов и памяти, но одновременно снижает точность метода. Лумен и RTXGI различаются также во многих деталях реализации, но для более глубокого понимания лучше обратиться к соответствующим статьям и материалам с GDC.
RTXGI работает исключительно со структурой иерархии объемов для трассировки лучей и требует на практике аппаратной поддержки. Одним из ключевых отличий RTXGI от Lumen является то, что RTXGI в первую очередь ориентирован на расчет освещения, а не отражений. В качестве примера, в игре The Finals для расчета отражений используются обычные экранные отражения (SSR), а не RTXGI.
Где можно найти больше подробностей о технологиях в The Finals?
2. Видео от Digital Foundry:
Это все здорово, но что это все значит?
А суть поста в том что при всей своей инновационности у технологий UE5 есть альтернативы которые могут быть более оправданны для игр текущего поколения или игр где есть специфические требования или ситуации. The Finals как раз доказывает что с этим можно экспериментировать и всех технологий UE5 есть альтернативы которые лучше или хуже подходят для других ситуаций, вот лишь несколько примеров из того что сейчас актуально.
Глобальное освещение:
1) GI-1.0 – технология от AMD основанная на похожих с Lumen принципах двух-уровего кеша вычисляемого между кадрами.
2) Radiance Cascades – уже кидал пример. Этот метод используется в PoE2 и не требует интерполяции между кадрами.
3) Метод основанный на Surfels – похож на Lumen, но вместо проб используются сурфели – небольшие участки поверностей для накопления света. Используется в играх от EA.
4) Метод используемый в Tiny Glade. Подробностей к сожалению не знаю, но это тоже кастомный вариант подходов из Lumen который позволяет вычислять динамическое глобальное освещение даже на GTX 1060
5) SSGI – метод основанный только на экранных пробах.
Виртуальная геометрия:
Мешлеты и меш-шейдеры - используются во многих движках, например в Bevy.
Мешлеты в Alan Wake 2:
Если нашли ошибку – дайте знать в комментариях.
Вот такого бы больше здесь 😍👍,
а не всяких бомжей типо:
"поддержите/задонатьте, принимайте в семью"
поддержи, задонать, принимай в семью
Гиги за шаги
А ещё над насрать про технологии древних и показать скрин зеркала 20 летней давности, типа ты дохуя прохавал
Ну так, а ты что не пишешь такого?
что такоe TLRD
Too long read didn’t