Трассировка лучей - настоящее и будущее технологий подобных NVIDIA RTX

Статья Трассировка лучей - настоящее и будущее технологий подобных NVIDIA RTX

Автор: Денис Мурин

Дата: 23.10.2019 10:40

+7

Поделитесь с друзьями:

5886

Технология: трассировка лучей, рейтресинг, Ray Tracing

Компании, внедряющие технологию: NVIDIA, AMD, Sony, Microsoft, Intel и другие

Устройства с аппаратной поддержкой ретрейсинга: NVIDIA GeForce RTX 2060, NVIDIA GeForce RTX 2060 Super, NVIDIA GeForce RTX 2070, NVIDIA GeForce RTX 2070 Super, NVIDIA GeForce RTX 2080, NVIDIA GeForce RTX 2080 Super, NVIDIA GeForce RTX 2080 T, NVIDIA Titan RTX, Xbox Scarlet, PlayStation 5 и другие

Игры с трассировкой лучей: Batlefield 5, Shadow of the Tomb Raider, Metro Exodus, Control, Quake II RTX, World of Tanks, Atomic Heart, MechWarrior 5: Mercenaries, Call of Duty: Modern Warfare, Minecraft и другие

Мульфильмы с трассировкой лучей: Тачки, Университет монстров, Тайна Коко и другие

Мы привыкли, что из года в год графика в видеоиграх улучшается настолько медленно, что прогресс почти невозможно заметить. Batman Arkham Knight вышел 4 года назад, но если сказать, что эта игра выходит этой осенью, то никто и глазом не моргнет. Революции случаются, но редко, а их плоды доходят до массового потребителя годами.

Одна из первых таких революций - аппаратное ускорение 3D-графики. Сначала в аркадных автоматах, затем в игровых консолях Sony PlayStation, Sega Saturn и Nintendo 64, а в конце 90-ых на ПК начали появляться первые 3D-ускорители. Это были даже не видеокарты в современном понимании, они делали только то, что заявлено на коробке - ускоряли обработку 3D. Обладателям ранних карт вроде PowerVR и 3dfx Voodoo нужно было иметь отдельное устройство, чтобы не терять аппаратное ускорение в Windows и обычных программах.

NVIDIA GeForce 3 - первая видеокарта с программируемыми шейдерами

Второй революцией было появление программируемых шейдеров. Это программы, исполняемые на видеокарте, изменяющие изображение. Они могут добавлять свет и тени, размытие в движении, создавать прозрачность, новые геометрические детали (тесселляция), отражения и многое другое. Первой видеокартой с программируемыми шейдерами была NVIDIA GeForce 3, а первой игровой консолью - оригинальный Xbox, в котором использовали модифицированную версию чипа NV2A.

Тут, наверное, стоит рассказать про все инновации, которые последовали за последние 18 лет, но… Революций больше не было. Появились новые типы шейдеров, чипы видеокарт становились больше и быстрее, появлялись более совершенные методы рендера и общая база знаний о компьютерной графике непрерывно росла и развивалась. Но революций больше не было.

Ретрейсинг появился в мультфильме «Тачки» в 2006 году

Истоки

На самом деле, абсолютно все люди, интересующиеся компьютерной графикой всегда знали, куда течет вода. Трассировка лучей - это не какая-то новая, уникальная, доселе невиданная идея. Если верить Википедии, то саму концепцию придумали в начале XVI века. Испанцы и португальцы воодушевленно истребляли коренное население Америки, Иван Грозный ползал по люльке, а Альбрехт Дюрер путешествовал по северной Италии, изучал линейную перспективу и придумывал основы современной компьютерной графики. Как он умудрился не столкнуться с Эцио Аудиторе только Ubisoft известно.

Но настоящая движуха пошла только 450 лет спустя, в 1982 году. Скотт Рот придумал концепцию ray casting, «бросание лучей» и эта концепция очень простая. Ваш экран - это камера. Каждый пиксель экрана «бросает луч» (десятки строк кода) в трехмерное пространство, скажем, в сцену игры. Если луч с чем-то столкнулся, то мы получаем данные, что там что-то есть и на каком расстоянии. Крибле-крабле-бумс, получили трехмерную сцену на плоскости монитора!

