Анонс игровых видеокарт от NVIDIA на базе архитектуры Turing вызвал немало вопросов, и даже спустя некоторое время после выхода «старших» моделей многие из тех вопросов остаются актуальными. Бюджетные видеокарты этой серии ещё не анонсированы, а цены на RTX 2080 Ti, 2080 и 2070 остаются крайне высокими. При этом большинство игр, которые могли бы наглядно продемонстрировать главную особенность нового поколения видеокарт, ещё не вышли (Atomic Heart), или поддержка в них должна появиться лишь в будущем (Shadow of the Tomb Raider).
В этом материале мы попробуем разобраться, почему такой шум в контексте новых видеокарт вызвала именно поддержка трассировки лучей, а не прочие нововведения — память GDDR6, VirtualLink, NVLink и 8K HEVC.
В чём идея трассировки лучей?
Суть технологии звучит достаточно просто: она отслеживает взаимодействие лучей с поверхностями, на которые эти лучи падают. Соответственно, они могут отражаться, преломляться или проходить насквозь.
Презентация NVIDIA на gamescom, где на примере Battlefield V показывали возможности трассировки лучей в реальном времени.
Как видим, главное отличие — появились отражения огня на других объектах. Эти отражения возникли в результате выстрела из танкового орудия. Иначе говоря, добавился новый источник света, и лучи, исходящие от него, были отражены в глянцевом кузове машины, в диске оставшегося колеса и луже. И каким бы странным ни был такой огонь даже на фоне прошлых частей Battlefield, сами эффекты трассировки были показаны очень наглядно и зрелищно.
Но чтобы лучше понять масштаб нововведений, которые могут нас ждать в будущем, проведём небольшой экскурс в историю.
Как родилась технология?
Сама идея трассировки лучей далеко не нова и вполне успешно применялась в области моделирования, а если точнее, в визуализации и рендеринге.
Началось всё с метода «бросания лучей» (ray casting), который был создан для вычисления гамма-лучей, то есть для изучения радиации. Первый вариант для рендеринга был представлен в 1968 году учёным Артуром Аппелем (Arthur Appel). Суть метода заключалась в генерации луча из точки наблюдения (один луч на один пиксель) и поиске самого близкого объекта, который блокирует его дальнейшее распространение. На основе этих данных с помощью алгоритмов компьютерной графики можно было определить затенение данного объекта. Сам термин ray casting появился лишь в 1982 году.
При создании компьютерной графики для фильма «Трон» 1982 года использовался именно метод бросания лучей.
Следующий важный этап начался в 1979-м. Дело в том, что алгоритмы бросания лучей прослеживали путь луча от наблюдателя лишь до столкновения с объектом. Учёный Тёрнер Уиттед (Turner Whitted) продолжил этот процесс. В его алгоритме луч после попадания на поверхность мог создать три новых типа лучей: отражение, преломление и тень. Соответственно, можно понять, что трассировка лучей — это более сложная серия задач, которая не только использует ray casting для определения точки пересечения луча и объекта, но и вычисляет вторичные и третичные лучи, которые могут быть применены для сбора данных. Те, в свою очередь, нужны для расчёта отражённого или преломлённого света.
В начале 80-х в Осакском университете группа профессоров и студентов создала LINKS-1 — компьютер, работающий на 514 микропроцессорах. Устройство было предназначено для создания трёхмерной графики с использованием трассировки лучей. В 1985 году в павильоне Fujitsu на международной выставке в японском городе Цукуба был представлен первый видеоролик для планетарных залов, полностью смоделированный на LINKS-1.
Так тогда выглядел павильон Fujitsu.
В 1984 году была продемонстрирована BRL-CAD — созданная Баллистической исследовательской лабораторией США система моделирования. Спустя три года для неё был представлен трассировщик (raytracer), особенностью которого была хорошая оптимизация. Общая производительность при рендере доходила до нескольких кадров в секунду, пусть и достигнута она была с помощью нескольких машин с разделяемой памятью. Сама BRL-CAD сегодня относится к программам с открытым исходным кодом и иногда обновляется.
Где трассировка оказалась полезной?
Это Walkie-Talkie — небоскрёб, расположенный на улице Фенчёрч в Лондоне.
Здание отражает солнечный свет так, что на соседней улице плавятся вещи, а люди не стесняются разогревать еду на тротуаре. Одним из пострадавших стал припаркованный Jaguar XJ, у которого от перегрева растеклись зеркала и эмблема.
Но Walkie-Talkie — не единственное сооружение, доставившее проблемы из-за солнечных лучей. К таким зданиям относятся концертный зал Walt Disney в Лос-Анджелесе и отель Vdara в Лас-Вегасе. Подобный эффект получил название «лучи смерти» (death rays). В 2015 году NVIDIA приводила эти здания как примеры ошибки, которой можно было бы избежать с помощью её новой технологии физически корректного рендеринга.
Выходит, что трассировка уже применяется в 3D-моделировании, но за это время и «железо» стало мощнее, и задачи сложнее. О сложностях и поговорим.
Проблемы трассировки лучей
Главной проблемой трассировки лучей является производительность. Для вычислительной техники нет ничего сложного в том, чтобы просчитать поведение одного луча. Но даже если взять сцену, в которой присутствует один источник света и малое количество предметов, в пределах 10, то лучей будет огромное количество. После каждой смены положения камеры необходимо заново просчитывать все эти лучи.
Когда речь идёт о сложном моделировании важных для науки вещей или о создании фильмов (где используется pathtracing, но и каждое движение известно заранее), там есть время на то, чтобы компьютеры долгое время визуализировали каждую секунду.
Этого мы и ждём от трассировки в реальном времени.
Роль Unity, Microsoft и NVIDIA в том, что мы видим сегодня
Сейчас мы подошли к моменту, когда стоит начать говорить именно о трассировке в реальном времени. В играх положение нашего персонажа постоянно меняется, сами объекты тоже двигаются. Всё это делает нашу и без того скверную в плане производительности ситуацию ещё хуже.
В 2008 году Intel показала демонстрационные материалы исследовательского проекта Quake Wars: Ray Traced, основанного на контенте Enemy Territory: Quake Wars. Производительность была на уровне 14—29 кадров в секунду при использовании нескольких четырёхъядерных процессоров и 20—35 кадров с шестиядерными процессорами. Видеокарта была также от Intel, на архитектуре Larrabee, конечные продукты которой так и не поступили в продажу.
https://youtu.be/mtHDSG2wNho
В 2009 году NVIDIA анонсировала Optix — бесплатный пакет программного обеспечения для работы с трассировкой на видеокартах. Совместимыми программами стали Adobe After Effects, Autodesk Maya, 3ds Max и другие.
Новейшая история трассировки лучей в играх началась с Brigade, игрового движка, который смог продемонстрировать достойные результаты трассировки в реальном времени. Само собой, они были не такими красивыми, как картинка в Unreal Engine 4 со статическим освещением, но в Brigade можно было менять количество и характеристики источников света и результат был виден сразу. А в UE4 для полноценного итога требовался рендер с помощью актуальной версии V-Ray.
Само собой, такие результаты не могли остаться незамеченными, и Brigade стала частью графического движка OctaneRender, который вошёл в известный вам Unity. В свою очередь, Unreal Engine принял в себя наработки GPUOpen — пакета программного обеспечения, предлагающего расширенные визуальные эффекты.
Microsoft сделала дополнение к API DirectX 12 в виде DXR (DirectX Raytracing). Позже AMD (создатель GPUOpen) ввела поддержку рейтрейсинга в свой API Vulkan.
А уже в этом году NVIDIA анонсировала и выпустила игровые видеокарты на архитектуре Turing, подразумевающей наличие RT-ядер для работы именно над трассировкой лучей и тензорных ядер (Tensor cores). Последний тип ядер достался в наследство от предыдущей архитектуры — Volta, на базе которой существует всего две разновидности продуктов (Titan V и Quadro GV100), и стоят они очень дорого. Тензорные ядра предназначены для более быстрого решения задач глубинного обучения.
О производительности
Как мы помним, при любом движении камеры все лучи в сцене приходится просчитывать заново. Если же в один момент просто замереть, просчёт, скажем так, этого кадра не остановится и будет бесконечно уточнять то, что мы и так уже видим после пары минут простоя. Даже на более слабых в сравнении с RTX картах спустя несколько секунд можно понять, как будет выглядеть итоговая картинка, только на ней будет присутствовать большое количество «шумов».
Пример работы движка Brigade. Заметна зернистость картинки.
И здесь мы вспоминаем про Optix, в котором с версии 5.0 используется AI-Accelerated Denoiser. Это технология, призванная с помощью натренированных нейронных сетей рисовать картинку, похожую на то, что создавалось с помощью трассировки. В плане затрат мощности такой подход намного проще, но итоговый результат будет хуже, чем полученный с помощью «честной» трассировки.
Denoiser в действии.
Что имеем сегодня?
В играх, где нет трассировки лучей, производительность серии Turing дала стандартный прирост производительности для смены поколения в пределах 20% (хоть и не без неожиданностей).
Из игр с трассировкой лучей имеем только Battlefield V. Стоит заметить, что при включении настроек RTX производительность сильно падает. В плане картинки лучше самостоятельно сравнивать то, что получилось, с тем, что показывали на презентации.
На презентации разница была очень заметна.
В профессиональном софте, как и ожидалось, изменения дали результат в лучшую сторону. Но при выборе помните, что прирост одинаковый не во всех программах: где-то он составляет до 20 % (может и выше), а где-то — десятую долю процента. Например, в OctaneRender сцена Spaceships обработалась на RTX 2080 быстрее на 12 % в сравнении с GTX 1080 Ti.
Больше примеров
В Atomic Heart кроме более мягкой тени можно заметить, что в варианте без RTX справа от робота в стену будто кто-то бросил пакет кефира. Cо включёнными настройками RTX свет от источников в той области более-менее ровный.
Робот из Atomic Heart.
Полное видео
https://youtu.be/1IIiQZw_p_E
В «Метро: Исход» трассировка лучей смогла повлиять даже на атмосферу. Лично мне новый облик кажется слишком жизнерадостным, но это заметно только при сравнении «до» и «после».
Экстерьер дома из Metro: Exodus.
Полное видео
https://youtu.be/Ms7d-3Dprio
Определённо, трассировка лучей в реальном времени может стать важной ступенью на пути игр к фотореалистичной картинке. Но мы надеемся на скорый приход реалистичных теней, отражений в зеркалах и возможности разглядеть противника за спиной, уставившись на отполированную поверхность.
Текущие результаты слишком ранние, чтобы полноценно говорить о том, стоило ли отложить внедрение трассировки в реальном времени ещё на несколько лет, до появления готовых продуктов со стороны видеокарт, софта и игр. Многое зависит от того, заинтересованы ли в технологии AMD и Intel, — конкуренция дала бы больше уверенности в том, что про текущие наработки не забудут с выходом PlayStation 5 и видеокарт от Intel.
В любом случае Unity в своём докладе упомянула подходящий к концу 2018 год как этап, когда в играх только начала появляться трассировка лучей в реальном времени. По словам компании, широкое распространение технология получит лишь в 2020 году.
Благодаря таким людям, как ты, мы продолжаем ежемесячно пачками получать сотни инди-говна с пиксельной графикой 1996 года. Нельзя отделять гемплей от графики, нельзя погрузиться в игру, когда твой игровой персонаж состоит из 20 пикселей, а игровой мир напоминает главное меню игр на NES. Если у тебя нет денег на новое железо, или нет желания их тратить на железо — не надо оправдывать ленивых разработчиков. Игра должна быть отточена везде, и графика не исключение. Тем более в нынешнее время, когда и бесплатные движки есть, и интернет с его неограниченными возможностями по поиску информации.
UPD: а, не. Изотропикс (создатели Клариссы) таки запартнёрились со Нвидией. Но конкретно эта картинка фичерит не RTX, а нвидишный денойзер на нейронках. Тоже фишка 20-ой серии, но это не RTX. Оно и ожидаемо: нафига Клариссе нвидишный рэйтрейс, если у них есть свой охерительный. Сорцhttps://www.youtube.com/watch?v=elWx5d7c_DI
Новая серия видеокарт это исключительно маркетинг! Учитывая, что сами же nV заявляли, мол на складах очень много карт, которые они готовили очевидно «фермерам». При этом известно мы видим, что не шибко они хотят скидывать цены на свои продукты, а под час они вообще выросли.
Но конкретно в реалтайм-графике из-за всех этих проблем (большинство из которых неустранимы фундаментально) Все эти проблемы ну никак не тянут на фундаментальность. Поскольку эти «несовместимости» были рождены ради экономии ресурсов. Другими словами — грубая сила может сделать большинство современных оптимизвций попросту бесполезными. Сейчас все зависит лишь от того — взлетит ли предложенная хуангом концепция или нет. Если взлетит — со временем все забудут эти уловки, поскольку дальнейший рост производительности рейтресинга в концепции нвидиа — возможен. Проблема одна — костыли. Каждая новая технология всегда натыкается на костыли, применявшиеся в старой технологии, часто для обхода этого рождаются новые костыли. Но выдавать костыли за благо — перебор. Да, они необходимы на определенном уровне развития, но со временем начинают мешать. Я не фанатик нвидиа или еще какой корпорации, но надеюсь, что нвидиа таки сможет изменить положение дел и то, что мы видели на презентации, действительно станет реальностью не только для трех с половиной обладателей титанов ртх.
Когда я прочитал написанное мной сообщение, понял что ушел в лютую демагогию, так что да, надо прояснить.
1. нет, ничего из перечисленного я не считаю костылями. Под костылями я имел ввиду уловки вроде occlusion culling и прочего.
2. Именно пример батлы показывает, что рейтрейсинг возможен прямо здесь и сейчас. И этих условных 5% рейтрейсинга на мой взгляд достаточно — опять же, мы говорим об rtx, а не о полном переходе к рейтрейсу. Собственно весь мой первый пост был о том, что у RTX (именно rtx) нет никаких фундаментальных проблем(ведь он работает и просаживает фпс не в 10 или 100 раз).
3. Вообще всегда было плевать на шелковистость волос. И единственное, что я сказал глядя презентацию хэйрворкса: «На%уя?» Естественно между фреймрейтом и «волосами по физону» все адекватные разработчики выбирают первое. А аппетитная приправа в виде честных отражений и немного правильного освещения — согласись, немножко интереснее шевелящихся волос.
4. Еще раз уточню — я не говорил что надо взять и выкинуть весь реалтайм рендеринг и поклониться лучам. Я говорил именно о концепции зеленых — классический рендер плюс немножечко лучиков нате. И да, я тоже ставлю на 1-2 следующих поколения для лучей в мейнстриме, но только ЕСЛИ сейчас у нвидии получится протолкнуть rtx по конским ценам, с низкой производительностью и парой игор.
p.s. Расфокус (эффект DoF с боке) и motion blur. Их однозначно будут делать по-старинке, как пост-эффекты. да, главное чтоб возможность отключать давали, а там пусть как хотят реализуют.