Краткая история 3D-текстурирования в видеоиграх

Ryan Benno, старший художник по окружению в Insomniac Games, кратко поведал об истории текстурирования в 3D видеоиграх. Мы прошли долгий путь с первых дней использования 3D в реальном времени в домашних консолях, но до сих пор существуют практики, используемые для создания игровых текстур, которые восходят к тем временам.

В треде в Твиттере он делится интересными фактами из истории видео игр.

Давайте начнём с основ: рендеринг в реальном времени и пререндер. Большинство 3D-игр используют первое, когда ваша машина создаёт изображение в режиме реального времени. Пререндер же требует много вычислительной мощности и времени даже на один кадр.

Как следствие, на выходе вы получите разные уровни качества. Интерактивность требует обработки в реальном времени. А вот статика (синематики, статичные фоны) может быть отрендерена заранее. Различия были ошеломляющими. Сравните отрендеренный заранее фон и персонажа Final Fantasy IX 1999 года, отрисованного в реалтайме.

Пререндер позволяет использовать множество «дорогих» фишек рендеринга, из-за которых обработка одного кадра может растянуться на несколько часов или дней. И это удобно для изображений или фильмов. Но игры должны иметь 30-60 fps.

С одной стороны был Star Fox, как ранний пример 3D в реальном времени на 16-битных консолях, с другой Donkey Kong Country, в которой использовался предварительно отрендеренный CG, преобразованный в спрайты (с сильно упрощённой цветовой палитрой). Долгое время отрисовка в реальном времени на могла достичь подобного результата.

С появлением подходящих 3D-консолей, таких как N64 и PS1, мы увидели, чего отрисовка в реальном времени не позволяла сделать. Нельзя было использовать источники света для запекания теней или источники света в сцене; не было отклика материала, отсутствовал bump mapping, а геометрия и текстуры были низкого разрешения. Как же художники обошли эти ограничения?

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

Вы могли бы получить базовый шейдинг на моделях, но он обычно был лишён правильной информации об освещении. Такие игры как The Legend of Zelda: Ocarina of Time или Crash Bandicoot использовали много информации о свете в своих текстурах и отрисовке вершин на геометрии, чтобы области выглядели более светлыми/тёмными или окрашенными в определённый цвет.

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

Следующее поколение консолей PS2, Xbox и Gamecube попытаются помочь решить некоторые из проблем. В первую очередь улучшения коснулись разрешения текстур и освещения.

Silent Hill 2 была одной из определяющих игр. Самым большим прорывом 2001 года стало использование теней в реальном времени. Некоторая информация об освещении, которую раньше помещали в текстуры, могла быть удалена, но для большей части игр этого поколения они все ещё интенсивно использовались.

Повышенное разрешение позволило улучшить картинку. Из-за большего количества пикселей вы можете хранить в них гораздо больше деталей. Зеркальное отображение было редкостью, т.к. не было надлежащего отклика от материала.

Это ещё одна причина, по которой запекание информации в текстуры всё ещё было распространено. В пререндере это не было проблемой: ткань выглядела более реально; cтекло, волосы и кожа могли выглядеть правдоподобно. Реалтайму нужен был толчок. И они получили его в конце поколения (только на xbox).

Карты бликов и карты нормалей появлялись на сцене в таких играх, как Halo 2 и Doom 3. Карты бликов позволяют поверхностям реагировать на свет более реалистично — металл стал блестящим. Нормали позволяют вам добавить больше деталей в объекты с низким количеством полигонов.

Карта нормалей — это тип bump mapping, позволяющий поверхностям реагировать на свет с большей детализацией.

Многие игровые художники меняли способ создания текстур с появлением карт нормалей. С ними вам приходилось тратить значительно больше времени на создание ассетов. Инструменты для скульптинга, такие как Zbrush, стали нормой при создании высокополигональных моделей, запекаемых в текстуру для использования в низкополигональных.

До этого множество текстур были либо раскрашены вручную, либо сшиты вместе в Фотошопе. С эпохой Xbox 360 и PS3 этот способ создания текстур ушёл в прошлое во многих играх с увеличением разрешения.

Мы также поняли, как работают материалы с пререндерным шейдингом. Это изменило правила игры для многих художников. Материалы стали намного сложнее, чем раньше. Это демо 2005 года было непохоже ни на что, виденное в то время. 360 ещё даже не вышла.

Мы также познакомились с новым способом освещения сцены. Ambient occlusion. Это было слишком дорого для рендеринга в реальном времени, поэтому художники просто добавили его в текстуры! АО воссоздаёт непрямые тени от света.

Даже сегодня в режиме реального времени АО не на 100% реалтайм, но уже близко! Всё благодаря SSAO or DFAO. Запечённые карты AO всё ещё используются сегодня, но, вероятно, когда-нибудь исчезнут, когда рендеры станут ещё лучше.

Подводя итог, можно сказать, что с эпохой PS3 и X360 мы увидели гораздо более высокое разрешение, чем в предыдущем поколении, и новые текстуры для теней. И конечно же, улучшенное освещение! Вы можете получить тени в реальном времени для всей сцены или запечь освещение для большей детализации.

Всё довольно здорово, верно? Ну, были ещё некоторые недостатки: низкое разрешение моделей и текстур, плюс много накладных расходов для новых шейдеров.

Другая проблема — карта бликов. У вас была одна карта того, насколько «блестящим» был объект. Материалы не чувствовались реальными. Некоторые люди стали разделять карты бликов. Одни из них — разработчики Bioshock Infinite.

Карты бликов теперь могут быть разделены между одним типом материала (дерево, золото, бетон и т. д) и «возрастом» материала (царапины, износ и т. д). Это совпало с новым типом модели затенения, Physically Based Rendering (PBR).

Это привело нас к сегодняшнему дню и нынешнему поколению. PBR стал стандартом для многих игр. Техника, популяризированная Pixar, стандартизировала способ создания правдоподобных материалов в компьютерной графике. И это может быть применено в режиме реального времени!

Вдобавок ко всему, появились такие вещи, как tone mapping и color grading, были улучшены в текущем поколении. То, на что в предыдущем поколении вы бы потратили целую вечность, корректируя подобные текстуры.

В заключение я покажу вам, какие текстуры потребовались бы для создания 3D-игры того времени, и что необходимо для создания одного набора текстур в современной игре.

Хотелось бы добавить ещё кое-что. Игры сделаны людьми! Технологии и процессы постоянно меняются, но мы всё равно должны ценить мастеров своей эпохи. Цените историю!