Отражения в Battlefield 5 было бы очень сложно сделать с SSR. Как только что-то выходит из кадра, оно пропадет в отражении. С RTX - все на месте. Также обратите внимание на правильную экспозицию - отражения заметно темнее оригинала, потому что свет теряет энергию.

А теперь главный сюрприз - эту технику использовали в малоизвестной инди-игре Wolfenstein 3D в 1992 году. И практически больше нигде, потому что так и процессор можно расплавить вместе с радиатором. Что еще хуже, метод бросания лучей не подразумевает тени, отражения, прозрачность, только положение объекта и его цвет.

Вместо затратного бросания лучей стали использовать растеризацию - простейшую проекцию трехмерной сцены в экранное пространство (монитор). Это настолько простой метод, что блок растеризации в современных видеокартах исполняет его практически моментально. Сложность в другом - если просто растеризовать трехмерную сцену, то в ней не будет ничего. Ни информации о свете, тенях, отражениях, прозрачности, яркости, даже о том, на каком расстоянии от камеры (экрана) находятся объекты и какие их части мы не должны видеть.

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

Помните вышеупомянутые 18 лет технического прогресса? Все это время (и даже больше) все силы инженеров, программистов и дизайнеров были брошены на то, чтобы видеоигры выглядели как кино и фотографии, а не цветная размазня. Но чем ближе компьютерная графика приближается к реальности, тем затратнее становятся эффекты, которые ее имитируют. Доходит до того, что имитация становится почти такой же сложной как симуляция.

Уже облучены

Вопреки распространенному мнению даже в кино трассировка лучей для рендеринга эффектов и сцен появилась не так давно. Не в 80-ых, даже не в 90-ых, а в 2006 году в мультфильме «Тачки». Причем не как полная замена растеризации, а только для отражений, теней и затенения фонового освещения (теней там, куда свет просто не доходит).

Отражение солдата в окне в игре Battlefield 5. Такой кадр возможно сделать с SSR, но будет сложно подогнать изображение под перспективу, созданную окном. Движок Frostbite с переменным успехом использует для этого ray casting в экранном пространстве. Впрочем, от артефактов это не всегда спасает. У трассировки лучей всех этих проблем, конечно, нет.

Первым полностью трассированным полнометражным мультфильмом стал «Университет монстров» в 2013 году. И даже это не решило всех проблем, с которыми сталкиваются инженеры Pixar. В техническом пост-мортем они пишут, что в будущем собираются переходить на трассировку пути - более реалистичную и гораздо более требовательную к ресурсам версию трассировки лучей. Звучит страшно, особенно если знать, что первые тестовые кадры мультфильма «Тайна Коко» должны были рендериться 1000 часов на кадр (если тоже захотите повесить серверную ферму Диснея, то секрет простой - сцена с 8 млн источниками света). Только грамотные оптимизации спасли Pixar от разорения от счета за электричество.

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

Shadow of the Tomb Raider RTX ON. В сцене гораздо больше теней, потому что единственный источник света - отверстие в пещере, и заполняющему свету неоткуда взяться. Тень Лары четкая у ее ног и постепенно становится мягче на расстоянии.

Вышеупомянутый Wolfenstein 3D был только началом. Да, для полноценного рендера всей сцены нужно очень много лучей в секунду, но с более простыми задачами справляются даже древние мобильные процессоры в PlayStation 4 и Xbox One. В Killzone: Shadow Fall объемным звук создавался при помощи трассировки - это симуляция, и она не обязательно должна работать со светом. Во многих играх искусственный интеллект бросает лучи, чтобы понять видит противник героя или нет.

В последних играх DICE вроде Battlefield 1 и Star Wars: Battlefront II движок бросает лучи в экранном пространстве, чтобы правильно совмещать отражения с настоящими объектами. В Star Wars: Republic Commando искусственный интеллект джеоносианцев проверял лучами, куда он может прыгнуть. Считать лучами дугу на Intel Pentium III в оригинальном Xbox было слишком затратно, поэтому кидали луч до верхней точки прыжка, а потом еще один в место приземления.

