Чт. Ноя 21st, 2024

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

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

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

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

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

Переход к DirectX 12 – DirectX Raytracing (DXR) Tier 1.1 https://t .co/DRwWSaZtL8

– DirectX 12 (@ DirectX12) 6 ноября 2019 г.

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

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

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

Импульс DirectX Raytracing продолжает расти!

DXR Tier 1.1 и функция затенения сетки Тьюринга добавляются в DX12. Все поддерживаются в первую очередь и только на графических процессорах GeForce. pic.twitter.com/WgwysQnAR5

— NVIDIA GeForce (@NVIDIAGeForce) 29 октября 2019 г.

Увеличение количества объектов состояния с помощью AddToStateObject ():

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

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

Правила изменились.

Рад видеть DirectX Raytracing в Call of Duty: #ModernWarfare pic.twitter.com/5jgoprReak

– NVIDIA GeForce (@NVIDIAGeForce) 30 мая 2019 г.

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

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

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

DirectX Raytracing теперь жить в Windows 10 https://t.co/kmKwfUQqZz pic.twitter.com/Po8RVkdiXq

— PC Gamer (@pcgamer) 3 октября 2018 г.

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

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

Источник

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