DirectX Raytracing (DXR) Tier 1.1 Новые функции могут работать с простой поддержкой драйверов без серьезной модификации оборудования

Оборудование / DirectX Raytracing (DXR) Tier 1.1 Новые функции могут работать с простой поддержкой драйверов без серьезной модификации оборудования 3 минуты на чтение

Xbox



Трассировка лучей, безусловно, является функцией, которую с нетерпением ждут геймеры, особенно с высокопроизводительными видеокартами от NVIDIA и AMD. Ведущие производители графических процессоров, в которые вскоре войдет и Intel, активно создают свое оборудование для поддержки функции, которая реалистично воспроизводит световые и теневые эффекты на основе реальных законов физики и обеспечивает гиперреалистичные и захватывающие визуальные эффекты.

Между тем, Microsoft гарантирует, что экосистема ОС Windows хорошо подходит в качестве идеальной платформы для игр высокого класса. Платформа DirectX компании, которая долгое время была ведущим стандартом для настольных игр, сейчас настраивается для поддержки и даже усиления «трассировки лучей в реальном времени». Фактически, DirectX Raytracing (DXR) Tier 1.1 - это последний стандарт, который поддерживает набор новых функций. Некоторые из интересных функций, которые трассировка лучей в реальном времени может поддерживать в ближайшей функции, включают встроенную трассировку лучей, Вызов DispatchRays () через ExecuteIndirect () , Увеличение объектов состояния через AddToStateObject () , GeometryIndex () в шейдерах трассировки лучей , и больше. Давайте посмотрим на некоторые из новых функций, которые DirectX 12 для Windows 10 будет поддерживать для трассировки лучей.



Встроенная трассировка лучей:

Альтернативная форма трассировки лучей, встроенная трассировка лучей, не использует никаких отдельных динамических шейдеров или шейдерных таблиц. API для функции скрывает доступ к структуре ускорения (например, обход структуры данных, прямоугольник, пересечение треугольника). По сути, это оставляет это на усмотрение оборудования / драйвера. Интересно, что весь необходимый код приложения для обработки как перечисленных попаданий-кандидатов, так и результата запроса (например, попадание против промаха) может быть автономным в шейдере, управляющем RayQuery .



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



Вызовы DispatchRays () через ExecuteIndirect ():

Эта функция позволяет шейдерам на графическом процессоре создавать список DispatchRays () звонки. Сюда входят отдельные параметры, такие как количество потоков, настройки таблицы шейдеров и другие настройки корневых параметров. Лучшим аспектом этой функции является то, что весь список может быть выполнен без необходимости в промежуточном цикле возврата к ЦП процессу.



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

Растущие объекты состояния через AddToStateObject ():

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

Даже если это делается для проверки правильности, с AddToStateObject () , новый объект состояния может быть создан путем добавления шейдеров к существующему объекту состояния шейдера. Излишне добавлять, что накладные расходы ЦП останутся пропорциональными только добавляемым данным.

GeometryIndex () в шейдерах трассировки лучей:

Эта функция позволяет шейдерам различать геометрию внутри структур ускорения нижнего уровня. Раньше геометрии можно было различать по разным данным в записях таблицы шейдеров для каждой геометрии, но с новым методом приложение освобождается от нагрузки. Более того, если все геометрии используют один и тот же шейдер, приложение может установить MultiplierForGeometryContributionToHitGroupIndex параметр для TraceRay () 0.

Это, по сути, гарантирует, что индекс геометрии больше не будет учитываться при вычислении индексации таблицы шейдера с фиксированной функцией. Тем не менее, при необходимости или желании шейдеры могут использовать GeometryIndex () для индексации в собственные структуры данных приложения.

В дополнение к вышеупомянутым функциям DirectX Raytracing (DXR) Tier 1.1 также включает RAY_FLAG_SKIP_TRIANGLES и RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES флаги. Хотя эти флаги доступны для отдельных вызовов трассировки лучей, они также могут быть объявлены глобально через конфигурацию конвейера трассировки лучей.

Совершенно очевидно, что Microsoft пытается оптимизировать DirectX 12 для игр с интенсивной графикой. Более того, поскольку трассировка лучей обещает стать одной из наиболее важных функций для высокопроизводительных игр и геймеров, компания гарантирует, что система, процессор и GPU используются оптимально с минимальным дублированием.

Теги directx nvidia трассировка лучей RTX