Microsoft представляет DirectX Raytracing


Microsoft анонсировала способ определения деталей 3D-сцен для рендеринга. DirectX Raytracing (DXR) — это новый API, который будет включен в DirectX 12. Направленный на обеспечение более реалистичного освещения и теней, он позволит приложениям DirectX использовать аппаратное ускорение трассировки лучей.

В настоящее время, если вы хотите визуализировать 3D-изображение на экране, почти наверняка используется метод растеризации. Это берет 3D-определение изображения и отображает его в 2D с помощью матриц преобразования. Проблема заключается в том, что растеризация определяет, какие цвета должны быть видны в любой точке, используя 2D-представление 3D-объекта и в каждой точке экрана, определяя, что будет видно в этой точке, и применяя цветовой и световой эффект. Проблемы возникают, когда объекты вне поля зрения должны отбрасывать тень, например, или должны отражаться в чем-то блестящем на экране.

Microsoft говорит, что такие методы, как отражение экранного пространства (SSR) и глобальное освещение (которые пытаются преодолеть проблемы, описанные выше), подталкивают растеризацию к ее пределам. Поскольку трассировка лучей DirectX позволяет получить полное 3D-представление игрового мира, она позволяет современным методам рендеринга, таким как SSR, заполнить пробелы, оставленные растеризацией. Поддержка DXR уже была анонсирована для Pix в Windows. Pix-это инструмент настройки и отладки производительности для разработчиков игр.

Упрощенное представление о том, как работает трассировка лучей, заключается в том, что лучи света проецируются от всех источников света в 3D-сцене. Лучи света отражаются вокруг сцены под правильными углами в зависимости от их исходного источника. Когда они сталкиваются с объектом, этот объект освещается в соответствии с тем, как это было бы в реальной жизни. Полная трассировка лучей требует слишком больших вычислительных затрат для работы на текущем оборудовании, но трассировка лучей DirectX повторяет некоторые части этой идеи. В то время как полная трассировка лучей рассматривает, как все объекты влияют друг на друга, DXR концентрируется на проблемных элементах, таких как отражения и тени. Разработчики смогут определить лучи и маршрут, по которому они должны идти.

DirectX Raytracing (DXR) добавляет четыре концепции в API DirectX 12, начиная со структуры ускорения. Это объект, представляющий полную 3D-среду в формате, предназначенном для обхода графическим процессором.  Вы можете использовать новый метод DispatchRays в качестве отправной точки для отслеживания лучей в сцене.  Именно так игра фактически передает рабочие нагрузки DXR на графический процессор.

Подробные сведения о том, что должна делать рабочая нагрузка DXR, определяются с использованием набора новых типов шейдеров HLSL, включая шейдеры генерации лучей, ближайшего попадания, любого попадания и промаха.  При вызове DispatchRays запускается шейдер генерации лучей, который вызывает трассировку лучей в сцену.  В зависимости от того, куда попадает луч в сцене, могут быть вызваны шейдеры попадания или промаха. Игра может назначить каждому объекту свой собственный набор шейдеров и текстур.

Последнее новое дополнение-это состояние конвейера трассировки лучей. Microsoft говорит, что это компаньон по духу для современных объектов состояния графических и вычислительных конвейеров и используется для инкапсуляции шейдеров трассировки лучей и других состояний, имеющих отношение к рабочим нагрузкам трассировки лучей.

Что касается аппаратной поддержки, Microsoft говорит::

«Разработчики могут использовать имеющееся на рынке оборудование, чтобы начать работу с трассировкой лучей DirectX.  Существует также резервный уровень, который позволит разработчикам начать экспериментировать с трассировкой лучей DirectX, не требующей какой-либо конкретной аппаратной поддержки.» 

С практической точки зрения, приложения, использующие DXR, будут работать с архитектурой Nvidia Volta, и если DXR заинтересуется, то, несомненно, будет поддержка со стороны большинства производителей оборудования. 


Добавить комментарий