Лабиринт отражений: история трассировки лучей в играх

Технология, которая уже десять лет идёт в «риалтайм».

Лабиринт отражений: история трассировки лучей в играх

У энтузиастов компьютерной графики раз в несколько лет обязательно возникает повод для бурных дискуссий: очередную технологию для заранее просчитанной графики удаётся «протащить» в игры — то есть начать обрабатывать в реальном времени.

Каждый такой сдвиг серьёзно разделяет поколения железа на «до» и «после». Когда-то такими водоразделами являлись шейдеры, бамп-мэппинг и нормал-мэппинг, имитации глобального освещения и даже продвинутые эффекты частиц.

Сегодня из шкафа обещаний вновь достали, наверное, самую заезженную легенду — трассировку лучей в реальном времени. Причём сделали это достаточно громко: Microsoft, NVIDIA, 4A Games, Epic и многие другие привезли на GDC сразу несколько демо-версий, где наглядно показали не столько плюсы технологии ray tracing, сколько в целом возможности её практической реализации в реальном времени. Достижение это, вне сомнения, историческое. Однако раскатывать губу пока не стоит.

Святой грааль

Суть трассировки лучей в 3D-графике достаточно проста: алгоритм имитирует движение лучей света, которые находятся в поле зрения камеры. Он следит за лучами (отсюда «трассировка«) и вносит коррективы в освещение сцены в зависимости от преломления, наличия отражающих поверхностей и объектов, которые стоят на пути лучей. В этом плане трассировка — это не очередной трюк, а весьма «честная» имитация того, как ведёт себя фотон в реальном мире в пределах обзора камеры.

Наглядная иллюстрация работы алгоритма трассировки лучей

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

Имитация преломления света с помощью трассировки лучей

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

Лучистый Quake

Мы ещё вернёмся к успехам Microsoft и Nvidia, но перед этим будет не лишним рассказать про более ранние попытки привнести трассировку лучей в «риалтаймовую» графику.

Лабиринт отражений: история трассировки лучей в играх

В этом контексте нельзя не вспомнить демонстрацию Quake Wars: Ray Traced. Это проект корпорации Intel, который наглядно показывал плюсы частичной трассировки лучей на примере мультиплеерного шутера Quake Wars.

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

Лабиринт отражений: история трассировки лучей в играх

При разрешении в 720p демо работало при 20-40 кадрах в секунду, что было очень достойным результатом для 2009 года. Развитием этой демонстрации стал проект Wolfenstein: Ray Traced, который воплощал «облачный» подход работы с технологией, но дальше технодемок у Intel дело не пошло. Ускоритель Larrabee отменили, а в свежие процессоры Intel и вовсе ставят графику от AMD.

Лабиринт отражений: история трассировки лучей в играх

Не забывают про «кваку» и энтузиасты. Вполне рабочий способ трассировки продемонстрировал в прошлом году моддер Эдд Бидулф, которому удалось наделить Quake 2 вполне «честными» отражениями. Минусом реализации трассировки от Бидулфа можно назвать сильные артефакты (цифровой «шум» картинки) и видеокарту уровня Titan XP в системных требованиях.

Лабиринт отражений: история трассировки лучей в играх

Консоли тоже робко делали подходы к «честным» техникам, пусть и совсем незаметно. Очень ограниченное использование трассировки лучей было реализовано в Killzone Shadowfall, где малую часть отражаемых объектов отрабатывал алгоритм «ray-trace 2.5D».

Это помогло Guerrilla избавиться от некоторых артефактов современных локальных отражений. В Horizon Zero Dawn этот способ развития не получил, так как там разработчики решили сэкономить на отражениях в первую очередь.

Killzone Shadowfall
Killzone Shadowfall

Схожие техники коррекции локальных отражений использовал и Crysis 3.

Лабиринт отражений: история трассировки лучей в играх

Ну и было бы несправедливо забыть про NVIDIA и её набор библиотек OptiX, который используется в том же Adobe After Effects CC. Собственно, на его базе и будет реализована технология DXR на видеокартах Nvidia.

Лабиринт отражений: история трассировки лучей в играх

Почему никто до сих пор не использует трассировку лучей в реальном времени

Ответ на вопрос из подзаголовка лежит на поверхности — всё дело чудовищной прожорливости даже при заранее просчитанных сценариях.

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

В «Тачках» трассировку использовали очень избирательно
В «Тачках» трассировку использовали очень избирательно

