Что такое трассировка лучей и как она работает?

Метод трассировки лучей представляет собой способ рендеринга графики, который имитирует физическое поведение света. Это далеко не новый метод создания трехмерной графики, который использовался в кино, анимации, трехмерном моделировании и т.д. когда пользователю нужен максимально реалистичный рендер без оглядки на системные ресурсы и время рендеринга. Эксперименты с этой технологией начались еще в конце 60-х годов прошлого столетия, а одним из пионеров является Айвен Сазерленд ― создатель приложения Sketchpad для имитации отражения света на поверхностях. Однако из-за сложности и дороговизны рейтрейсинга игровым движкам все эти годы приходилось полагаться на растеризацию, прямое освещение и бейкинг.


Технология трассировки лучей работает путем моделирования поведения света при его прохождении через виртуальную сцену. Процесс начинается с генерации лучей, которые прослеживаются с точки зрения камеры и посылаются в сцену. Все объекты в любой виртуальной сцене делятся на группы, которые поглощают, пропускают и отражают свет. Глаза игрока используются в роли отправной точки из которой, как бы, выстреливает виртуальный луч. По пути он взаимодействует со всеми физическими объектами, будь то NPC и игровые персонажи, здания, автомобили, мебель, ящики, бочки и т.д. Когда луч сталкивается с объектом, вычисляется точка пересечения луча с поверхностью объекта. Она содержит информацию о цвете и яркости, которые будут использоваться для создания окончательного изображения. В каком-то смысле имитация лучей — это попытка симулировать восприятие света человеческим глазом.


Лучи от источника света, взаимодействующие с поверхностью объекта, могут также отражаться, поглощаться и преломляться, подражая тому, как работает свет в реальном мире. Кроме того, рейтрейсинг умеет создавать реалистичные тени, исходя из физических свойств объекта и расположения источников света. Эти свойства можно использовать для создания более сложных эффектов вроде дождя в солнечную погоду, пронизанного неоновым светом тумана в Cyberpunk 2077 или отражений Человека-Паука в пролетающих рядом машинах. На выходе получается более живая и правдоподобная картинка с реалистичным освещением, тенями и отражениями даже в тех играх, которым по долгу службы не положено выглядеть красиво. Только взгляните на ролики выше с Minecraft и Quake 2. С точки зрения графики обе игры представляют древнее, как пещерные рисунки, зрелище, которое с добавлением нового освещения заиграло новыми красками.

Разница в трассировке между предыдущими и нынешними поколениями видеокарт

Фото с презентации видеокарт NVIDIA Ampere.

Сразу отметим, что трассировка лучей ― это довольно сложный и ресурсоемкий процесс, который создает серьезную нагрузку на видеокарту. Производители видеокарт стремятся решить ее разными способами ― Radeon, как обычно, пытается придумать хитрое программное решение, которое будет по карману большинству простых игроков. В NVIDIA пошли по пути максимального качества и решили использовать отдельные вычислительные ядра для рейтрейсинга (прим: в видеокартах серии Turing, Ampere и Ada Lovelace).

Первые реализации технологии получились откровенно спорными. Видеокарты в 2019 стали сильно дорожать, поэтому новинка прошла мимо многих рядовых геймеров, а сами разработчики игр не особо понимали, что тут вообще происходит и частенько добавляли пункт «RT On» сугубо для галочки, как это было с трехмерным кино после успеха первого «Аватара». В итоге условные Cyberpunk, Battlefield V и Metro Exodus после добавления рейтрейсинга заметно похорошели. А в Call Of Duty: Modern Warfare и Shadow Of The Tomb Raider видеокарты едва не дымились от повышенной нагрузки, а графика практически не менялась.

Технические нюансы реализации имитации световых лучей в видеокартах GeForce RTX 30XX.

Чтобы доказать публике, что рейтрейсинг ― это всерьез и надолго, осенью 2020 года руководство NVIDIA представило публике следующее поколение видеокарт GeForce Ampere с RT-ядрами нового поколения. NVIDIA увеличила общее количество ядер для обработки освещения, повысила их КПД и приправила все это новыми алгоритмами имитации и оптимизации освещения. К примеру, новый метод трассировки вторичного уровня (Secondary Ray Tracing) научился гораздо лучше работать с глобальным и локальным освещением. В то же время он более точно обрабатывает динамические тени и более точно моделирует поверхность материалов во внутриигровой сцене.

Внедрение технологии SCG (Simultaneous Computer and Graphics) научило видеокарты RTX 30XX разделять графическую и вычислительную работу между разными типами ядер, выполняя ее друг не зависимо от друга. А благодаря развитию технологии искусственного масштабирования DLSS 2.0 инженеры компании смогли существенно снизить нагрузку рейтрейстинга на видеокарту, заставив нейросети дорисовывать пропущенные кадры. В целом получилось гораздо красивее и эффективнее, чем пару лет назад. Но это был лишь разогрев перед финальным блюдом.

