Кроме аппаратного ускорения через ядра 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 не объявлены. Прирост в производительности в пару десятков процентов геймерам вряд ли помешает.