Репортажи
NVIDIA Turing: еще один шаг к кинореализму в играх
66

NVIDIA Turing: еще один шаг к кинореализму в играх

NVIDIA Turing: еще один шаг к кинореализму в играх

Последние несколько лет NVIDIA не принимает непосредственного участия в игровой выставке Gamescom в Кёльне, а вместо этого проводит собственное мероприятие за день до ее открытия. В этом году компания не изменила своим традициям, однако на этот раз ее Geforce Gaming Celebration оказался на порядок масштабнее, чем обычно.

Повод для этого, впрочем, был самый что ни на есть подходящий: официальное представление игровых видеокарт семейства GeForce RTX на новой архитектуре Turing – а ее появление, по словам представителей компании, является событием такого же масштаба, как и представление вычислительной архитектуры CUDA 10 лет назад. Видимо, именно из этих соображений производитель «перескочил» сразу через десяток «поколений» в нумерации семейства – первые слухи об анонсе оперировали названием GeForce 11 (что было бы логично для преемника очень успешной линейки GeForce 10), однако в реальности новое поколение получило обозначение GeForce 20.

Основная презентация, проведенная президентом компании Хуангом Дженсеном, состоялась вечером 20 августа – все желающие могли посмотреть прямую онлайновую трансляцию, также у нас сразу последовали новости с основными техническими характеристиками новых видеокарт и локальными ценами в Украине (последняя обсуждалась особенно жарко), поэтому подробно на этой части мероприятия NVIDIA мы уже останавливаться не будем, отметим лишь, что Хуанг Дженсен настолько эмоционально вел презентацию, что сумел заразить своим энтузиазмом весь немаленький зрительный зал (где, помимо нескольких сотен журналистов, присутствовали также и тысячи простых посетителей презентации).

Но, помимо собственно GeForce Gaming Celebration, презентация нового поколения видеокарт включала в себя и дополнительный Editor’s Day – мероприятие, как ясно из названия, уже исключительно для прессы, где в течение целого дня представители компании в подробностях рассказывали о новой архитектуре Turing и о том, какую революцию она призвана совершить в игровой индустрии. Вот про этот «день редакторов» мы сегодня и расскажем.

 

Что такое рейтрейсинг?

Но прежде чем переходить к рассмотрению новой архитектуры – немного теории. Итак, до сих пор при создании кадра в 3D-игре, т.е. для преобразования трехмерной сцены в плоскую картинку на экране, используется так называемая растеризация. Здесь вершины треугольников, из которых состоят полигональные объекты, проецируются на плоскую поверхность «экрана» (ее в данном случае можно представить в виде сетки пикселей, где каждому пикселю присваивается характеристика соответствующего полигона). Процесс идет от самых дальних объектов к самым ближним, так что по умолчанию эта сетка пикселей будет по нескольку раз «перезаписываться», когда окажется, что перед уже «пройденным» объектом, например, домом, находится другой объект, например, дерево. До сих пор все развитие игровой графики строилось на оптимизации этого процесса – например, выбрасывании ненужной для данной сцены информации (предметы за пределами кадра или перекрываемые другими объектами). У растеризации есть свои очень сильные достоинства – так, она выполняется быстро, а за счет использования дополнительных «улучшателей» в виде различных шейдеров позволяет получить очень достойный результат… собственно, именно его мы и видим в современных трехмерных играх, поскольку все они на данный момент используют именно этот способ переноса трехмерной сцены на плоскость экрана. Но есть у растеризации и не менее сильные недостатки: например, предметы, не попавшие в кадр, порой все равно должны влиять на то, что находится внутри него (отбрасывать тень на объекты в сцене, отражаться в зеркальных поверхностях, менять цвет рассеянного освещения и т.д.), однако не могут это сделать, поскольку были исключены из расчетов в силу своей «невидимости». Частично это можно исправить с помощью «костылей» вроде карт теней, которые позволяют в ручном режиме «разложить» тени там, где этого хочется разработчику, но это будут именно костыли, неспособные создать полноценную реалистичную и главное – интерактивную картинку. И в любом случае, человеческий глаз – это не «сетка пикселей», проверяющая, что находится перед каждой из ее ячеек. Глаз работает по совершенно другому принципу: лучи света (от солнца, ламп, взрывов и т.д.) отражаются от поверхностей, часть из них попадает в глаз – и вот они-то и создают у нас в голове цельную картину того, что находится перед нами.