Что такое трассировка путей? (технические подробности)

Наглядная разница между трассировкой путей, трассировкой лучей и стандартной растеризацией. Источник: NVIDIA.

Обычная имитация световых лучей, как было описано ранее, отслеживает лучи света, их пересечения с объектами в сцене и взаимодействие с источниками света. Трассировка путей, с другой стороны ― это более мощный и гибкий метод, который симулирует физическое поведение света настолько близко к реальному, насколько это вообще возможно. Если обычный рейтрейсинг многие эксперты называли перевалочным пунктом, трассировка пути выглядит как финальная цель путешествия.

В отличие от обычной имитации освещения, трассировка путей отслеживает путь каждого луча света от источника света до его взаимодействия с объектами и обратно. Она учитывает все виды освещения, включая прямую, отраженную и рассеянную световую энергию, что приводит к более реалистичным и сложным эффектам освещения, в том числе правдоподобным глобальным освещением с несколькими источниками света. По описанию это не так уж сильно отличается от рейтрейсинга, однако под капотом много технических деталей, из-за которых заметно отличается итоговый результат.

Официальный трейлер с презентацией режима Ray Tracing:Overdrive Mode в Cyberpunk 2077:


Первое серьезное тестирование трассировки путей в играх провели специалисты из издания Digital Foundry, опробовав Cyberpunk 2077 в так называемом режиме RT: Overdrive. На роликах и сриншотах видно, насколько сильно меняются многие сцены по сравнению с обычным освещением и базовой имитацией света. К примеру в закрытом гараже с выключенным светом без фонарика вообще ничего не видно. Персонажи выглядят реалистичнее и не подсвечиваются серой аурой. А выходя из темноты на яркий свет, берегите глаза ― солнце слепит, словно на дворе середина июля.

Видео с детальным сравнением обычного рейтрейсинга и трассировки пути от Digital Foundry:


Нужно отметить, что разница в графике настолько заметна из-за того, что в оригинальном билде Cyberpunk 2077 использовалась гибридная система освещения с элементами обычной растеризации и рейтрейсинга. Как говорят разработки из CDPR, при работе с движком у них было жесткое ограничение ― не более 10 источников света с тенями на одну сцену. С помощью трассировки пути они смогли сделать так, чтобы любой источник света создавал тени, а все поверхности отражали или поглощали свет. При этом они учитывают не только статичные источники света, но и движущиеся вроде автомобильных фар или трясущегося в руке фонарика.

Сколько ресурсов съедает трассировка путей и какое железо нужно?

Без DLSS полная трассировка освещения в разрешении 4K ставит на колени даже флагманскую видеокарту GeForce RTX 4090.

Судя по тестам режима RT: Overdrive, который симулирует трассировку путей в Cyberpunk 2077, технология буквально валит с ног любую современную видеокарту. Даже GeForce RTX 4090 с ее 24 ГБ видеопамяти лежит в нокауте, не понимая, какой сегодня день и как дальше жить. В среднем 18 – 20 FPS ― это вообще как? В связи с высокой нагрузкой ребята из CDPR сразу предупредили, что RT: Overdrive ходит под руку с технологией искусственной генерации кадров DLSS 3.0.

В CDPR отметили, что DLSS играет критически важную роль при создании реалистичного изображения. С помощью нейросетей DLSS дорисовывая кадры, на рендеринг которых не хватило ресурсов видеоядра, перенося нагрузку на выделенные для этой задачи тензорные ядра. Также генерация кадров DLSS 3 позволяет повысить качество исходного изображения перед масштабированием. Во время теста Cyberpunk 2077 при включении DLSS 3 в режиме «Производительность» средняя частота кадров вырастала с малоприятных 35 – 40 FPS до более чем комфортных 90 FPS.

Когда трассировка путей хлынет в массы?

Сравнение двух кадров с разными режимами трассировки.

Напоследок отметим, что представленную в Cyberpunk 2077 технологию правильнее всего рассматривать как демку. Красивую и перспективную, но при этом слегка глючную и очень требовательную к ресурсам. NVIDIA активно сотрудничает с крупнейшими ААА-студиями, чтобы поскорее довести ее до ума. К примеру, с помощью фичи NVIDIA RTX Remix (https://www.nvidia.com/ru-ru/geforce/rtx-remix/) с открытым исходным кодом умельцы уже прикрутили трассировку пути к великой и могучей, но изрядно устаревшей Half-Life 2. Как отметили авторы, процесс создания мода оказался довольно простым, так как RTX Remix самостоятельно расставила источники света и автоматизировала кучу других процессов. С релизом RTX Remix в скором времени можно ожидать подобных модов для множества игр.