В DirectX добавлена поддержка переменного уровня шейдирования

Компания Microsoft объявила о том, что её API DirectX 12 теперь поддерживает переменный уровень шейдирования — Variable Rate Shading (VRS), что обеспечит играм дополнительную производительность без потери качества.

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

Как поясняет Microsoft, уровень шейдирования определяет разрешение, при котором в изображение вызываются шейдеры. При большем уровне качество будет выше, но на это требуется больше ресурсов. Как правило, уровень шейдирования применяется ко всем пикселям в кадре, но при использовании VRS разработчики могут задавать разный уровень различным частям.

Сравнение экранного VRS. Слева включено, справа выключено
Сравнение экранного VRS. Слева включено, справа выключено

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

Работа VRS внутри отрисовки на будущем GPU Intel в тесте Unreal Engine 4 Sun Temple
Работа VRS внутри отрисовки на будущем GPU Intel в тесте Unreal Engine 4 Sun Temple

В тесте, проведённом с Firaxis, применяя VRS на обрисовку был получен 20% прирост производительности, но с некоторым ухудшением качества. Применив переменный уровень внутри отрисовки, в той же сцене прирост частоты кадров составил 14%, но с практически незаметной потерей качества.