
В грядущем крупном обновлении мы представим вам обновлённую трассировку лучей и другие графические улучшения!
Трассировка лучей на консолях
XBOX Series X, PlayStation 5 и PlayStation 5 Pro получат новый пресет трассировки лучей. Эти пресеты нацелены на 30 кадров в секунду с динамическим разрешением для игроков, которые хотят получить опыт игры с максимально близким к предельному качеству картинки. Мы приложили немало усилий, чтобы снизить требования трассировки лучей к памяти, чтобы уложиться в память консолей, и с некоторыми компромиссами нам это удалось.
- XBOX Series X, PS5: трассировка теней от солнца, окружающего затенения (ambient occlusion) и отражений, но пока без объектов в BVH.
- PS5 Pro: трассировка теней от солнца и динамических источников света, окружающего затенения и отражений
XBOX Series S – самая слабая из консолей текущего поколения, и, к сожалению, у неё недостаточно памяти даже без учёта добавления солдат в BVH, поэтому для этой консоли пресет трассировки лучей выпущен не будет.
Однако PS5 Pro и её более мощный в сравнении с обычной версией консоли GPU (видеопроцессор) позволяют не только включить трассировку динамических источников света, но и в большинстве случаев работать с разрешением, близким к нативному 4K.
Глобальное разрешение с трассировкой пути
Мы выпускаем новый эффект для любителей трассировки лучей на ПК: глобальное разрешение с трассировкой пути, сокращённо PTGI. PTGI призван обеспечить физически корректное окружающее освещение для всех непрозрачных объектов на экране. Это трассировка пути, то есть лучи рекурсивно отражаются в сцене до 3 раз для расчёта непрямого освещения – например, поверхность, освещённая солнцем, также может подсвечивать то, что находится перед ней и отвёрнуто от солнца.
Подобное распространение света уже заложено в нашей реализации глобального разрешения, однако она опирается на расписанное поле расстояний для трассировки, которое не способно точно передать все детали геометрии сцены. Высококачественное глобальное разрешение также использует трассировку лучей в экранном пространстве для удалённых пикселей, но это ещё более ограниченный источник информации. PTGI обходит эту проблему, имея доступ к полной сцене через BVH (иерархию ограничивающих объёмов).
Глобальное разрешение с трассировкой пути выключено
Глобальное разрешение с трассировкой пути включено
PTGI выдаёт довольно шумный сигнал из-за природы непрямого окружающего освещения, а трассировка нескольких лучей на каждый пиксель каждого кадра значительно снизила бы производительность. Но DLSS Ray Reconstruction уже давно поддерживается в Enlisted, и эта технология способна обработать этот шумный сигнал, выдавая изображение с высококачественным окружающим освещением. Для включения PTGI требуется DLSS Ray Reconstruction.
Из-за рекурсивной природы трассировки пути эта функция изначально предназначалась для топовых GPU, однако существуют несколько приёмов для снижения нагрузки на производительность:
- Лучший способ снизить затраты на трассировку лучей – трассировать меньше лучей. С DLSS RR мы можем использовать шахматный рендеринг (checkerboard rendering) для PTGI, что снижает нагрузку на производительность вдвое, а чтобы компенсировать потерю яркости от того, что половина пикселей остаётся чёрной, мы просто умножаем результат трассированных пикселей на 2.
Полнокадровая трассировка:

Трассировка с половинной частотой по шахматному паттерну:

(Второе изображение выглядит белым, потому что значения больше 1 обрезаются при выводе на монитор.)
-
Другая существенная оптимизация производительности – это раннее прекращение трассировки методом Монте-Карло. Во время трассировки нам нужно отслеживать вклад луча. Изначально он равен 1, и чем больше отражений происходит, тем меньше он становится, поскольку при каждом отскоке объектом отражается лишь часть света. Мы можем опереться на теорию вероятностей, чтобы ускорить этот процесс, сохранив при этом тот же математически ожидаемый результат. Зададим вероятность «выживания» луча как максимум из вкладов по отдельным цветовым каналам. Генерируется случайное число от 0 до 1: если оно превышает вероятность выживания, луч отбрасывается; если луч «выживает», его вклад увеличивается на 1/вероятность выживания. Таким образом мы тратим значительно меньше времени на трассировку тусклых лучей, не теряя при этом света, ведь простое уменьшение числа отскоков лишь делает изображение темнее.
-
Мы перенесли оптимизацию с ресемплингом в экранном пространстве из трассировки отражений. Поскольку предыдущий кадр уже был корректно освещён с учётом глобального разрешения, мы можем использовать цвет из него, если точка попадания луча находится на экране. Это не только избавляет от необходимости заново вычислять освещение поверхности, но и позволяет прервать трассировку пути в этой точке, так как предыдущий кадр тоже был освещён рекурсивно.
-
Глобальное разрешение с трассировкой пути представляет собой низкочастотное фоновое освещение, поэтому вы не сможете разглядеть точные детали трассируемых сцен в отличие от трассировки отражений, где некоторые поверхности являются зеркальными. Это позволяет значительно упростить шейдинг: мы можем сэмплировать мип-уровни материалов более низкого качества и упростить шейдинг, применяя только прямое освещение.
-
Поскольку глобальное разрешение с трассировкой пути рассчитывается по полной иерархии ограничивающих объёмов, он изначально включает в себя затенение окружения. Затенение окружения обычно служит способом вернуть детали, теряющиеся при реализации глобального разрешения, но поскольку глобальное разрешение с трассировкой пути делает это нативно, необходимости в нём нет. При включённом глобальном разрешении с трассировкой пути затенение рассеянного освещения с помощью трассировки лучей отключается – это также отражено в графических настройках.
И, разумеется, эффекты тоже трассируются, так что, например, огнемёты тоже являются источниками света.
Глобальное разрешение с трассировкой пути без эффектов
Глобальное разрешение с трассировкой пути с эффектами
Чтобы трассировка эффектов оставалась быстрой, PTGI трассирует их только на первом отскоке и принимает только первые 4 попадания. Взяв эту оптимизацию за основу, можно было бы также ускорить шероховатые отражения. Лужи и тому подобное по-прежнему будут трассировать эффекты в полном качестве, однако на очень шероховатых поверхностях мы также можем ограничиться первыми 4 попаданиями, что значительно снижает пиковую нагрузку на производительность, вызванную эффектами, при минимальной визуальной разнице.
Микрокарты непрозрачности
Микрокарты непрозрачности – это новая оптимизационная функция, заменяющая традиционные any-hit шейдеры.
Трассировка геометрии с альфа-тестированием может обходиться особенно дорого, поскольку каждый раз, когда аппаратное обеспечение трассировки лучей находит потенциальное попадание на объект с альфа-тестированием, оно должно вызвать программируемый any-hit шейдер, который может отбросить это попадание, после чего трассировка продолжается. Это становится особенно затратным в лесах, где ветви деревьев выполнены с использованием текстур альфа-выреза. Чтобы ограничить нагрузку на производительность, мы ранее устанавливали жёсткий лимит на количество вызовов any-hit шейдера, и после достижения этого лимита последующие попадания принимались как непрозрачные без выполнения дальнейших альфа-тестов.
Эмпирическим путём мы установили, что оптимальное значение – 10 вызовов на луч, что даёт хороший компромисс между визуальным качеством и производительностью.
Микрокарты непрозрачности предлагают более эффективное решение. При построении нижних уровней структур ускорения мы также добавляем дополнительные данные, которые подразделяют треугольники меша и сопоставляют каждый крошечный треугольник с одним битом, хранящим информацию о том, прозрачен он или нет. Обращение к этой структуре ускорения можно выполнять без медленных вызовов any-hit шейдера, так что даже при всех оптимизациях, которые мы внесли в any-hit шейдеры, микрокарты непрозрачности позволяют значительно ускорить проходы трассировки лучей в лесах и подобных сценах.
Вид микрокарт непрозрачности в PIX: цветной ствол дерева не подвергается альфа-тестированию, а листья – да, и все чёрные участки отбрасываются во время трассировки:

Это отладочное представление одного из множества треугольников дерева. Внутренняя жёлтая область – это наложенная альфа-текстура; любой микротреугольник, которого она касается, становится непрозрачным:

Это также улучшает визуальное качество. Ограничение в 10 вызовов any-hit шейдера значительно повышало производительность, но при этом приводило к ложным попаданиям, которых теперь полностью удалось избежать. Как видно на отладочном изображении, микрокарты непрозрачности дают довольно точное приближение к реализации с any-hit шейдером, которая напрямую сэмплирует альфа-текстуры.
Для наглядности вот пример объекта с альфа-тестированием, который хорошо изолирован.
Растеризация

Any-hit шейдер

Микрокарты непрозрачности

С учётом ограниченного перекрытия поверхностей с альфа-тестированием, версия с any-hit шейдером точнее соответствует конечной цели растеризации. Однако это по-настоящему заметно только в отладочном режиме отображения - при использовании для мягких теней и отражений результат выглядит очень похоже.
Но теперь давайте посмотрим на стресс-тест трассировки лучей: растительность.
Растеризация

Any-hit шейдер

Микрокарты непрозрачности

Кусты и деревья состоят из множества перекрывающихся альфа-тестируемых треугольников, и здесь оптимизация any-hit шейдера приводит к множеству ложных попаданий, из-за чего центр куста превращается в сплошной непрозрачный блок.
При этом использование памяти не меняется. Ещё одна оптимизация, которую мы применили к прозрачным объектам, – упрощённый буфер данных вершин, используемый только в any-hit шейдерах. Это позволяет загружать меньше данных на «горячем пути», хотя и создаёт дополнительные накладные расходы по памяти. С микрокартой непрозрачности подобные ухищрения не нужны, поэтому объём используемой памяти остаётся примерно таким же, как и раньше.
Any-hit шейдер в сцене
Микрокарта непрозрачности в сцене
Таким образом, микрокарта непрозрачности включается всегда, когда оборудование её поддерживает. На данный момент эта функция поддерживается только видеокартами NVIDIA серий RTX 40 и 50. Также не забудьте обновить драйверы, чтобы воспользоваться новыми возможностями.
Трассеры в BVH (иерархия ограничивающих объёмов)
Теперь трассирующие снаряды также отображаются в BVH (иерархии ограничивающих объёмов), поэтому вы сможете увидеть отражения ярких трассеров на воде или стекле.
Настройки трассировки лучей для ПК
Мы добавили новый пресет качества трассировки лучей для ПК. Это просто удобный способ переключиться на самые высокие рекомендуемые настройки игры для игроков с видеокартами, поддерживающими трассировку лучей. Он включает всё, что даёт настройка «Ультра», а также трассированные тени, фоновое затенение, отражения (непрозрачные объекты, стекло и вода) и дополнительные мелкие детали.
Устаревшие функции
Мы прекращаем поддержку низкого качества временного гиперразрешения и AMD FidelityFX Super Resolution 1.0. Благодаря этому векторы движения теперь всегда будут рендериться на настройках выше самых минимальных, что улучшает качество рендеринга для всех временных эффектов, а также избавляет нас от необходимости делать обходные решения из-за отсутствия векторов движения, которые в итоге всегда вносили новые артефакты.
Генерация кадров
В этом обновлении в игру будет добавлен AMD FSR Frame Generation который требует DirectX 12.
DLSS Frame Generation также получила обновление. Мы добавили поддержку генерации кадров с коэффициентом 5x и 6x. Также добавлена поддержка динамической генерации кадров, которая автоматически изменяет коэффициент генерации кадров, чтобы итоговая частота кадров оставалась стабильной. Требуется видеокарта NVIDIA серии RTX 50.










