Microsoft запилила api трассировки лучей для directx 12

На самом высоком уровне речь идёт о четырёх новых концепциях API DirectX 12

  1. Структура ускорения (acceleration structure) — объект, представляющий полную 3D-среду в формате, оптимальном для обработки графическим ускорителем. Представленная в качестве двухуровневой иерархии, структура обеспечивает как оптимизированное отслеживания лучей с помощью GPU, так и эффективную модификацию динамических объектов со стороны приложения.
  2. Новый метод списка команд DispatchRays, который является отправной точкой для трассировки лучей в сцене. Именно с его помощью игра фактически передаёт рабочие нагрузки DXR на GPU.
  3. Набор новых шейдерных типов HLSL, включая ray-generation, closest-hit, any-hit и miss. Они определяют, какими именно вычислениями затенения нагружает DXR ускоритель. Когда вызывается DispatchRays, запускается шейдер генерации лучей ray-generation. Используя новую внутреннюю функцию TraceRay в HLSL, этот шейдер отслеживается в сцене. В зависимости от того, куда луч направлен, в точке пересечения может быть вызван один из нескольких шейдеров hit или miss. Это позволяет игре назначать каждому объекту свой собственный набор шейдеров и текстур, что приводит к уникальному материалу.
  4. Режим конвейера трассировки, совпадающий по духу с сегодняшними режимами графического или вычислительного конвейеров, подразумевает использование шейдеров трассировки лучей и прочие соответствующие вычислительные нагрузки.
  5. В короткометражном фильме Reflections штурмовики и капитан Фазма из новой трилогии «Звездных войн» реалистически освещаются в Unreal Engine при помощи технологии Nvidia RTX для графических карт на чипах Nvidia Volta при помощи нового API Microsoft DirectX Raytracing. На сцене GDC 2018 Epic и ILMxLAB использовали iPad с ARKit в качестве виртуальной камеры для демонстрации съемки сцены в реальном времени.

    DXR не требует наличия новой видеокарты — по словам Microsoft, рабочие нагрузки DXR могут возлагаться на любой из существующих движков DX12. Дело в том, что по своей сути DXR является нагрузкой вычислительного типа. По словам Microsoft, современные аппаратные графические ускорители становятся всё более универсальными, и в конечном итоге большинство блоков фиксированной функциональности будут заменены на универсальный HLSL-код.

    Microsoft вместо традиционного подхода, предусматривающего создание для режима трассировки лучей нового метода CreateRaytracingPipelineState, предпочла более общий и гибкий метод CreateStateObject. Он может использоваться как для активации конвейера трассировки, так и для графического, вычислительного или любого другого будущего конвейера GPU. Теоретически это означает, что разработчики смогут создавать свои DXR-рейтрейсеры, в той или иной степени смешанные с традиционной растеризацией, чтобы достигать приемлемых результатов с точки зрения качества и производительности.

    Обновление DirectX 12: Ray Tracing


    Похожие игры…

    Читайте также: