> > > > Variable Rate Shading становится частью DirectX 12

Variable Rate Shading становится частью DirectX 12

Опубликовано:

microsoft 2Кроме аппаратного ускорения через ядра RT и Tensor, NVIDIA с архитектурой Turing также представила и другие улучшения. Среди них - Variable Rate Shading (VRS). NVIDIA поддерживает VRS в виде NVIDIA Adaptive Shading (NAS). Впрочем, до сих пор было предложено только соответствующее расширение Vulkan, которое пока поддерживается только Wolfenstein II: The New Colossus.

На видеокартах GeForce RTX и GeForce GTX 1660 Ti (все они базируются на архитектуре Turing) мы уже провели тесты с Variable Rate Shading. По сути, Variable Rate Shading является технологией сжатия на уровне затенения. Мы уже знакомы с технологиями сжатия музыки (MP3), изображений (JPG), да и архитектуры GPU опираются на сжатие памяти.

Как правило, в процессе шейдинга каждый пиксель просчитывается каждый раз. Но подобная точность требуется далеко не всегда. Многие участки на протяжении нескольких кадров не меняются. Здесь как раз и пригодится Variable Rate Shading.

В случае Variable Rate Shading кадр разделяется на несколько блоков. В зависимости от контента кадра и скорости, с которой объект меняется на следующих кадрах, размер блоков может меняться. Также могут использоваться разные методы Variable Rate Shading.

VRS API под DirectX 12 может поддерживаться тремя способами:

  • Per draw: разработчик сам решает, какие объекты и с каким уровнем детализации будут выводиться. Например, удаленные объекты не требуется выводить с полным качеством, в отличие от близко расположенных объектов. Детализация выставляется для каждого draw call.
  • Within a draw by using a screenspace image: в шутере от первого лица максимальная детализация может быть в центре, то есть по фокусу геймера, а периферийные области будут выводиться с уменьшенным качеством.
  • Within a draw, per primitive: разработчик определяет уровень детализации примитивов внутри draw call. Например, удаленные объекты выводятся с меньшим качеством. Подобная автоматика отсутствует у первого метода, где для каждого объекта (draw call) необходимо вручную выставлять уровень детализации.

Со стороны аппаратного обеспечения есть два уровня поддержки VRS (Tier 1 и Tier 2). В случае Tier 1 поддерживается только VSR Per draw. Уровень Tier 2 должен явно поддерживаться видеокартой, на нем уже возможны все три способа VSR. Кроме того, возможны смешанные формы трех методов.

Microsoft объединила усилия с Firaxis, чтобы в качестве пилотного проекта впервые добавить поддержку технологии в Civilization VI, прирост производительности составил до 20%.

Что касается аппаратной поддержки, Microsoft говорит о современных видеокартах NVIDIA (скорее всего, Turing и Pascal), а также будущих GPU Intel. Здесь Microsoft упоминает графику Gen11, которая впервые появится в процессорах Intel во второй половине года.

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