Microsoft с партнёрами, как и ожидалось, сделала важный анонс в рамках мероприятия NVIDIA GDC 2018 — в графическом API DirectX 12 появится новая функциональность в лице DirectX Raytracing (DXR). Речь идёт о стандарте программной и, что куда интереснее, аппаратной трассировки лучей (ray tracing) в рамках DirectX.
До сих пор трассировка оставалась областью, малопригодной для игр и иных графических приложений реального времени из-за обилия расчётов и в конечном счёте невысокой производительности. Тем не менее, она в отличие от обычного растровой визуализации современных видеокарт, которая эмулирует тени и отражения с помощью шейдеров и других уловок, позволяет создавать более физически точную модель отражений и затенений путём отслеживания обратной траектории распространения лучей света.
Что такое DirectX Raytracing (DXR)? На самом высоком уровне речь идёт о четырёх новых концепциях API DirectX 12:
Проект PICA PICA от команды EA SEED показывает, как трассировка лучей в реальном времени при помощи DXR может выглядеть в будущих играх
DXR не требует наличия новой видеокарты — по словам Microsoft, рабочие нагрузки DXR могут возлагаться на любой из существующих движков DX12. Дело в том, что по своей сути DXR является нагрузкой вычислительного типа. По словам Microsoft, современные аппаратные графические ускорители становятся всё более универсальными, и в конечном итоге большинство блоков фиксированной функциональности будут заменены на универсальный HLSL-код.
Microsoft вместо традиционного подхода, предусматривающего создание для режима трассировки лучей нового метода CreateRaytracingPipelineState, предпочла более общий и гибкий метод CreateStateObject. Он может использоваться как для активации конвейера трассировки, так и для графического, вычислительного или любого другого будущего конвейера GPU. Теоретически это означает, что разработчики смогут создавать свои DXR-рейтрейсеры, в той или иной степени смешанные с традиционной растеризацией, чтобы достигать приемлемых результатов с точки зрения качества и производительности.
Любопытно, что опробовать DXR разработчики могут уже сейчас. Microsoft выпустила пакет экспериментальных SDK-инструментов с примерами кода. Для работы с ним требуется участие в программе Windows Insider и грядущий весенний пакет обновлений Windows 10 Redstone 4 (RS4). Полноценный же запуск API DXR запланирован на осень.
Впрочем, судя по всему, пока единственной по-настоящему оптимизированной под DXR аппаратной архитектурой является NVIDIA Volta, которой пока нет на игровом рынке. AMD ещё работает над драйвером, который обеспечит поддержку технологии. Возможно, с выходом DXR на рынок использование анонсированного ещё на GDC 2014 низкоуровневого графического API DirectX 12 станет более широким.
Стоит отметить, что некоторые известные компании и игровые студии, как отмечает Microsoft, уже около года знают о создании DXR и в той или иной степени работают над разработкой стандарта и внедрением его в свои графические движки. Среди прочих названы имена Epic Games, Electronic Arts и DICE, Unity, Remedy, 4A Games, Allegorithmic и Futuremark.