Трассировка лучей в CryEngine: не совсем честно, но быстро
В будущем движок сможет ускорять трассировку с помощью технологий Nvidia.
Кстати, на сайте читать удобнее
В середине марта разработчики из Crytek показали технологическую демку Neon Noir с трассировкой лучей в реальном времени, работавшей на обычной видеокарте. Теперь компания рассказала, как устроена эта демка.
В Neon Noir трассировка лучей используется для создания реалистичных отражений. Демка, запущенная на Radeon RX Vega 56, выдавала 30 кадров в секунду в разрешении 1080p; по словам разработчиков, если уменьшить разрешение трассировки лучей вдвое, то можно добиться 40+ кадров в секунду в разрешении 1440p.
Для реализации трассировки не использовались специфические API вроде DirectX 12 или Vulkan. Примечательно, что разработчики по-прежнему используют и старые методы освещения вроде SSAO; они применяются, когда нужно повысить производительность.
Сцена, показанная в демо-версии, максимально оптимизирована, трассировка лучей просчитывается не для всех отражающих поверхностей. Разработчики ориентируются на показатель «глянцевости» поверхности, в некоторых случаях могут использоваться кубические текстуры.
Для обсчета отражений используются упрощенные, низкополигональные версии моделей — в Crytek сравнивают эту оптимизацию с широко используемым LOD, уровнями детализации, загружающими простую модель, если она находится далеко от зрителя. Из-за этого в некоторых случаях отражения могут не соответствовать моделям.
Система освещения Total Illumination, задействованная в демке, появится в публичной версии CryEngine до конца года. Со временем Crytek ускорит работу трассировки лучей, добавив поддержку аппаратного ускорения, реализованного в картах GeForce RTX.