Новые функции DX12: Mesh Shader и Raytracing Tier 1.1

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

microsoft 2Со следующим крупным обновлением Windows 10, которое часто называется 20H1, Microsoft представит новые функции DirectX 12. Они как раз будут доступны разработчикам следующих версиях Windows 10 Insider Preview.

Из новинок отметим DirectX Mesh Shader, DirectX Raytracing Tier 1.1 и DirectX Sampler Feedback, а также Texture Space Shading и Texture Streaming.

Весной 2018 Microsoft анонсировала интерфейс DXR, который впервые был ориентирован на эффекты трассировки лучей. Чуть позже летом NVIDIA объявила соответствующую поддержку с аппаратным ускорением на ядрах RT архитектуры Turing. На данный момент NVIDIA остается единственным производителем GPU, работающим с новым интерфейсом DXR, хотя и другие компании могут выполнять подобные расчеты через потоковые процессоры. Но аппаратное ускорение в ядрах RT позволило NVIDIA рассчитывать, по крайней мере, часть кадра с эффектами трассировки лучей. В грядущем году игровые консоли тоже будут поддерживать трассировку лучей, AMD также объявила соответствующую поддержку.

Обновление DirectX 12 теперь добавляет DirectX Raytracing Tier 1.1 и DXR Tier 1.1. Ниже приведены новые функции.

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

DirectX Mesh Shader

В DirectX 12 теперь интегрированы Mesh Shader. На 3D-сценах с большим количеством объектов производительность обычно упирается в расчеты геометрии, которые частично выполняются на процессоре. Мы получаем типичное "узкое место". И здесь Mesh Shader как раз дают определенную гибкость применительно к геометрическому движку.

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

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

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

NVIDIA уже реализовала Mesh Shaders в качестве функций архитектуры Turing.

Texture Streaming

Текстуры становятся все более детализованными, миры - все крупнее и масштабнее, что приводит к увеличению времени загрузки. Для сокращения времени загрузки весьма полезна функция Texture Streaming, которая будет подгружать текстуры в память видеокарты только при необходимости. С помощью Feedback Map семплер получает необходимую обратную отдачу.

Данные Sampler Feedback могут использоваться и для Texture Space Shading. То есть некоторые расчеты шейдеров не придется повторять каждый раз, результаты можно использовать повторно, что в некоторых случаях позволяет существенно увеличить производительность видеокарты.

Игровые разработчики уже могут приступать к добавлению новых функций. DXR Tier 1.1 и другие функции будут добавлены в новые сборки Windows 10 Insider Preview Build и SDK Preview Build для Windows 10 (20H1).