И тут мы наконец вплотную подходим к альтернативе растеризации: трассировке лучей, или «рейтрейсингу» (raytracing). Принцип действия звучит просто: изо всех источников света испускаются лучи света, которые «натыкаются» на предметы в сцене и, в зависимости от типа материала, оказавшегося на их пути, могут отразиться под тем или иным углом, поглотиться или пройти сквозь предмет, преломившись по пути. И так они будут «путешествовать» по сцене до тех пор, пока не попадут в «глаз» наблюдателя, т.е., в нашем случае, игрока. Созданное таким образом изображение оказывается гораздо более точным по сравнению с полученным с помощью растеризации — достаточно сказать, что именно так создаются компьютерные спецэффекты в современном кино. Однако здесь возникает одна маленькая проблема – ресурсоемкость (впрочем, «маленькая» она только для кинематографа, где время, потраченное на создание такого изображения, не является критичным параметром). Чтобы использовать эту технологию в играх, она должна работать в режиме реального времени, т.е. успевать прорисовывать десятки кадров в секунду, а сам по себе raytracing – невероятно сложный вычислительный процесс (достаточно сказать, что для каждого кадра нужно просчитать поведение миллионов лучей, причем буквально за считанные миллисекунды), и даже самые мощные современные игровые системы и близко не подошли к такой производительности.

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

Так, весной на конференции разработчиков игр GDC Microsoft представила расширение DirectX 12 — DirectX Raytracing (DXR). Новое API предназначено для аппаратного ускорения трассировки лучей в DirectX-играх и используется в связке с традиционной растеризацией – оказалось, что ее вполне реально применять для базового расчета сцены и добавлять рейтрейсинг для вычисления достоверного освещения, теней, отражений и других эффектов, невозможных при использовании растеризации. Такой «гибридный» рендеринг позволяет создавать гораздо более реалистичные и привычные для человеческого глаза сцены, и при этом он оказывается менее требовательным к ресурсам, чем «полный» рейтрейсинг всей сцены – настолько, что его уже почти можно было использовать на современном «железе» (пусть и с явно недостаточной для комфортной игры производительностью даже на топовых конфигурациях полугодичной давности). Тогда же стало известно, что NVIDIA плотно сотрудничает с Microsoft над реализацией DXR. Впрочем, для менее широкой аудитории уже давно не секрет, что NVIDIA ведет разработки в этом направлении – еще в 2008 году на аналогичном Editor’s Day сотрудники компании показывали первую версию своего гибридного рейтрейсинга и говорили, что именно за ним будущее трехмерных игр.

Однако практическая выгода от появления DXR оставалась довольно туманной до конца лета, а точнее, до громкого анонса новой архитектуры NVIDIA Turing с аппаратной поддержкой гибридного рейтрейсинга и новой, 20-й серии игровых видеокарт GeForce RTX.

 

Что нового в новой архитектуре?

Итак, NVIDIA Turing. Главным нововведением этой платформы являются два новых типа ядер: RT-ядра для расчета трассировки лучей в реальном времени и тензорные ядра для задач, связанных с искусственным интеллектом. Отметим, что тензорные ядра впервые появились еще в архитектуре Volta (использовавшейся в видеокартах NVIDIA Titan V и Quadro GV100), однако в Turing они были обновлены, получив более высокую производительность в задачах тренировки нейронных сетей, а также при расчетах с пониженной точностью. NVIDIA переработала архитектуру потоковых мультипроцессоров (streaming multiprocessors, или SM — грубо говоря, основных блоков, из которых и «собирается» собственно GPU), и теперь каждый SM состоит из 64 ядер CUDA, плюс к ним добавлены 8 тензорных ядер и одно RT-ядро. Всего в GPU TU102 (которое используется в видеокарте GeForce RTX 2080 Ti) входит 72 мультипроцессора.