Но самое главное - оффлайновый рендер. Уровни игры экспортируют в 3D-рендерер, который работает с трассировкой лучей или пути, и не торопясь просчитывают свет и тени, а потом экспортируют и «запекают» их в игру. Так игры вроде Mirror’s Edge умудряются выглядеть очень красиво и современно даже 10 лет спустя. Все, что надо - время на оффлайновый рендер и немного (иногда много) видеопамяти. В некоторых движках та же история с картами отражений, хотя Unreal Engine 4, например, умеет создавать их сам. В любом случае, все это - статичные решения, которые очень плохо реагируют, когда по миру игры бегают игроки и пытаются все там поменять. Тут уж либо красота, либо интерактивность. Или уже нет?

Shadow of the Tomb Raider RTX OFF. Все тени мягкие, пещера гораздо светлее, как будто она освещена гигантским невидимым источником света. Многие сталагмиты вообще не отбрасывают видимых теней.

Третья революция

Под конец 2019 года только ленивый не анонсировал поддержку трассировки лучей в своих игровых продуктах. NVIDIA, Crytek, AMD, Microsoft, Sony, Intel - и у всех своя собственная версия.

Растеризация как метод проекции 3D-сцены полезна в первую очередь своей скоростью. Все, что не в кадре - не существует. Все, что не видно - выкидывается. Солипсизм от мира компьютерной графики. Это удобно, но реальный мир работает не так. Что если мы видим отражение того, что у нас за спиной? Что если источник света находится за кадром? Или его перекрывает объект, которого мы не видим? Трассировка лучей может помочь ответить на эти и многие другие вопросы.

Control – в каждом стекле, зеркале, кофейной чашке, лакированном полу, вывеске отражается не только мир игры, но и все динамические объекты. В первую очередь - главная героиня.

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

Это в теории. На практике, даже такие расчеты занимают слишком долго, поэтому инженерам приходится идти на компромиссы. Самые распространенные - уменьшение разрешения (т.е. количества эмиттеров лучей), уменьшение количества лучей, испускаемых пикселем (приводит к появлению шума, с этим борются алгоритмы шумоподавления) и создание потоков лучей, которые будут иметь примерно одинаковые результаты.

Control RTX OFF. Изображения с картами расстояний - это очень хороший метод для статичных источников света, но в Control очень много динамичных источников. В это случае игра не рендерит ничего.

Microsoft DirectX Raytracing

В марте 2018 года на конференции GDC Microsoft анонсировала новый аппаратно-программный интерфейс DirectX Raytracing как надстройку над DirectX 12. Также как и оригинальный DirectX в 1995 году, эта надстройка призвана сделать трассировку лучей в играх стандартизованной. В идеале, любая видеокарта с поддержкой DXR должна работать с любой DXR-игрой. Но проверить правда это или нет мы пока не можем - за это время только NVIDIA выпустила видеокарты с аппаратным ускорением трассировки лучей.

Control RTX ON. В то время как RTX показывает отражения всех объектов, источников света, персонажей и т.д.

NVIDIA RTX

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

Спустя год поддержка RTX появилась всего в пригоршне игр, но каждая показывает технологию с разной стороны.

Control RTX OFF. Игра неплохо справляется с отражениями на первый взгляд, но в них явно отражается не мир игры, а его упрощенная версия. Дополнительный бонус - меньше фонового освещения и освещенных углов помещения, в котором очень мало света.

Battlefield V

Первая игра с поддержкой RTX Battlefield V использует трассировку лучей для отражений, полностью заменяя SSR (screen space reflections) и частично заменяя кубические карты отражений. Последние все еще используются движком игры как запасной вариант - например, на очень большом расстоянии или когда нужно показать отражение в отражении.

К сожалению, игра не слишком богата на блестящие материалы - металлические кузовы автомобилей, стекла и вода - основные места, где можно их разглядеть. Но большинство локации игры находится в полях, горах и разрушенных зданиях времен Второй Мировой войны, где мало современных глянцевых материалов. Star Wars Battlefront II с блестящими полами, пластиковыми штурмовиками и бескрайними стеклянными коридорами был бы гораздо более убедительной демонстрацией технологии.

Control RTX ON. В отражении явно видна геометрия локации и света действительно мало, видны только отражения в глянцевых стенах и силуэт героини.

Shadow of the Tomb Raider

Под стать названию, в Shadow of the Tomb Raider лучи трассируются ради реалистичный теней. В ПК-версии игры очень красивые тени, поэтому разница не всегда заметна, но когда она есть, она резко прибавляет реализм сцене. Как говорят голливудские художники по спецэффектам, «ничто никогда не освещено само по себе», и RTX старательно маскирует то, что это игра, добавляя ей глубину и весомость.

