Переход на VRS Tier 2 в Gears 5 и Gears Tactics увеличил производительность на 14%

Благодаря согласованной работе над ПК и Xbox с DirectX 12 Ultimate, The Coalition смогла с лёгкостью перенести их реализацию как на консоль, так и на ПК.

Реализация VRS Tier 2 работает на полном спектре устройств с поддержкой DirectX 12 Ultimate, от Xbox Series X|S до поддерживаемых карт AMD и NVIDIA на ПК.

Переход Gears 5 и Gears Tactics на VRS Tier 2

Variable rate shading (VRS) позволяет повысить производительность путём оптимизация шейдинга, снижая ресурсы, необходимые на расчёт несущественных пикселей, при этом выделяя ресурсы на важные области.

Основное различие между VRS Tier 1 и Tier 2 заключается в степени детализации. Для Tier1 нужно указать коэффициент шейдинга для каждой отрисовки. Tier 2 позволяет вместо этого указывать коэффициент шейдинга в текстуре пространства экрана.

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

Визуализация VRS Tier 1 в Gears Tactics. Цветные области обозначают использование более грубых степеней шейдинга.

Визуализация VRS Tier 1 в Gears Tactics. Цветные области обозначают использование более грубых степеней шейдинга.

Визуализация VRS Tier 2 в Gears Tactics. Цветные области обозначают использование более грубых степеней шейдинга.

Визуализация VRS Tier 2 в Gears Tactics. Цветные области обозначают использование более грубых степеней шейдинга.

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

Текстура генерируется путём запуска вычислительного шейдера Собеля для нахождения границ изображения в конечном буфере цвета сцены. Текстура VRS повторно проецируется для использования в следующем кадре как часть рескейл шейдера. Обнаружение границ выполняется по яркости sRGB цвета. Использование sRGB гарантирует, что края будут обнаружены на основе воспринимаемой разницы цветов. Настраиваемое пороговое значение передаётся шейдеру, который может регулировать, насколько агрессивным должно быть обнаружение границ, а также является основным регулятором, используемым для настройки различных параметров качества VRS на ПК.

Скриншот из DLC Gears 5 Hivebusters для Xbox Series X

Скриншот из DLC Gears 5 Hivebusters для Xbox Series X

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

  • Сниженная видимость из-за затемнения/слабого освещения.
  • Окклюзия из-за объёмного тумана.
  • Плотные полупрозрачные частицы (например, водопад).

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

Более грубый шейдинг в одних проходах более заметен, чем в других. Поэтому генерируется вторая консервативная VRS текстура. Она не добавляла заметных накладных расходов, потому что обе текстуры сгенерированы в одном шейдере обнаружения границ, но при вычислении коэффициента шейдинга для консервативной текстуры выполняется проверка по более консервативному пороговому значению.

Пропуск обнаружения краёв на границах VRS тайла

Спецификация указывает, что грубый шейдинг никогда не будет заходить за край VRS тайла. В результате можно пропустить обнаружение границ на внешних границах. При использовании тайла 8×8, к примеру, это уменьшает количество пикселей, требующих обнаружения границ, с 64 до 36.

Объединение генерации VRS текстуры, чтобы стать частью тональной карты

В первых итерациях команды Gears 5 обнаружение границ выполнялось как автономный вычислительный шейдер в конце постобработки. Однако при разрешении 4K это привело к ограничению полосы пропускания из-за необходимости считывать весь буфер цвета сцены. Перенос генерации VRS текстуры, чтобы она была частью тонального шейдера (последнего шейдера в постобработке), убрало лишний обход памяти для цветового буфера.

Запуск генерации VRS текстуры в очереди асинхронных вычислений

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

VRS для разных проходов

  • Базовый проход: рендеринг всех непрозрачных мешей.
  • Screen Space Ambient Occlusion: используется информация об экранном пространстве, чтобы приблизить области, которые должны получать меньше света из-за окклюзии.
  • Освещение: рассчитывается освещение для всех источников света на видимых непрозрачных мешах.
  • Screen Space Global Illumination: используется информация пространства экрана для расчёта отражённого освещения.
  • Screen Space Reflection: используется информация пространства экрана для создания отражений.
  • SSR Temporal AA: сглаживание результатов прохода Screen Space Reflection.
  • Translucency: рендерится все полупрозрачные меши.

