Поясняю за рейтрейсинг и Overdrive Mode для Cyberpunk 2077

И чём разница между трассировкой лучей и трассировкой путей.

Уже буквально через сутки выйдет патч для киберпука который добавит новую систему освещения. После показанных кадров у людей возник один вопрос: А где фепесы? На что ответ весьма прямолинеен — освещение.

Начнём чуть издалека, до ~2018 года в играх использовалась только прямая Растеризация для рендера 3D пространства. В давние годы даже такое простое действие как проекция точек фигуры на 2D плоскость экрана казалось очень и очень сложной задачей, но со временем компьютеры смогли осилить и её, а что самое главное начали усложнять и добавлять новые методы для того, что бы быть похожим на второй тип рендера, ранее не виданный для реал тайм графики — Трассировка лучей.

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

* Внимание сейчас начнётся моя визуализация.

Нам необходимо пускать лучи от источников света, далее отражать их от поверхностей и улавливать камерой. Главной проблемой стоит как их кол-во так и кол-во их отражений от поверхностей, которое требует каких то непонятных цифр с большим кол-вом нулей.

рейтрейсинг который используют в кино
рейтрейсинг который используют в кино

И сейчас дамы и господа мы приходим в реальный мир где умные дяди решили пойти по костылям.

Костыль первый

Зачем нам пускать лучи от источника света к камере, если можно пустить луч от камеры к источнику и получить тот же эффект.

Всё круто, но в дело вступают проблемы с соседними источниками, камера просчитывает только свет от источников. Люди решили что и этого уже много, поэтому рейтрейсинг в играх сейчас именно такой.
Всё круто, но в дело вступают проблемы с соседними источниками, камера просчитывает только свет от источников. Люди решили что и этого уже много, поэтому рейтрейсинг в играх сейчас именно такой.

Костыль второй, аля трассировка путей

Если первый костыль быль придуман в 70-е года прошло века, то этот уже в 80-е и привнёс одно небольшое изменение.

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

Ну вот ваш поиск путей
Ну вот ваш поиск путей

Звучит это уже менее производительно, а оно так и есть, что мы и видим в трейлере Overdrive Mode для киберпука, но вместе с этим можно понять почему Nvidia называют это революционной технологией.

Пока в играх обычный костыльный рейтрейсинг кажется технологией будущего, то тут нам заявляют о новом глобальном улучшении которое приближает нас к полноценному RT.

Overdrive Mode

Сейчас секунду внимания для понимания работы киберпука.

На данный момент весь рендер графики в игре разбит на множество пунктов, каждый из которых не пересекается со следующим.

Т.е даже в режиме рейтрейсинга, мы сначала растрируем базовый прямой свет, а далее накладываем поверх более точный RT свет и тени. После чего просчитываем отражённое освещение и применяем к итоговой картинке RT ambient occlusion (тени в углах и между поверхностями) и внимание растрированное отражённое освещение в места, куда не попал RT.

Для этого все игровые места запекают в точки пространства, перемещаясь между которыми можно менять текстуру отражений на объектах (про точность можно сразу забыть)

А теперь начинается магия трассировки путей.

Мы забываем о всех прошлых пунктах и просто ставим задачу отрисовать свет в 2 прохода.

Первый просчитывает прямое, а второй отражённое освещение. ВСЁ!

Теперь внимание супер фичи.

- Нам не нужно пытаться повторить тени от мелких объектов, т.к они появятся сами.

- Нам не нужно повторить ambient occlusion от мелких объектов, т.к он тоже появится сам, даже от самых мелких источников освещения

- Теперь небольшая, но интересная штука, любой источник света окажет максимально влияние на всю сцену, а это к примеру позволяет сделать бесплатный muzzle effect.

Пока я писал первую часть, вышел видео-обзор от Digital Foundry в котором они показали очень интересные кадры с которыми будет легче понять суть происходящего.

На скринах ниже мы видим сравнение обычной растеризации, максимального рейтрейсинга и нового его режима.

В первом случае мы наблюдаем проблему с совмещением растеризации и RT.

Свет исходит от туда, от куда идти и не должен был, это так называемая "утечка света".

На втором такой проблемы нет, то что тёмно, остаётся тёмным и это одна из главным фич трассировки путей.

Это уже рейтрейсинг, но старый и новый режим.
Это уже рейтрейсинг, но старый и новый режим.

На данном скрине мы видим сравнение максимальной растеризации без рейтрейсинга и overdrive мода.

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

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

Поясняю за рейтрейсинг и Overdrive Mode для Cyberpunk 2077

Вот то, о чём я говорил выше. Теперь все, даже самые мелкие объекты в игре отбрасывают тень, а что более удивительно свет от них переотражается и продолжает освещать территорию вокруг, а далее плавно затихает порождая Ambient occlusion.

Поясняю за рейтрейсинг и Overdrive Mode для Cyberpunk 2077

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

Поясняю за рейтрейсинг и Overdrive Mode для Cyberpunk 2077

Тут мы явно видим утечку света и то, как эта проблема решается overdrive модом и трассировкой путей в частности. Свет красиво блокируются, а что самое важное создаёт мягкие тени.

Поясняю за рейтрейсинг и Overdrive Mode для Cyberpunk 2077

Мы опять видим тени от любой геометрии и от любого источника освещения, что добавляет огромное кол-во реализма в сцену, казалось бы таким мелким нововведением.

Поясняю за рейтрейсинг и Overdrive Mode для Cyberpunk 2077

Теперь по поводу muzzle эффекта, т.е света от дульной вспышки который вызывает мягкие тени от объектов. Напоминаю что этот эффект сейчас считается очень дорогим и чаще всего не используется и тем более не порождает мягкие тени. Для поиска путей он бесплатен, т.к кол-во лучей константно, а значит его появление по сути дополнительная фишка.

Поясняю за рейтрейсинг и Overdrive Mode для Cyberpunk 2077

Теперь возвращаемся к словам "Для этого все игровые места запекают в точки пространства", т.е о зондах освещения. На первом скрине мы видим 2 проблемы:

  1. Место в вентиляции не осветилось рейтрейсингом, потому использовались зонды освещения, а они не учитывают каждый угол геометрии, потому полностью освещены солнечным светом.
  2. В отражении мы можем увидеть бак, но видим мы его в базовом материале и текстуре, без финального освещения.

Всё это решается в overdrive моде и финальная каринка получает тени и отражения света в полном объёме.

Поясняю за рейтрейсинг и Overdrive Mode для Cyberpunk 2077

Опять сравнение с растеризацией где видно как у NPC появляются тени в том числе и во рту. + тенью объято всё тело, так же тени появятся даже от цепи на груди npc.

Поясняю за рейтрейсинг и Overdrive Mode для Cyberpunk 2077

В полном видео показано ещё пару моментов которые показывают мощь новой технологии, но DTF более не выдерживает новых медиа файлов, а потому вложить больше я не могу.

Вы можете сами оценить итоговые результаты на видео или же самостоятельно уже завтра (если вы сын миллиардера).

Ну что же, я показал всё что хотел, может что то и забыл, но на то и существуют комментарии. Я уверен что многие из вас напишут что такое освещение уже было в игре 1993 года и работало на процессоре от холодильника.

Будут и те, кто скажут что графика не важна и есть множеств игр без рейтрейсинга или без света вообще и это абсолютно ваш выбор.

Как минимум будут те, кто напишет что всё это развод от Куртки ака главы Nvidia, ради развода гоев на шекели. Это тоже ваше право и я его уважаю.

Но всё же надеюсь я смог показать как обычные мягкие тени и правильное освещение без костылей могут изменить картинку, хоть и тратой огромных ресурсов видеокарты.

Самое важное что вы должны понять. Эра истинного ретйресинга ещё не наступила и вероятно не наступит в течении следующего десятилетия и нам остаётся только наблюдать как технологии меняют мир во круг нас, как минимум мир виртуальный.

Спасибо за прочтение (ну или хотя бы закладку).

824
413 комментария