С обновлением «Жар-птицы» в War Thunder появится трассировка лучей и поддержка различных визуальных эффектов на основе этой технологии, таких как детальные тени, окружающее затенение и полноценные динамические отражения.
Трассировка лучей — как это работает?
Для поддержки трассировки лучей (ray tracing, RT) нам понадобилось создать иерархию ограничивающих объёмов (Bounding Volume Hierarchy, BVH) — триангулированное представление всего игрового пространства. Во многих проектах идут на компромиссы, что включать в такую иерархию и с какой точностью. Например, оставляют в иерархическом представлении только менее детализированные объекты и для сравнительно больших расстояний, чтобы использовать экранные методы для близких объектов и трассировку лучей для далёких. Но у всего есть цена — этот подход неплох для отражений, но так невозможно построить полностью корректные тени объектов.
В War Thunder мы решили отказаться от таких компромиссов, чтобы в долгосрочной перспективе иметь возможность применять более широкий спектр эффектов. В War Thunder почти все объекты поля боя включены в иерархию для эффектов RT с той же точностью, с которой они рендерятся игрой, поэтому все эффекты являются физически корректными и точными.
Иерархизация, однако, также имеет свою цену, она задействует максимально доступное число потоков центрального процессора, так что для режима RT мы рекомендуем современные процессоры.
Итак, когда иерархизация завершена, настаёт очередь трассировки лучей и эффектов на их основе. С выходом обновления «Жар-птицы» главных эффектов будет три, вот они.
Трассированная карта теней
Трассированная карта теней (Ray Traced Shadow Map (RTSM)) заменяет собой каскадную текстурную карту теней (CSM) и производит трассировку каждой точки экрана к поверхности солнца. Поскольку солнце представлено диском, а не упрощённо — бесконечно удалённым точечным источником, — тени получаются с физически правильными полутенями в зависимости от расстояния до объекта, отбрасывающего эти тени.
В результате получаем физически корректные и до пикселя точные тени объектов от солнца!
На высокопроизводительных графических процессорах можно также включить тени от всех источников динамического освещения, таких как взрывы, вспышки выстрелов и тому подобное. Но помните, что это очень требовательная к «железу» функция.
Окружающее затенение с трассировкой лучей
Окружающее затенение (ambient occlusion) — это симуляция способности объекта блокировать окружающее освещение, например, свечение неба. Вот почему под вашей кроватью темнее, чем в комнате.
Обычно для такой симуляции используются алгоритмы окружающего затенения, построенного в пространстве экрана: Screen Space Ambient Occlusion (SSAO) или Ground-Truth Ambient Occlusion (GTAO). Метод окружающего затенения с трассировкой лучей RTAO является трассированной версией подобных алгоритмов, способной исправлять характерные для них ошибки: например, когда находящийся вне экрана объект не накладывает окружающее затенение, или объект, находящийся на экране, затеняет объекты, близкие другу к другу в плоскости экрана, но на самом деле находящиеся далеко по глубине. RTAO также исправляет и обратные ситуации, когда окружающее затенение блокируется другим объектом. В таких случаях вы могли видеть тени там, где их быть не должно, и наоборот. Всё это под силу исправить алгоритму окружающего затенения с трассировкой лучей.
Отражения с трассировкой лучей
Если до сих пор мы говорили только про тени, то отражения с трассировкой лучей визуализируют саму иерархию ограничивающих объёмов. В жизни эту иерархию вы можете увидеть в зеркале, нам же приходится особенно постараться, чтобы отражение как можно точнее совпало с отрисованным объектом.
Как и тени, отражения в War Thunder были и раньше — использовались отражения по зондовому (отражения посчитаны для отдельных точек — проб) и экранному методу построения, однако, как и у окружающего затенения в экранном пространстве, эти методы имели схожие ограничения: не отражается то, чего нет на экране, или отражается неточно (из «проб»), отражения могут «блокироваться» другими объектами. Алгоритм построения отражений с трассировкой лучей трассирует сцену целиком, то есть буквально способен отражать объекты из любой точки локации.
Для работы этого метода необходимо учитывать шероховатость отражающей поверхности. Фактурные поверхности, такие как бетон, дают более мягкие и размытые отражения, тогда как гладкие поверхности — вода, стекло — дают чёткие, резкие отражения, как в зеркале. Учёт рельефа, микрорельефа и электрических свойств отражающей поверхности — одна из самых актуальных проблем в современной компьютерной графике.
Наш подход в решении этой проблемы заключается в рендеринге «шумных» отражений с учётом фактурности поверхности и использование так называемого «денойзера» (шумодава) для получения фотореалистичных отражений.
Иногда эффект очевиден, как в случае с зеркальными отражениями, в иных же случаях это менее очевидно, но делает изображение более достоверными, естественным. Посмотрите на скриншоты ниже. В варианте без трассировки можно заметить синеватое свечение на танке и окружении в тени здания, поскольку здание, которое должно блокировать небо от отражения, находится вне пространства экрана, и экранные методы построения отражений просто не могут знать, что здесь небо отражаться не должно. В версии с отражениями с трассировкой лучей этот синий оттенок исчез, так как иерархия ограничивающих объёмов заставляет здание блокировать свечение неба, вне зависимости, есть ли оно на экране в данный момент или нет.
Именно так метод построения отражения с трассировкой лучей исправляет проблемы, присущие экранным и зондовым алгоритмам.
Подфункция отражения с трассировкой лучей — отражения на полупрозрачных стеклянных поверхностях. На таких поверхностях вы можете видеть точное отражение мира вместо зонда, который мы использовали раньше. В результате снова имеем реалистичные отражения.
И ещё одна особенность метода касается построения отражений от водной поверхности.
Обычно, в War Thunder отражения объектов на воде формируются как плоские, а затем искажаются волнами. В случае с отражениями от воды, построенными с трассировкой лучей, лучи отражения «выстреливаются» на основе векторов нормали волны. Отражение просто получается более реалистичным, так как оно не просто искажает 2D-изображение волнами, а фактически использует разные отражения от волн в каждом пикселе. Разница где-то больше видна, где-то меньше.
Трассировка лучей и производительность
Технология трассировки весьма требовательна к «железу», но настройками масштабирования возможно сделать её более доступной.
Во-первых, все три описанных эффекта трассирования могут быть включены или выключены по отдельности, вы можете использовать только те, что вам больше нравится и которые позволяет ваша видеокарта.
Далее можно тонко настроить качество отображения. В целом карту теней с трассировкой лучей и динамическим освещением разумно включать только на топовых видеокартах. Как правило, ресурсов в таком режиме потребляется не сильно больше, чем в режиме трассировки солнечного света, но в динамической сцене боя со множеством взрывов и пожаров такой режим отображения может стать очень требовательным к вычислительным мощностям компьютера.
«Низкие» настройки окружающего затенения с трассировкой лучей уменьшают внутреннее разрешение для вычислений — такие же, как при экранных алгоритмах, но без присущих им ошибок. «Средние» настройки дают большее разрешение и лучшее подавление шума — увидеть их эффект можно лишь в определённых условиях, но нам хотелось дать вам максимальный контроль настроек этой опции.
Для отражений с трассировкой лучей низкие настройки могут стать хорошим компромиссом для производительности — тени с трассировкой не будут отображаться в отражениях, и производительность заметно вырастет. Настройки «средние» включают трассированые тени в отражениях.
И в низких, и в средних настройках качества RT отражений используется так называемый шахматный рендеринг для удвоения производительности путем трассировки половины количества лучей. «Высокие» настройки отключают этот шахматный рендеринг, но «шумодав» на самом деле отлично справляется со скрытием шахматного узора, так что разница невелика. Опять же, решать вам!
В настройках отражений также можно переключить режим рендеринга для воды и поверхностей в полном разрешении или половинном. Разница видна в основном в зеркалах, да и при половинном разрешении картинка выглядит отлично, если видеокарта не «вывозит» полный режим.
Наконец, отражения полупрозрачного стекла также могут иметь трассированые отражения внутри отражений на высоком уровне или не иметь их на среднем уровне. Обычно это немного влияет на производительность, поскольку такие поверхности не очень распространены в игре.
Для оптимального качества с хорошим балансом картинки и производительности мы рекомендуем «средние» настройки трассировки лучей. Всё вышеперечисленное улучшает качество эффектов, но ценой больших ресурсов системы. Играете на топовом ПК? Тогда милости просим!
При активации режима трассировки лучей мы рекомендуем использовать один из методов масштабирования сглаживания (antialiasing), наиболее подходящий для вашей видеокарты, — DLSS, FSR, XeSS или TSR. Так вы добьётесь высокой производительности и превосходной картинки. Балансные настройки качества RT — это «золотая середина» для не новых карт с поддержкой трассировки лучей. Вполне нормально чуть снижать качество для улучшения производительности, зато наслаждаться всеми преимуществами RT графики.
В будущем мы не только добавим новые опции графики с трассировкой лучей, но и будем улучшать производительность представленных сегодня, не пропускайте новости проекта!
В обновлении «Жар-птицы» трассировка лучей будет доступна только для карт производства NVidia, и приоритетной для нас является скорая поддержка карточек от AMD и Intel. Эти работы уже ведутся, и есть многообещающие результаты, но мы хотели бы до конца разобраться с некоторыми проблемами, характерными для видеокарт этих производителей. Поддержка RT на этих графических процессорах, равно как и поддержка современных консолей, обязательно появится в игре!