Control

Control - один из самых любопытных примеров игр с RTX хотя бы потому что предыдущая игра, Quantum Break, от ее разработчика Remedy была на том же движке, но местами невероятно страдала от отсутствия данных о всей 3D-сцене. Например, многие диалоги проходили на фоне стекла или металлической двери лифта. Движок игры использует настоящие физически обоснованные материалы, поэтому он знает, что в стекле или двери должны быть отражения. Но единственный доступный метод - отражения в экранном пространстве. Человек смотрит лицом в камеру, а у него за спиной в его отражении… тоже лицо. Добро пожаловать в страну кошмаров.

Control RTX ON. Сразу два эффекта — отражения и непрямой рассеянный свет. Лампа светит на стол, стол окрашивает своим цветом стену и ножку лампы. В жизни этот эффект часто используют на съемках фильмов про заседания — кладут перед каждым персонажем листы бумаги и светят в них. Profit! Персонажи освещены мягким рассеянным светом!

В Control SSR подхватывают заранее сохраненные изображения с картой расстояний, которые проецируется в геометрически верные позиции при помощи трассировки конусов (метод быстрый трассировки, который можно делать даже на консольных процессорах). Это очень хороший метод для игры, в которой невероятно много отражающих поверхностей. Но RTX выводит ее на совершенно новый уровень.

Control RTX OFF. Отражение лампы в доске не такое четкое, стол не отражается почти никак — большая его часть не в кадре, а его цвет не добавляет сцене теплого оттенка.

В экшене Control есть два эффекта, которые пока не появлялись в других играх - контактные тени и непрямой рассеянный свет. Трассировка для контактных теней призвана создавать тени для маленьких объектов, которые слишком малы для разрешения стандартных карт теней. Если вглядываться, то многие объекты в играх «висят» в воздухе, потому что у них либо нет тени, либо их тень не совсем верно соотносится с объектом.

Непрямой рассеянный свет рассчитывает свет, который отражается от поверхности. Например, луч солнца попадет на красный ковер, то соседние стены осветятся красным светом. В некоторых играх (например, оригинальный Mirror’s Edge) есть подобный эффект, но он создается при помощи заранее просчитанных карт освещения и не будет работать с динамическими объектами - например, если сдвинуть источник света или отражающий объект, плюс он не будет отбрасывать свет на персонажей. В игре Control же можно схватить, унести или разрушить практически любой предмет, поэтому классический подход не сработал бы.

Control RTX ON. Стены достаточно блестящие и под достаточно большим углом, чтобы отражать свет из коридора. Контактные тени работают как продвинутая версия затенения фонового освщения - добавляют сцене глубину и прорисовывают детали. Например, четко считывается щель между стенами и полом - потому что эти стены двигаются.

Quake II RTX

В отличие от остальный игр и демок, эта версия Quake II не использует растеризацию в принципе. Абсолютно все объекты и источники света (кроме частиц) проецируются на экран при помощи трассировки пути - более сложного и максимально точного алгоритма трассировки лучей. Текстуры и модели заменены на обновленные, с поддержкой физически обоснованного рендеринга, который нужен для корректного освещения игры.

Control RTX OFF. Игра неплохо справляется с освещением, но отражения на стенах не такие четкие и тень между полом и стенами выглядит как черная краска, а не щель.

Что касается эффектов, то эта игра поддерживает все - отражения, отражения на прозрачных объектах, глобальное освещение, большие, рассеянные источники света, тени, преломления.

На днях прошла новость о том, что NVIDIA набирает людей в их студию Lightspeed для создания RTX-ремейков старых игр. Half-Life 1-2 напрашивается, конечно, и Lightspeed уже делала порт Half-Life 2 на NVIDIA Shield. Но у меня есть идея получше: Star Wars: Jedi Knight II - Jedi Outcast!

Quake 2 RTX – Самое начало игры демонстрирует большинство эффектов - настоящие тени, глобальное освещение с двумя отражениями света (голубое небо - пол - потолок), не точечные источники освещения, отражение на прозрачном стекле и искажения. 6

Intel

