Оглавление
Процессоры и видеокарты с каждым новым поколением становятся всё мощнее. В результате разработчики наиболее крупных видеоигр стремятся повысить реалистичность графики. Сегодняшние самые красивые игры уже выглядят отлично. Могут ли они стать ещё привлекательнее?
Какие будущие технологии станут столь же привычными, как сейчас являются фильтрация текстур и наложение нормалей? Какие компьютерные системы позволят разработчикам достичь более высоких стандартов? Читайте об этом ниже.
С чего всё начиналось
Прежде чем анализировать будущее, стоит вспомнить достижения в области 3D-графики за минувшие годы. Большинству теоретических аспектов 3D-рендеринга (вроде преобразования вершин, проекций окна просмотра, моделей освещения) исполнилось несколько десятков лет.
Например, рассмотрим z-буфер. Это часть памяти для хранения информации о глубине объектов в сцене. Она используется главным образом для определения того, скрыта ли поверхность чем-то другим. Это, в свою очередь, позволяет отбрасывать объекты вместо их рендеринга и обработки, а также может применяться для создания теней.
Концепция z-буфера обычно приписывается кандидату наук Вольфгангу Штрассеру, когда он в 1974 году работал в Берлинском техническом университете. Первое коммерческое оборудование с применением этого буфера появилось примерно спустя 5 лет. Широкой публике пришлось ждать более 20 лет. В середине 1990-х выпустили Nintendo 64 с z-буфером в сопроцессоре Reality.
Это верно и для других стандартов рендеринга. Среди них затенение по Гуро или метод тонирования Гуро (Анри Гуро, 1971); наложение текстур (Эдвин Кэтмулл, 1974); бамп-мэппинг или рельефное текстурирование (Джим Блинн, 1978). Ждать их появления в домашних компьютерах потребовалось десятки лет.
Продвигали эти открытия крупные компании, такие как Sony, Sega и Nintendo, со своими игровыми консолями. По сегодняшним меркам игры для тех консолей, таких как первая PlayStation, были очень примитивными, но разработчики только знакомились с «современным» рендерингом.
Производители компонентов для ПК тоже взяли на вооружение технологии 3D. Всего за 5 лет компьютеры по всему миру получили видеокарты с поддержкой шейдеров, z-буферов, наложения текстур и т. д.
Эволюция графических процессоров должна была стать основой развития трёхмерной графики. Однако, сложно предсказать, как игры будут выглядеть в ближайшем будущем.
Компания MadOnion (позже Futuremark) попыталась попробовать. Она хотела продемонстрировать, как может выглядеть графика, с помощью 3DMark, используя отзывы разработчиков и производителей компонентов. Усилия были направлены на демонстрацию того, что программная и аппаратная эволюция графики идёт слишком быстро, чтобы давать точные прогнозы на будущее.
- Тест в 3DMark2001
- Тест в 3DMark2003
Всё, доступное для численных измерений, росло с бешеной скоростью. На заре появления 3D-игр количество полигонов в кадре часто использовалось для описания уровня графики. Сейчас оно не упоминается, потому что это число очень небольшое.
В первом Tomb Raider на PlayStation главная героиня состояла из 250 треугольников. В современной Shadow of the Tomb Raider на ПК она состоит из 200 тысяч треугольников.
Размер текстур и их количество год от года росли. Сейчас настал такой момент, когда пакет HD-текстур может иметь размер такой же, как у остальных ресурсов игры вместе взятых.
- Doom (1993) весит 0,01 ГБ
- Doom Doom (2016) весит 68 ГБ
Этот непрерывный рост числа полигонов и текстур вызван стремлением к получению всё более реалистичной и детализированной графики.
До сих пор ведётся множество исследований в области процедурной генерации текстур (использующей алгоритмы для генерации текстур на лету) и других методов. Это не означает, что традиционное использование растровых изображений для текстур, наряду с вершинами и индексами моделей, в ближайшем будущем перестанут применять.
Можно быть точно уверенным в одном.
Цифры будут только расти (некоторые падать)
Epic Games пару лет назад с большой помпой показала возможности игрового движка Unreal Engine 5. В центре внимания оказалась новая система геометрии Nanite. Она работает в отдельном проходе рендеринга и транслирует сетки в сцену и из неё с учётом видимости.
Разработчики используют программный растеризатор для треугольников размером меньше пикселя, чтобы снять часть расхода ресурсов на настройку треугольников с видеокарты. Как и любые новые технологии, эта не идеальна и имеет ряд ограничений. И всё же, её демонстрация на PlayStation 5 показала, чего можно ожидать в будущем.
Типичная сетка в этой демонстрации содержит свыше миллиона полигонов, требует 27 МБ памяти (включая все текстуры) и времени рендеринга 4,5 мс для отбраковки, растеризации и оценки материала. В игре Crysis было до 2 млн полигонов для целых сцен.
За минувшие годы появилось множество способов увеличения количества треугольников для создания объектов и сред, таких как тесселяция и геометрические шейдеры. Они помогают улучшить естественную детализацию моделей.
Система Nanite от Epic стала значительным шагом вперёд и можно предположить, что другие разработчики создадут аналоги.
Крайне высокий уровень детализации в некоторых современных играх получит ещё большее распространение в будущем. Насыщенные сцены можно будет наблюдать не только в крупных играх уровня AAA.
- Первый Far Cry
- 17 лет спустя
Текстуры продолжат расти в размере и количестве. Моделям в современных играх требуется целый набор текстурных карт (базовый цвет, нормаль, смещение, отражение, блеск, альбедо), чтобы объект выглядел так, как задумали художники.
Современные мониторы с разрешениями 1440p или 4K стали доступнее прежнего по цене. Множество видеокарт хорошо справляются с этими разрешениями. Кадры состоят из нескольких миллионов пикселей, поэтому текстуры должны иметь такое же высокое разрешение. Это гарантирует, что они не будут размываться при растягивании по модели.
Хотя 4K-игры пока не стали повсеместно распространёнными, будущее связано с мелкими деталями. Занимаемый текстурами объём памяти продолжит расти.
Миллионы обёрнутых текстурами 16K полигонов были бы бесполезны (или не очень реалистичны), если бы не получили правильного освещения и затенения. Моделирование взаимодействия света с объектами в реальном мире с использованием компьютерной 3D-графики являлось темой интенсивных исследований и разработок в течение почти полувека.
Видеокарты нужны для массового расчёта результатов работы множества алгоритмов. Каждый из них имеет важное значение для достижения максимальной реалистичности графики. Долгое время у видеокарт не было ничего для решения этой задачи. Они были и по большей части остались набором многочисленных ALU с плавающей запятой, большого объёма кэш-памяти и множества наборов модулей для обработки данных.
Четыре года назад Nvidia решила вернуться в 1970-е и отдать дань уважения работе Тернера Уиттеда. Тогда она предоставила аппаратную поддержку для ускорения некоторых аспектов священного Грааля рендеринга.
Трассировка лучей появится везде
Традиционная обработка 3D-графики представляет собой набор уловок для создания впечатления, будто вы смотрите на подлинное изображение реального объекта, освещённого реальными источниками света. Трассировка лучей не является реальностью, но она гораздо ближе к ней по сравнению с «растеризацией». При этом растеризация остаётся ключевой составляющей трассировки лучей, как и множество других алгоритмов.
На нынешнем этапе у каждого поставщика графических чипов есть оборудование с поддержкой трассировки лучей, как и в последних консолях от Microsoft и Sony. В первых играх с трассировкой лучей для теней или отражений результат не поражал воображение, но несколько игр показывают потенциал технологии.
Несмотря на снижение производительности из-за трассировки лучей в играх, нет сомнений, что трассировка станет такой же распространённой, как наложение текстур.
Признаки этого очевидны: к концу года у Nvidia будет уже три поколения видеокарт с ускорением трассировки лучей, у AMD — два, а у Intel — одно (хотя есть слухи, что интегрированные графические процессоры Intel тоже получат поддержку).
Два наиболее популярных пакета разработки игр, Unreal Engine и Unity, поддерживают трассировку лучей в последних версиях с использованием конвейера трассировки лучей в DirectX 12. Разработчики графических систем вроде 4A Engine (Metro Exodus), REDengine (Cyberpunk 2077) и Dunia (Far Cry 6) с разной степенью успеха встроили трассировку лучей в старые движки.
Unreal Engine 5
Кто-то скажет, что трассировка лучей не нужна, поскольку есть игры с отличной графикой (как Red Dead Redemption 2) и без неё. Но если забыть о росте системных требований, использование трассировки лучей для всего освещения и теней упростит разработку по сравнению с необходимостью использовать несколько стратегий для получения изображений аналогичного качества.
Использование трассировки лучей избавляет от необходимости применять SSAO (Screen Space Ambient Occlusion). Это относительно лёгкий в плане шейдеров метод, но очень сложный с выборкой и последующим смешиванием из z-буфера. Трассировка лучей включает в себя чтение большого количества данных, но при достаточно большом локальном кэше пропускная способность памяти снижается.
Трассировка лучей нужна не только для того, чтобы сделать графику более реалистичной. При правильной реализации она добавляет ощущение погружения в игру. Например, игра 2019 года Control от Remedy отлично выглядит и работает без трассировки лучей, но с её активацией игровой процесс преображается.
Перемещение персонажа по локациям, сквозь тень и свет, улавливание движения в отражениях оконных стекол. Напряжение и атмосфера заметно усиливаются с трассировкой лучей, что можно и не понять на статичных скриншотах.
Есть множество стилей игр, которые выигрывают от улучшения глобального освещения и затенения. Survival Horror и стелс-приключения в первую очередь, как и симуляторы автоспорта, особенно с ночными гонками и режимами на выносливость.
Даже более скромные игры вроде Minecraft предстают в новом свете, когда трассировка лучей используется для задания освещения, прозрачности, отражений и теней каждой поверхности игрового мира.
Нынешние варианты трассировки лучей в играх относительно ограничены. Обычно она применяется только для теней и/или отражений. Использующие её для всего сразу немногочисленные игры демонстрируют потенциал технологии.
Насколько она может быть улучшена в будущем? На что можно рассчитывать в играх через 5 или 10 лет? Начнём с примера сравнительного теста Blender.
Количество лучей и выборок значительно увеличили по сравнению с настройками по умолчанию. Также были внесены несколько дополнительных улучшений, поэтому на рендеринг на видеокарте GeForce RTX 2080 Super ушло более 9 минут.
На первый взгляд в этом нет ничего особенного. На самом деле тонкость теней, пропускание света через стекло, отражения от картин на стене и плавный переход цветовой градации на полу показывают, на что способна трассировка лучей.
Это явно компьютерная графика, а не «настоящая». Однако, к такому уровню точности графики стремятся разработчики и исследователи.
Даже лучшие демонстрации технологий от производителей видеокарт пока не дотягивают до эталона, по крайней мере на приличной частоте кадров. Ниже приведен скриншот демоверсии Attic от Nvidia, где применяется модифицированная версия Unreal Engine 4 с прямым и глобальным освещением с трассировкой лучей.
Результат смотрится далеко не так хорошо, как в случае с Blender, зато время рендеринга каждого кадра составляет 48 мс, а не 9 минут.
При этом даже со всеми хитростями рендеринга для ускорения процесса, трассировка лучей остаётся прерогативой высокопроизводительных видеокарт. У геймеров со средними или бюджетными картами пока есть один из двух вариантов: включить трассировку лучей, снизив все остальные настройки (сводя на нет смысл использования лучей) или вообще отключить лучи.
Можно представить, что повсеместно доступная трассировка лучей появится только спустя десятилетия, как это было до изобретения карт нормалей или тесселяции в видеокартах.
Однако, есть нечто ещё, что наверняка станет стандартном трёхмерной игровой графики и поможет решить вышеупомянутую проблему.
Апскейлинг станет повсеместным
Когда Nvidia выпустила в 2008 году архитектуру Turing с новым аппаратным обеспечением для ускорения поиска BVH и вычислений пересечения треугольных лучей, продвигалось ещё одно новшество графического процессора: тензорные ядра. Эти блоки представляют собой набор ALU с плавающей запятой, которые умножают и добавляют значения в матрицу.
Впервые они появились годом ранее, в картах Titan V на GPU GV100. Эта видеокарта предназначалась для рабочих станций, а её тензорные ядра использовались в механизмах искусственного интеллекта и машинного обучения.
В Turing и игровых картах Nvidia использовала возможности глубокого обучения для разработки системы масштабирования DLSS. Первая версия была не слишком хороша, а вот нынешняя реализация даёт отличные результаты. AMD и Intel создали собственные версии под именами FSR и XeSS.
Суть подобного масштабирования состоит в том, что видеокарта отображает кадр с гораздо более низким разрешением, чем показанный на мониторе, что повышает производительность. Вместо простого увеличения количества пикселей по каждой оси для получения конечного изображения запускается сложный алгоритм.
Точная природа процесса сформулирована путём обучения математической модели с использованием сотен тысяч изображений того, как должен выглядеть полномасштабный, нетронутый визуализированный кадр.
Это уже не просто масштабирование и изменение отрендеренного ранее кадра. С релизом архитектуры Lovelace (RTX 40) Nvidia показала, что DLSS в третьем поколении может генерировать целые кадры.
Интерполяция кадров имеет не лучшую репутацию из-за её распространения в телевизорах. Как новая система будет работать на практике, пока неизвестно. Зато она демонстрирует направление движения технологии.
Тензорные ядра необязательны для масштабирования на основе ИИ. Система масштабирования AMD FSR (FidelityFX Super Resolution) не основана на глубоком обучении. В ней применяется повторная выборка Ланцоша, а нынешняя версия впоследствии применяет временное сглаживание. Конечные результаты по существу одинаковые: большая производительность при некотором снижении визуального качества.
Поскольку FSR не требует наличия специальных аппаратных блоков, таких как тензорные ядра, его реализация может стать более распространённой по сравнению с DLSS. Особенно с учётом того, что все новейшие игровые консоли используют процессоры и графические процессоры AMD.
Ни одна из современных систем не может считаться идеальной. Алгоритмы испытывают затруднения с мелкими деталями, такими как узкие провода или сетки. Это приводит к появлению мерцающих артефактов вокруг объекта. Всем системам апскейлинга нужно время на обработку графическим процессором. Чем слабее видеокарта, тем меньше прирост производительности.
В любом случае, все новые технологии рендеринга имеют проблемы в первом поколении. Например, тесселяция DirectX 11, когда появилась в первых играх, часто вызывала сбои или серьёзные проблемы с производительностью. Сейчас она почти повсюду работает без единого подтормаживания.
Таким образом, хотя у каждого производителя графических процессоров есть собственный способ масштабирования, сам факт их поддержки (а FSR поддерживается на гораздо большем числе видеокарт, чем DLSS), показывает, что данная технология прижилась.
В результате машинное и глубокое обучение будут применяться не только для масштабирования.
ИИ для создания реалистичного контента
Ощущение реализма в игровом мире определяется не только графикой. Окружение должно вести себя так, как ожидает игрок на основе своего понимания истории и правил игры. Здесь ИИ тоже может прийти на помощь. Практически в любой однопользовательской игре ответы управляемых компьютером персонажей обрабатываются длинной последовательностью утверждений «Если… то… иначе».
Сложно сделать это реалистичным. Легко можно получить глупых неинтересных врагов. Или же неуязвимых противников, способных обнаруживать вас по одному видимому пикселю.
Разработчики сервиса Google Stadia использовали машинное обучение и научили создаваемую ими игру действовать против геймера. Входные данные были в форме игры против самой себя, результаты чего использовались для создания лучшего компьютерного игрока.
В 2017 году исследовательская компания OpenAI, специализирующаяся на машинном обучении, сделала то же. Она заставила компьютер играть против себя в тысячах раундов Dota 2, прежде чем выставить его против лучших геймеров мира.
Может возникнуть опасение, что игры станут слишком сложными, ведь компьютеры способны обрабатывать данные в миллионы раз быстрее людей. Чтобы этого не произошло, можно создать разные уровни сложности на основе количества выполняемых во время обучения нейронных операций.
Так разработчики могли бы создать, например, 10 уровней «ИИ ботов» на основе 10 обучающих сессий. Чем короче обучение, тем примитивнее ИИ.
Кроме того, что ИИ улучшает игровой процесс и ощущения от игр, следует учитывать и саму разработку игр. Процесс создания игровых ресурсов (моделей, текстур и т. д.) занимает много времени. Поскольку миры становятся более сложными и детализированными, время на разработку увеличивается.
В наши дни разработка игр категории AAA требует, чтобы сотни людей посвящали этому делу долгие часы на протяжении многих лет. Разработчики игр ищут способы уменьшить рабочую нагрузку, чему должны помочь производители видеокарт.
Например, моделирование лицевой анимации для соответствия речи может быть очень трудоёмким и дорогостоящим. Компании с деньгами будут использовать захват движения, заставляя актеров озвучивать реплики. Небольшие команды разработчиков могут использовать специализированное программное обеспечение или вручную отображать анимацию.
Nvidia и Remedy Entertainment разработали метод с применением машинного обучения, способный создавать нужное движение многоугольников только на основе воспроизводимой речи. Это не только ускоряет часть процесса создания контента, но и предлагает решение для компаний, желающих расширить базу игроков.
Локализация речи иногда срабатывает не как надо. Анимация лица была сгенерирована под один язык и не совпадает с другим. С помощью описанной выше техники эта проблема решается.
Исследования полей нейронного излучения также выглядят многообещающими для разработчиков игр. Программное обеспечение Nvidia Instant NeRF может создавать 3D-сцены на основе лишь нескольких фотографий и деталях того, как они были сделаны.
NeRF можно использовать для быстрого и простого создания реалистичного меха, шерсти и прочих мягких материалов. Всё это можно сделать на одной видеокарте, но время обучения не позволяет использовать это в играх сейчас.
Самообучение более умных врагов или анимация лица на основе речи недоступны в режиме реального времени или на одной видеокарте. Вычислительная мощность для обработки нейронной сети сейчас находится на уровне суперкомпьютера и требует месяцев обучения.
Однако, 10 лет назад мысль о трассировке лучей в играх вообще была немыслимой.
Изменения в будущих видеокартах/3D-оборудовании
Эта статья началась с вопроса об оборудовании. 50 лет назад исследователи были крайне ограничены в возможностях проверки своих теорий и моделей. Технологии тех лет не были достаточно развитыми.
Подобная работа была прерогативой университетских профессоров, оставаясь в рамках академического мира.
Отчасти так происходит и сейчас, но разработка графики отныне полностью в руках создателей игр и дизайнеров графических процессоров. Например, SSAO создал один из программистов Crytek, искавший способ улучшить тени в игре Crysis.
Сегодня AMD, Intel и Nvidia работают вместе с университетами и игровыми компаниями по всему миру. Они ищут новые способы повышения производительности и качества графики. Вместо десятилетий разработки новых алгоритмов, пока они не станут пригодными для игр, теперь требуется всего несколько лет, а иногда несколько месяцев.
Что насчёт оборудования для поддержки алгоритмов? Будет ли оно продолжать улучшаться теми же темпами, что и в последние 30 лет, или случится замедление?
На данный момент признаков замедления не наблюдается. Последний графический процессор Nvidia AD102 представляет собой огромный шаг вперёд по сравнению со своим предшественником Ampere GA102 по количеству транзисторов, пропускной способности FP32 и общему набору функций.
Чипы в Xbox Series X и PlayStation 5 имеют графические процессоры AMD, на уровне современных видеокарт средней ценовой категории. Разработка игр для консолей часто становится отправной точкой для исследования новых методов повышения производительности. Даже разработчики чипов для мобильных устройств сосредоточены на расширении возможностей своих крошечных графических процессоров.
Это не означает, что следующие несколько поколений видеокарт будут похожи на нынешние, только с большим количеством шейдеров и кэша. Десять лет назад лучшие видеокарты содержали примерно 3,5 млрд транзисторов, а теперь у них 76 млрд наноразмерных транзисторов с вычислительной мощностью FP32 в 25 раз больше.
Это огромное увеличение числа транзисторов нужно не только для ускорения обработки. Современные графические процессоры содержат на своём кристалле всё больше устройств, специализирующихся на трассировке лучей и приложениях искусственного интеллекта. Эти две области будут доминировать в развитии 3D-графики. Одна делает всё более реальным, а другая более играбельным.
В результате будущее компьютерной графики обещает быть ошеломляющим.