Трассировка лучей в War Thunder

С обновлением «Жар-птицы» в 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 на этих графических процессорах, равно как и поддержка современных консолей, обязательно появится в игре!

6 лайков

Вы сначала движок параллелится на много поток научите, а потом от трассировке думаете. Игра висит на 4 ядрах максимум в 2024. Позор. Ну, и выглядит убого для тех ресурсов, которые она отжирает. Не сильно лучше растра.

7 лайков

Сейчас бы за свой счет теней побольше навалить в и без того темной игре.

15 лайков

Это конечно все прикольно, но с такой графикой люди покатают максимум 15 минут и включат привычные для себя настройки

Богатым новичкам более чем зайдет

И тем кто в аркаду играет.

За что люблю улитку - за подробные посты как и что они сделали) Обожаю технические посты или технические рассуждения на девстримах, всегда интересно читать и слушать)

А тут какой-то кринж произошёл. Дуло танка загородило свет от огромного облака огня? Или почему на танке тень какая-то странная и только на траке есть свет от взрыва?

7 лайков

А тени от других объектов, при таком источнике света, тебя не смущают? Это не кринж, это кринжатина.

И они ж реально сами этот скрин приложили, как доказательство своих слов xdd

Ну, я думаю, тени от других объектов тоже будут на определённом расстоянии. Но явно что-то случилось не так…

В любом случае, пост интересный, недочёты есть, но особо не заметно. Ток вот этот скрин глаз и зацепил, а так…

Играть я, кнш, с РТХ не смогу на своём ноуте, но хоть синематики буду смотреть по ютубу ещё более красивые от игроков)))

И всё у них сразу получится, и получится замечательно!

16 лайков

Это всё нелепо выглядит на доисторических картах типа “Карелии” или “Пепельной реки”, где художники даже текстуры не хотят обновить с 2014 года

3 лайка

Продублирую, может кому интересно будет.

Карта: “Заброшенный завод”.
Посмотреть в полном размере: → нажать ПКМ на картинке → открыть в новом окне.

1920x1080 - Full HD

2560x1440 - 2K монитор

3440x1440 - Ultra Wide

3840x2160 - 4K монитор

Настройки графики всё до упора вправо, 4xMSAA + FXAA HQ
Трассировка лучей вот такая:

К моему удивлению, если остальные ползунки трассировки лучей тоже выкрутить на макс, то картинка будет гораздо хуже, а производительность рухнет со 120 до 25 FPS =_)).

4 лайка

Это всё конечно, красиво, но кто оценит? Сколько у нас народу с железом, способным это потянуть?
Я и сам такой, играющий на встройке с Ultra-low и на ЭЛТ-мониторе.

чисто отражения включить, остальное не такое интересное

Благо улитки об этом знают, и оставляют выбор включать или нет.
И лично меня очень радует тенденция, что за графику всерьез взялись.

Это лучше чем клонов по всем веткам копипастить.

1 лайк

Похоже расчет источника света идет только из одной точки. В UE 5.5 есть продвинутая технология просчета множества источников света без сильной потери производительности, которая вроде как может решить подобную проблему. Хотя вряд ли это сильная проблема, ведь огненный шар от выстрела живет несколько кадров.

Думаю, что с железом RTX 30 и 40 серии не так и мало, а скоро и 50 выйдет. Важнее сколько игроков захотят жертвовать видимостью ради картинки. Лично я не буду против если слегка нерфанут видимость на низкой графике чтобы уровнять ее с высокими настройками.

На треугольные озера, двухполигональные скалы, объекты с текстурами из 00х и убогой коллизией, натянули новомодные лучи … даааааа, за графику всерьез взялись xdd

4 лайка

Кому всё это нужно ? нормальный игрок играет либо на ультра лоу либо на средних но не выше