Intel занимается поддержкой игр с трассировкой пути дольше всех. В 2004 году они спонсировали проект Quake 3: Ray Traced, в 2006 - Quake 4: Ray Traced, в 2008 - Quake Wars: Ray Traced и в 2010 - Wolfenstein: Ray Traced. В отличие от DirectX Raytracing, эти проекты рассчитывали лучи на многоядерных процессорах, зачастую - на рабочих станциях с двумя, тремя и даже четырьмя многоядерными процессорами. Эти игры были просто демонстрациями технологии и мощности процессоров Intel, играть в них было нельзя.

16 октября 2019 года Wargaming объявил, что в World of Tanks появится трассировка лучей для рендеринга теней от танков. Никакого дополнительного железа для этого не надо - алгоритм, разработанный WG совместно с Intel, должен работать быстро на практически любой машине. Однако, напрямую сравнивать с другими конкурентами эту технологию нельзя - жесткие тени от одного источника света (солнца), это достаточно простая вычислительная задача.

Control RTX ON. Более очевидный пример контактных теней - существующие тени четче и темнее, а мелкие объекты, типа гаек, получают свои тени.

AMD (Microsoft и Sony)

Хотя AMD официально не объявила о своих планах по поддержке аппаратного ускорения трассировки лучей, и Microsoft, и Sony уже подтвердили, что этот функционал будет присутствовать в Xbox Scarlet и PlayStation 5.

Пока можно только спекулировать об имплементации, но, учитывая, что DXR был разработал Microsoft при поддержке и NVIDIA, и AMD, а RTX также работает через аппаратно-программный интерфейс Vulkan, который разрабатывается при активной поддержке AMD, то можно предположить, что в новых видеокартах и SoC (system on chip) компании тоже будут специализированные ядра, ускоряющие трассировку. Так оно или нет не знают даже глубокие инсайдеры, поэтому придется подождать официального анонса или слива информации.

Control RTX OFF. Разница небольшая, но, если знаешь, куда смотреть, заметная.

Crytek

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

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

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

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

Будь в демке хотя бы десяток персонажей, она работала бы гораздо медленнее. Во-вторых, это метод работает исключительно в CryEngine, тогда как Microsoft DirectX Raytracing создан не только с учетом множества игровых движков, но и множества игровых платформ - по меньшей мере, Windows 10 и Xbox Scarlett. Ну и наконец, практически никто не делает игры на CryEngine. Unreal Engine 4 и Unity остаются королями готовых решений для создания игр, доля CryEngine на рынке сравнима со статистической погрешностью.

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

Будущее за лучами?

Хочется верить, что да. Трассировка лучей - далеко не единственный метод создания фотореалистичной компьютерной графики, но, возможно, самый простой с точки зрения разработчика. Это симуляция физическое поведения света. В идеале она «просто работает». Загружаешь модели, расставляешь свет, выбираешь угол обзора и вуаля - виртуальное кино. Как вы уже могли понять, сейчас все не так просто. Переход от растеризованной графики, к которой мы привыкли, займет время. Возможно десятилетия. Может меньше.

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

Но если посмотреть в прошлое на «Тачки», первый мультфильм, который использовал трассировку лучей, то его список эффектов звучит до боли знакомо. Отражения, тени, затенение фонового освещения в 2048x1080. Сейчас в Control те же самые эффекты работают в 3840x2160 со скоростью 60 кадров в секунду. 16 мс на кадр вместо часов и дней. И когда слышишь бесконечные новости про лут-боксы, систематические уходы игровых издателей от налогов, баны игроков, остается одна надежда - что совсем скоро будущие игры будут безумно красивыми.

Что ещё почитать?
Для Alan Wake 2 вышло второе DLC
Для Alan Wake 2 вышло второе DLC
Максим Антонов, 24.10.2024
Beyond Good & Evil 2 всё ещё в разработке
Beyond Good & Evil 2 всё ещё в разработке
Максим Антонов, 26.10.2024
The Wolf Among Us 2 не отменена
The Wolf Among Us 2 не отменена
Максим Антонов, 26.10.2024
Джинкс добавят в файтинг 2XKO
Джинкс добавят в файтинг 2XKO
Максим Антонов, 13.11.2024
Sony закрыла создателей Concord
Sony закрыла создателей Concord
Максим Антонов, 30.10.2024
Back 4 Blood может получить сиквел
Back 4 Blood может получить сиквел
Максим Антонов, 19.11.2024
Статьи о компании NVIDIA