Одним из серьезных новшеств мультипроцессора Turing стало добавление отдельных блоков для выполнения целочисленных операций – это дает заметный прирост производительности в играх, поскольку в современных проектах, по словам докладчика, на каждые 100 операций с плавающей точкой приходится порядка 36 целочисленных операций, и теперь они будут выполняться одновременно, а не последовательно, как на видеокартах предыдущего поколения.

Также NVIDIA представила новую архитектуру кэш-памяти. У Pascal было два отдельных блока памяти – L1 и общая память (и это создавало определенную «неразбериху» и неоптимальное их использование различными приложениями), в Turing же их объединили – новый вариант (представленный еще в Volta и наконец добравшийся до потребительских видеокарт) получил название «унифицированной архитектуры кэш-памяти» и позволяет более гибко использовать кэш первого уровня, повышает его пропускную способность и снижает задержки. Также в Turing удвоен объем L2-кэша – с 3 до 6 МБ. Все эти решения позволили заметно повысить скорость обработки шейдеров – если верить показанной во время презентации диаграмме, в реальных играх новая архитектура памяти позволяет получить минимум полуторакратный прирост производительности.

Еще один предмет гордости NVIDIA – GPU на базе Turing стали первыми чипами с поддержкой памяти GDDR6. Заявлена пропускная способность интерфейса на уровне 14 Гбит/с (на треть выше, чем у предыдущего поколения), а также снижение уровня перекрестных помех на 40%.

Как говорилось чуть выше, Turing «унаследовал» от Volta тензорные ядра для задач, связанных с искусственным интеллектом. По сути, тензорное ядро – это АЛУ, предназначенное для выполнения матричных операций, поскольку именно умножение матриц и лежит в основе всего глубокого обучения ИИ. Не будем вдаваться в совсем уж технические дебри, отметим лишь, что благодаря наличию специализированных ядер новые видеокарты показывают в несколько раз большую производительность в таких задачах по сравнению с архитектурой Pascal.

Забегая чуть вперед — тензорные ядра также используются для «шумоподавления» и очистки полученного при рейтрейсинге изображения, что позволяет уменьшить количество лучей, необходимых для построения сцены (и, соответственно, ускорить процесс).

Возвращаясь к рейтрейсингу – на сегодняшний день стандартным алгоритмом для оптимизации определения видимости треугольников в сцене является т.н. bounding volume hierarchy (BVH) – своеобразная древовидная структура, группирующая треугольники в блоки все большего объема. Благодаря такому подходу в процессе определения, попал ли луч в треугольник, не приходится перебирать все треугольники в сцене: нужно проверить сначала самые большие блоки, найти требуемый, проверить входящие в него блоки и т.д., до тех пор, пока луч не «доберется» до конкретного треугольника.

Но даже с такой оптимизацией процесса при использовании программной эмуляции мультипроцессор Pascal тратит многие тысячи итераций для каждого луча, что, естественно, перегружает работой GPU, не давая ему заниматься другими задачами по прорисовке сцены. Чтобы «разгрузить» его, в Turing и были добавлены выделенные RT-ядра, занимающиеся исключительно этими расчетами: мультипроцессор просто «запускает луч» и получает от RT-ядра уже готовый результат.

В итоге, по данным NVIDIA, при расчете рейтрейсинга видеокарта GeForce RTX 2080 Ti демонстрирует в 10 раз более высокую производительность по сравнению с GeForce GTX 1080 Ti (больше 10 «гига лучей в секунду»).

Кроме того, NVIDIA представила ряд новых технологий, которые будут доступны на новой архитектуре. Одна из них – это Mesh Shading, с помощью которой разработчики игр смогут перекладывать на GPU задачи по расчету уровней детализации объектов. Сейчас LOD считается на CPU, что в случае сложных сцен со множеством объектов просто «забивает» процессор работой – так что в современных играх количество предметов в кадре обычно довольно ограниченно. С помощью же Mesh Shading эти вычисления будут производиться видеокартой, которая гораздо лучше приспособлена для таких задач – так, в ходе презентации была продемонстрирована сцена с космическим кораблем в поясе астероидов, в которой на экране отображалось порядка 300 тыс. объектов. По словам докладчика, это в 10 раз больше, чем было бы возможно при расчете LOD на центральном процессоре, при этом счетчик fps не опускался ниже 60 кадров/сек. Как образно выразился ведущий: «CPU лишь говорит видеокарте – так, в этой сцене будут вот такие объекты, сама с ними разбирайся, и все остальное делает уже GPU».

