Microsoft анонсировала API трассировки лучей для DirectX 12
Microsoft с партнёрами, как и ожидалось, сделала важный анонс в рамках мероприятия NVIDIA GDC 2018 — в графическом API DirectX 12 появится новая функциональность в лице DirectX Raytracing (DXR). Речь идёт о стандарте программной и, что куда интереснее, аппаратной трассировки лучей (ray tracing) в рамках DirectX.
До сих пор трассировка оставалась областью, малопригодной для игр и иных графических приложений реального времени из-за обилия расчётов и в конечном счёте невысокой производительности. Тем не менее, она в отличие от обычного растровой визуализации современных видеокарт, которая эмулирует тени и отражения с помощью шейдеров и других уловок, позволяет создавать более физически точную модель отражений и затенений путём отслеживания обратной траектории распространения лучей света.
Что такое DirectX Raytracing (DXR)? На самом высоком уровне речь идёт о четырёх новых концепциях API DirectX 12:
Структура ускорения (acceleration structure) — объект, представляющий полную 3D-среду в формате, оптимальном для обработки графическим ускорителем. Представленная в качестве двухуровневой иерархии, структура обеспечивает как оптимизированное отслеживания лучей с помощью GPU, так и эффективную модификацию динамических объектов со стороны приложения.
Новый метод списка команд DispatchRays, который является отправной точкой для трассировки лучей в сцене. Именно с его помощью игра фактически передаёт рабочие нагрузки DXR на GPU.
Набор новых шейдерных типов HLSL, включая ray-generation, closest-hit, any-hit и miss. Они определяют, какими именно вычислениями затенения нагружает DXR ускоритель. Когда вызывается DispatchRays, запускается шейдер генерации лучей ray-generation. Используя новую внутреннюю функцию TraceRay в HLSL, этот шейдер отслеживается в сцене. В зависимости от того, куда луч направлен, в точке пересечения может быть вызван один из нескольких шейдеров hit или miss. Это позволяет игре назначать каждому объекту свой собственный набор шейдеров и текстур, что приводит к уникальному материалу.
Режим конвейера трассировки, совпадающий по духу с сегодняшними режимами графического или вычислительного конвейеров, подразумевает использование шейдеров трассировки лучей и прочие соответствующие вычислительные нагрузки.
Другие новости от directx-windows.ru