Страница 8: Mesh Shading и Variable Rate Shading

Технология Mesh Shading в архитектуре Turing меняет подход к расчету геометрии. 3D-сцены с большим количеством объектов обычно упирались в ограничения расчета геометрии, что приводило и к чрезмерной нагрузке на процессор.

Уже давно для выбора уровня детализации объектов используется LOD (Level of Detail), зависящий от расстояния. Большинство игровых движков используют фиксированный LOD, иногда его можно менять. Но параметр не динамический, то есть он не зависит от сложности 3D-сцены.

Для сцены с 200.000 объектами на расчет геометрии остается только 2 мс - если требуется получить 60 FPS. Что приводит к 10 нс на каждый объект, включая необходимые расчеты LOD и вызовы Draw Call. В результате современные 3D-движки могут оперировать 20.000-30.000 объектами на сцене, не больше. С адаптивным LOD и Mesh Shading геометрия сцены может включать 200.000 объектов.

Mesh-шейдеры архитектуры Turing могут гибко определять LOD в зависимости от загрузки движка рендеринга. Теперь процессору уже не придется выполнять вычисления для фиксированного LOD и object culling (отсечение невидимых объектов) - ему достаточно лишь выполнить процедуры Draw Call. В данном случае шейдеры (Vertex и Hull) объединены в Task-шейдеры, которые и отвечают за выбор LOD и отсечение невидимых объектов. Шейдеры доменов и геометрии теперь объединены в Mesh-шейдеры.

NVIDIA показала работу новых Mesh-шейдеров на демонстрации.

На сцене присутствовало между 200.000 и 300.000 астероидов. В зависимости от LOD, на самом высоком уровне геометрии число полигонов достигает почти 4.000.000.000.000. Что вряд ли по силам современным аппаратным ресурсам.

Архитектура Turing теперь может определять, какие объекты следует рассчитывать, а какие - нет. Также динамически регулируется и LOD. NVIDIA показала используемые LOD через разные цвета. Синий, фиолетовый и синий соответствуют высокому LOD, зеленый и желтый - низкому LOD. Изменение LOD в зависимости от расстояния выполняется динамически, незаметно для геймера.

Variable Rate Shading

Variable Rate Shading - еще одна новая функция шейдеров, призванная повысить эффективность расчетов.

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

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

Начнем с Content Adaptive Shading, здесь анализируется содержимое кадра. Motion Adaptive Shading оценивает движения и изменения, которые происходят при переходе от одного кадра к другому. В случае Foveated Rendering играет роль ракурс взгляда пользователя очков VR, поскольку только область в фокусе должна выводиться с полной детализацией. И здесь как раз работает Lens Optimized Rendering, оптимизирующий рендеринг под очки VR. Конечно, здесь отчетливо заметны следы Simultaneous Multi Projection архитектуры Pascal.

Motion Adaptive Shading опирается на то, что движущиеся объекты воспринимаются человеческим глазом с меньшим разрешением.

Реализация Motion Adaptive Shading хорошо показана на демонстрации Wolfenstein 2: The New Colossus.

Технология Motion Adaptive Shading призвана устранить визуальные отличия в качестве картинки. Первые секунды демонстрации геймер включает и выключает Motion Adaptive Shading. Какие-либо отличия по качеству картинки не видны.

Затем NVIDIA активирует оверлей для индикации областей, на которых технология Motion Adaptive Shading активна. Если оверлея нет, то и Motion Adaptive Shading на данном участке не работает. А цвет указывает на размер блока.

NVIDIA ожидает, что Motion Adaptive Shading обеспечит прирост производительности порядка 20 процентов в играх, которые работали на уровне 60 fps.

Variable Rate Shading даст разработчикам еще больше возможностей. Например, это коснется multi-view rendering, который не будет ограничиваться одним viewport. Также и Foveated Rendering выиграет от поддержки Variable Rate Shading.

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

Texture Space Shading

Технология Texture Space Shading (TSS) позволит повторно использовать результаты операций шейдинга. TSS сохраняет результаты шейдинга в процессе расчетов, и они могут повторно использоваться в качестве текселей в пространстве текстуры. Пиксели, на которые наложены текстуры, переносятся из пространства экрана в пространство текстуры. В случае TSS семплы в пространстве экрана и в пространстве текстуры обрабатываются независимо и остаются разделенными. В результате можно получить пространственную и временную избыточность для рендеринга.

Благодаря TSS две наиболее важные операции Visibility Sampling (растеризация и Z-тестирование) и Appearance Sampling (шейдинг) отделены друг от друга, что позволяет выполнять их на разных этапах и/или в разное время.

Процесс шейдинга больше не привязан к пространству пикселей экрана, он может выполняться в пространстве текстуры. Геометрия по-прежнему обрабатывается растеризатором и передается в пространство экрана в виде пикселей, здесь же выполняются операции Visibility Sampling. Но от шейдинга в пространстве экрана уже можно отказаться, поскольку достаточно перенести соответствующие тексели на пиксели экрана.