Вторая технология — Variable Rate Shading, позволяющая разработчикам оптимизировать применение шейдеров, снижая точность расчетов в малозначимых участках кадра (накладывая шейдер на один пиксель и дальше используя полученное значение для нескольких окружающих его пикселей). Это было продемонстрировано на сцене из автогонки, где точность расчета шейдеров для уносящегося назад асфальта в нижней части кадра может быть минимальной – все равно игрок не успеет оценить там все «красоты» дорожного покрытия.

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

 

Зачем нужен рейтрейсинг в играх?

Впрочем, новая архитектура, новые ядра, технологии и т.д. – это, конечно, хорошо, но что это значит для обычного геймера, покупающего такую видеокарту? Что такого дает Turing, что станет недоступно в новых играх для игроков, использующих видео предыдущих поколений?

Итак, гибридный рендеринг в первую очередь позволяет получить правильное глобальное освещение, а также реалистичные тени и отражения в зеркальных поверхностях. Расчет глобального освещения (global illumination) с помощью рейтрейсинга дает возможность правильно осветить сцену с помощью имеющихся источников света, в том числе и находящихся за пределами кадра, а также учесть отраженный свет от залитых светом предметов. Во время презентации это демонстрировалось на примере Metro Exodus, где заброшенный деревенский домик освещался исключительно через один-единственный оконный проем. Без использования RTX освещен был лишь прямоугольник напротив окна, в который попадали только стол и пол вокруг него, все остальное помещение было полностью погружено в темноту. После включения RTX стол и фрагмент залитого солнечным светом пола выступили источниками отраженного света и «подсветили» окружающую обстановку, превратив непроглядную тьму комнаты в легкий полумрак. Конечно, аналогичного эффекта можно было бы достичь с помощью различных ухищрений вроде карт теней, однако результат получился бы статичным – смена дня и ночи, взрывы за окном, прошедший персонаж с фонариком и т.д. никак бы не повлияли на освещение интерьера этого домика, в то время как расчет глобального освещения с помощью RTX во всех подобных случаях автоматически выдает корректное изменение освещенности в комнате.

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

И третий «кит», на котором стоит гибридный рендеринг технологии RTX – это отражения. «Честно» отразить окружающую обстановку в зеркальных поверхностях при растеризации практически невозможно: для тех же предметов, находящихся за пределами кадра, приходится использовать статичные кубические карты (cube mapping), которые, разумеется, не могут реагировать на изменяющуюся обстановку в игре. Пожалуй, именно реалистичные отражения и были любимой «фишкой» в презентациях игровых разработчиков, показывавших, чего они могут достичь при помощи RTX. «Переотражения» одной машины в другой на треке в автосиме Assetto Corsa Competizione, эффектные лужи машинного масла в боксах гигантских мехов в долгожданном продолжении Mechwarrior 5: Mercenaries, бесконечная галерея отражений в поставленных друг напротив друга зеркалах в сюрреалистическом Atomic Heart (при этом все виденное в них реально и полностью соответствует происходящему на уровне – например, в районе пятого-шестого отражения можно было разглядеть прогуливающихся в стороне ученых, и в этой зеркальной галерее они себя вели так же, как и в самой сцене). И, конечно, Battlefield V, в котором отражения позволили разработчику добиться настоящей кинематографичности происходящего: вспышки пламени отсвечиваются в глазах, струя огнемета отражается в лужах на брусчатке и окрашивает алым отсветом приклад винтовки у стоящего рядом солдата, в капоте автомобиля можно увидеть перевернутое небо с подбитым штурмовиком, падающим на площадь неподалеку, и т.д.