Даже такой гигант как Pixar впервые широко использовал трассировку начиная с мультфильма «Тачки», где требовалось показать реалистичные отражения в машинах.

При этом даже здесь технология работала частично. Какие-то элементы сцены считались «честно» (часть теней, отражения на самих авто), а какие-то вещи отдавались на откуп более экономным способам отображения.

Система «трассировки по запросу» от Pixar под названием REYES или её аналоги часто используются в создании голливудских спецэффектов. Они позволяют сохранить достоверность сцены и при этом уложиться в приемлемые для кинопроизводства сроки.

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

Сравнение SSR и продвинутой трассировки лучей

Долгая невозможность реализации трассировки лучей в реальном времени толкала программистов искать многочисленные обходные пути. Современные игры реализуют огромное количество «обманных» эффектов, типа SSAO, отражений в экранном пространстве, отложенного рендеринга и прочих фокусов, для описания которых нужна отдельная статья.

Артефакты локальных отражений — главный бич современной графики
Артефакты локальных отражений — главный бич современной графики

В качестве примера поговорим о screen space reflections. Это постэффект, который позволяет получить щадящие для «бюджета» сцены и в меру «честные» отражения. При этом, он нагружает исключительно видеокарту и работает так быстро, что его можно в большом количестве использовать в любых ситуациях. Проблема SSR в том, что это достаточно локальный эффект. Как только отражаемый объект пропадает из поля зрения камеры, он пропадает и в отражении. Артефакты SSR — частое явление и разные разработчики решают проблему по-разному.

Лабиринт отражений: история трассировки лучей в играх

По мнению Digital Foundry, ближе всего к совершенству подобрались в Uncharted 4, где используется сразу несколько техник имитации, включая классические кубические карты. В проекте Naughty Dog они переключаются на лету и почти не режут глаз. Такой метод «дыма и зеркал» (простите за ужасный каламбур) широко распространен почти во всех играх ААА-класса.

Трассировка против классических карт теней: разница не так уж разительна
Трассировка против классических карт теней: разница не так уж разительна

Как итог, современная игровая картинка так здорово научилась подделывать «честные» эффекты, что на их фоне прямые реализации той же трассировки не смотрятся так уж впечатляюще.

Что предлагают Microsoft и Nvidia

Под стать подходу Pixar, Microsoft DirectX Raytracing (DXR) и NVIDIA RTX не предлагают «трассировать» всю сцену. Решение использует гибридный подход, когда какие-то элементы кадра считаются классическим способом растеризации (грубо говоря — обманом), а какие-то элементы, вроде отражений и некоторых теней, отрабатывает трассировка лучей.

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

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

Пример игрового освещения с почти полной утилизацией трассировки. Это концепт. Играм на текущем витке таких отражений не светит.
Пример игрового освещения с почти полной утилизацией трассировки. Это концепт. Играм на текущем витке таких отражений не светит.

Адекватная поддержка DXR (трассировка работает на всех DX 12.1 видеокартах, но медленно) появится лишь начиная с архитектуры NVIDIA Volta. Это автоматически отметает большинство современных карт, хотя мы все ещё ждём новости на тему DXR от AMD. Тем более мы знаем, что NVIDIA планирует реализовать RTX и в открытом API Vulkan.

Впечатляющее демо с Капитаном Фазмой просчитывали четыре профессиональных ускорителя на базе NVIDIA Volta. У самой NVIDIA Volta до сих пор нет ни одной анонсированной потребительской версии, так что уже заявленные возможности DXR/RTX в Metro: Exodus увидят единицы.

С другой стороны, DXR уже поддерживают самые популярные игровые движки — Unreal Engine и Unity. Это вне всякого сомнения существенно ускорит интеграцию технологий трассировки в современные игры, включая даже инди-проекты.

Так что в будущем

Если трассировка лучей и вправду «Святой Грааль» графики в реальном времени, то сегодня всем сопричастным удалось прикоснуться к нему лишь на пару мгновений. От полноценного воплощения мечты о честном освещении в играх нас отделяют многие годы и не меньшее количество терафлопс. Такова реальность и её прекрасно осознают и те, кто пытается продвинуть DXR/RTX.

Однако грустить тоже не стоит. На наших глазах ведётся большая и системная работа, которая через одно-два поколения видеокарт может приблизить картинку игр к недосягаемым доселе вершинам. Разве это плохо?

66 показов
20K20K открытий
11 репост
119 комментариев