Многое из вышеперечисленных проходов соответствует оным в Gears Tactics с VRS Tier 1, но есть один интересный проход, который следует отметить — Translucency. VRS Tier 1, примененнясь к прозрачности, вызывал слишком сильные артефакты. Однако с дополнительными настройками в Tier 2 получилось вернуть VRS для обработки полупрозрачности. VRS Tier 2 гарантирует, что элементы пользовательского интерфейса в этом проходе сохраняют свою чёткость, в то время как частицы являются хорошими кандидатами для грубого шейдинга.

SSGI является уникальным случаем использования VRS, поскольку выполняется с помощью вычислительного шейдера. VRS нельзя с ходу применить к нему. Вместо этого команда смогла имитировать поведение VRS в вычислительном шейдере, поскольку VRS текстуру можно считать как SRV. SSGI является дорогостоящей процедурой для GPU, и результаты глобального освещения, как правило, хорошо переносятся компоновкой с более низким разрешением, поэтому применение VRS показалось хорошим вариантом.

Работа с VRS

Это сделано, чтобы обеспечить стабильные 60fps. Если обнаруживается, что бюджет почти исчерпан, срабатывает механизм, понижающий разрешение в следующем кадре. В Gears 5 также используется апскейлинг из Unreal Engine для выполнения постобработки.

Variable Rate Shading и Dynamic Resolution Scaling являются мощными методами со своими сильными и слабыми сторонами. DRS позволяет масштабировать разрешение в виде процентного соотношения, которое можно увеличивать и уменьшать на уровне пикселей, чтобы обеспечить поддержание целевой частоты кадров при полной загрузке графического процессора. Слабость, однако, заключается в том, что уменьшение разрешения должно выполняться для всей цели рендеринга, что приводит к глобальному снижению разрешения. VRS Tier 2 — это полная перемена динамического разрешения. Снижение разрешения дискретно контролируется, но взамен гибко влияет на то, какие части таргет рендеринга будут затронуты.

Результаты

Для ПК у VRS есть 3 различными настройками: «Качество», «Сбалансированный» и «Производительность». «Качество» соответствует тому, что используется по умолчанию в Xbox Series X|S, и не оказывает никакого воздействия на восприятие. Подобным же образом «Сбалансированный» нацелен на минимальную разницу в восприятии, но при внимательном рассмотрении может выявить некоторые различия в пользу дополнительной производительности. В режиме «Производительность» VRS агрессивно используется, что допускает некоторые видимые компромиссы, при этом обеспечивая максимальную производительность.

Результаты с AMD 6900 XT при разрешении 4K со всеми настройками графики, установленными на Ultra.

Время кадра (ms)Экономия (ms)Экономия (%)
VRS отключен13.3
VRS Качество12.318%
VRS Сбалансированный12.11.210%
VRS Производительность11.91.412%

Результаты на AMD 6900 XT с разрешением 4K со всеми настройками, установленными на Insane, и с включенным Screen Space Global Illumination.

Время кадра (ms)Экономия (ms)Экономия (%)
VRS отключен23.0
VRS Качество19.83.2114%
VRS Сбалансированный19.63.4115%
VRS Производительность18.54.5520%
Rendering PassTotal Cost (ms)Quality Savings (ms)Balanced Savings (ms)Performance Savings (ms)
Base Pass3.410.350.40.42
Screen Space Ambient Occlusion2.130.9411.17
Lighting3.150.550.620.69
Screen Space Global Illumination*30.64
Screen Space Reflections2.671.271.271.49
SSR Temporal0.320.120.130.14
Translucency0.790.080.090.1
Total Savings3.313.514.65

VRS Tier 2 позволяет бесплатно повысить производительность с минимальными визуальными артефактами. По мере того, как мы наблюдаем всё более широкое распространение 120+ FPS, становится все более важным, чтобы разработчики тратили бюджет на GPU разумно, что делает VRS Tier 2 долгожданным инструментом, помогающим справиться с рендерингом следующего поколения.