Однако Turing – это не только рейтрейсинг, но и искусственный интеллект. В теории его можно использовать для самых разных задач (повышение разрешения фото, построение трехмерных моделей на основе плоских изображений, колоризация черно-белых снимков и т.д.), на GeForce RTX с его помощью выполняется новый тип антиалиасинга — Deep Learning Super Sampling, или DLSS. Вкратце принцип его работы таков: NVIDIA в сотрудничестве с разработчиком игр создает идеальные игровые изображения из его проекта на порядок большего разрешения, чем будет использоваться в реальности, и обучает с их помощью нейронную сеть – «вот как данная игра должна выглядеть». После чего ее поддержка добавляется в драйверы, и при запуске этой игры тензорные ядра смогут использовать накопленные «знания» для повышения качества изображения в том разрешении, которое использует геймер.

В ходе презентации все желающие могли увидеть DLSS в действии – на нескольких стендах были установлены по две системы с запущенными на них демо Infiltrator от Epic Games, в одной из которых была установлена видеокарта GeForce GTX 1080 Ti, во второй – RTX 2080 Ti. Демо запускалось в 4K-разрешении, на первом стенде использовался «обычный» антиалиасинг – TAA (temporal anti-aliasing), на втором – DLSS. И если на первом компьютере производительность находилась на уровне ~40 fps, то на втором она была вдвое выше – порядка 80 fps. Собственно, именно такой двухкратный прирост в играх с поддержкой DLSS и демонстрировала NVIDIA на одном из своих слайдов (на нем же видно, что в случае использования TAA GeForce RTX 2080 оказывается в среднем в полтора раза быстрее по сравнению с 1080).

 

Вместо послесловия

Но просто послушать о новинках – явно недостаточно; чтобы получить максимально полное впечатление о новых возможностях архитектуры Turing, в течение двух дней презентации NVIDIA предоставляла возможность лично «пощупать» как технологические демо, так и уже живые билды реальных игр с поддержкой рейтрейсинга.

Сразу стоит отметить, что в разных проектах эффект от использования рейтрейсинга ощущается по-разному: где-то сильнее, где-то слабее, где-то он сразу бросается в глаза, а где-то надо присматриваться и искать его проявления. Так, во время десятиминутного заезда в Assetto Corsa Competizione я, признаться, не ощутил особых отличий от «обычной» графики – реалистичные отражения в машинах не увидишь, когда едешь в одиночку по треку с видом из кабины, да и разглядеть правильное освещение у объектов на обочине сложно, когда проносишься мимо них на 150 км/ч…

Совсем другое дело было с Battlefield V и Metro Exodus. В этих играх хотелось «притормозить» и не спеша разглядывать отражения в окнах или лужах, игру света и тени в кронах деревьев, отсветы вспышек на стенах домов и т.д. Вообще, после знакомства с несколькими проектами сложилось впечатление, что чем медленнее протекает игровой процесс, тем лучше замечаешь все проявления новых технологий и тем сильнее они впечатляют. Так что уже ждем рейтрейсинг в неспешных «ужастиках», где реалистичное освещение вполне может стать составляющей частью геймплея.

Также на стендах присутствовали и собственно «виновницы торжества» — вся представленная линейка из GeForce RTX 2070, 2080 и 2080 Ti, которые пользовались повышенной популярностью у журналистов, выстраивавшихся в очередь для фотосессий.

Естественно, везде были установлены собственные варианты видеокарт, Founders Edition, однако в дальнем углу зала удалось найти и целую раскладку моделей от сторонних производителей – впрочем, платы у них у всех явно были референсные, так что отличались они, по сути, лишь системами охлаждения.

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

На этом первое знакомство с новой архитектурой NVIDIA Turing и линейкой видеокарт GeForce RTX 20 в Кёльне подошло к концу – к сожалению, на мероприятии еще не были доступны коммерческие образцы видеокарт, только инженерные сэмплы, поэтому заранее получить видеокарту для тестирования не представилось возможным. В любом случае, мы надеемся подготовить для вас предметный обзор NVIDIA GeForce RTX 2080 в ближайшее время.


Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: