История 3D-текстурирования в видеоиграх.
Старший художник окружения Insomniac Games Райан Бенно рассказал об истории 3D-текстурирования в играх. Он привёл множество примеров того, какие проблемы возникали у разработчиков на протяжении всего пути, а также показал, как художники смогли справиться с множеством ограничений.
Сперва немного об основах: рендеринг в реальном времени против пререндера. Первое используется в большинстве 3D-игр, и с помощью этого способа железо создаёт изображение в реальном времени. Пререндер требует много вычислительной мощности и времени, чтобы сделать один кадр.
Из-за этого получаются сцены с разным уровнем качества. Из-за интерактивности в играх нужна обработка в реальном времени. А статические элементы, например, синематики или статические фоны, могут быть созданы заранее. Различия между ними были ошеломляющими. Ниже представлен пример из Final Fantasy IX, которая вышла в 1999 году. Можно сравнить, насколько отличаются по качеству заранее отрендеренный фон и персонаж, обработанный в реальном времени.
Пререндер позволяет использовать множество затратных функций, из-за которых обработка одного кадра может растянуться на несколько часов или дней. И это нормально для изображений или фильмов. Но игры должны поддерживать скорость рендера в 30-60 кадров в секунду.
С одной стороны был Star Fox, как ранний пример 3D в реальном времени на 16-битных консолях, а с другой Donkey Kong Country, в которой использовался предварительно отрендеренный CG, преобразованный в спрайты (с сильно упрощённой цветовой палитрой). Долгое время отрисовка в реальном времени на могла достичь подобного результата.
После появления подходящих 3D-консолей, например Nintendo 64 и PS1, стало понятно, чего в режиме реального времени не получится сделать. Нельзя было использовать источники света для запекания теней и света на сцене; не было отклика материала; отсутствовал bump mapping; а геометрия и текстуры были низкого разрешения. И художникам приходилось обходить эти ограничения.
В некоторых случаях информация об освещении (тени, блики, глубина) помещалась прямо в текстуры. Тени игроков обычно были простыми текстурами, которые следуют за персонажем. В то время не было возможности отбрасывать правильные тени.
Тогда можно было получить базовый шейдинг на моделях, но обычно информация об освещении была неправильной. Такие игры, как The Legend of Zelda: Ocarina of Time или Crash Bandicoot, использовали много информации об освещении в своих текстурах и отрисовке вершин на геометрии. Это было сделано, чтобы определённые области выглядели более светлыми, тёмными или окрашенными в определённый цвет.
В то время была проделана огромная творческая работа по преодолению этих ограничений. Рисование или размещение информации об освещении в текстурах до сих пор применяется на разных уровнях. Но по мере того, как рендеринг в реальном времени становится лучше, всё меньше приходится использовать подобные техники.
Следующее поколение консолей PS2, Xbox и Gamecube попытались решить некоторые из этих проблем. В первую очередь улучшения коснулись разрешения текстур и освещения.
Silent Hill 2 была одной из определяющих игр. Самым большим прорывом 2001 года стало использование теней в реальном времени. Некоторая информация об освещении, которую раньше помещали в текстуры, могла быть удалена, но для большей части игр этого поколения они всё ещё активно использовались.
Повышенное разрешение позволило улучшить картинку. Из-за большего количества пикселей в них можно было хранить гораздо больше деталей. Зеркальные отражения были редкостью, так как не было надлежащего отклика от материала.
Это была ещё одна причина, по которой запекание информации в текстуры всё ещё было распространено. В пререндере это не было проблемой: ткань, стекло, волосы и кожа выглядели правдоподобно. У рендеринга в реальном времени такого не было. Но под конец поколения ситуация немного изменилась на Xbox.
Карты бликов и карты нормалей появлялись в таких играх, как Halo 2 и Doom 3. Карты бликов позволили поверхностям реагировать на свет более реалистично — металл стал блестящим и так далее. Нормали позволили добавить больше деталей в объекты с низким количеством полигонов.
Карта нормалей — это тип bump mapping, который позволяет поверхностям реагировать на свет с большей детализацией. Это важная технология, используемая практически во всех моделях вплоть до современности.
С появлением карты нормалей многие игровые художники поменяли способ создания текстур. С картами нормалей приходилось тратить значительно больше времени на создание ассетов. Инструменты для скульптинга, например, Zbrush, стали нормой при создании высокополигональных моделей, запекаемых с текстурой для использования в низкополигональных моделях.
До этого множество текстур либо раскрашивались вручную, либо сшивались вместе в Photoshop, либо совмещали эти подходы. С наступлением эпохи Xbox 360 и PS3 этот способ создания текстур ушёл в прошлое, так как качество ассетов возросло с увеличением разрешения.
Также стало понятно, как работают материалы с пререндерным шейдингом. Это изменило правила игры для многих художников — материалы стали намного сложнее, чем раньше. Это демо 2005 года отличалось от всего, что было на тот момент. Xbox 360 ещё даже не вышла.
Также в то время появился новый способ освещения сцены — ambient occlusion. Это было слишком затратно для рендеринга в реальном времени, поэтому художники просто добавили его в текстуры. АО воссоздаёт непрямые тени от света.
Даже сегодня АО не на 100% обрабатывается в реальном времени. Во многом стало лучше, благодаря SSAO или DFAO. Запечённые карты AO всё ещё используются сегодня, но, вероятно, когда-нибудь исчезнут, так как рендеры станут ещё лучше.
Можно сказать, что эпоха PS3 и X360 поспособствовала значительному улучшению разрешения по сравнению с предыдущим поколением. Кроме того, появились новые текстуры для теней и значительно улучшилось освещение. Теперь можно было получить тени в реальном времени для всей сцены или запечь освещение для большей детализации.
Но были и некоторые недостатки: низкое разрешение моделей и текстур, новые шейдеры, которые требуют большого количества ресурсов и так далее.
Другой проблемой была карта бликов. Тогда на один объект была одна карта того, насколько «блестящим» он был. Из-за этого материалы не воспринимались реальными. Поэтому некоторые разработчики начали разделять карты бликов. Такое было, например, в Bioshock Infinite.
Карты бликов после этого стали разделяться, например, на тип материала (дерево, золото, бетон и так далее) и его состояние (царапины, износ и так далее). Это совпало и с появлением нового типа модели шейдинга — Physically Based Rendering (PBR).
PBR стал стандартом для многих игр. Техника, популяризированная Pixar, стандартизировала способ создания правдоподобных материалов в компьютерной графике. И это может быть применено в режиме реального времени.
Кроме того, появились и дополнительные улучшения, например, tone mapping и color grading. На предыдущем поколении потребовалась бы целая вечность корректирования текстур, чтобы добиться таких эффектов.
На нынешнем поколении также происходит множество увлекательных вещей в этой сфере. И нет сомнений в том, что качество графики будет неизменно расти. В заключение стоит сравнить, какие текстуры потребовались для создания ранней 3D-игры, и какие нужны для создания одного набора текстур в современном тайтле.
Thanks for the information: threadreaderapp.com