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

Долгий путь от имитации теней к нескольким картам бликов на одной модели.

Старший художник окружения Insomniac Games Райан Бенно в своём треде в Твиттере рассказал об истории 3D-текстурирования в играх. Он привёл множество примеров того, какие проблемы возникали у разработчиков на протяжении всего пути, а также показал, как художники смогли справиться с множеством ограничений. Мы выбрали из треда главное.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Это была ещё одна причина, по которой запекание информации в текстуры всё ещё было распространено. В пререндере это не было проблемой: ткань, стекло, волосы и кожа выглядели правдоподобно. У рендеринга в реальном времени такого не было. Но под конец поколения ситуация немного изменилась на Xbox.

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

Карта нормалей — это тип bump mapping, который позволяет поверхностям реагировать на свет с большей детализацией. Это важная технология, используемая практически во всех моделях вплоть до современности.

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

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

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

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

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

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

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

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

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

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

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

Но были и некоторые недостатки: низкое разрешение моделей и текстур, новые шейдеры, которые требуют большого количества ресурсов и так далее.

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

Другой проблемой была карта бликов. Тогда на один объект была одна карта того, насколько «блестящим» он был. Из-за этого материалы не воспринимались реальными. Поэтому некоторые разработчики начали разделять карты бликов. Такое было, например, в Bioshock Infinite.

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

Карты бликов после этого стали разделяться, например, на тип материала (дерево, золото, бетон и так далее) и его состояние (царапины, износ и так далее). Это совпало и с появлением нового типа модели шейдинга — Physically Based Rendering (PBR).

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

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

Кроме того, появились и дополнительные улучшения, например, tone mapping и color grading. На предыдущем поколении потребовалась бы целая вечность корректирования текстур, чтобы добиться таких эффектов.

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

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

Оригинальный твит:

Перевод всей ветки:

148148
24 комментария

Простите, но перевод просто...очень топорный.
Часть смысла утеряна, там даже некоторые части пропущены.

нет рельефного текстурированияBump Mapping - это бамп маппинг, не надо его переводить.
более детальной детализации улучить но это обычно было лишено правильной информации Риал тайм реалтайм
прям в текстуры

Но для людей далёких от геймдева и не дружащих с английским - сойдёт.

20

Пытался как мог (。•́︿•̀。) Спасибо за рекомендации.

Bump Mapping - это бамп маппинг, не надо его переводить.Но, к примеру, ru вариант статьи про бамп мапинг это и выдаёт: https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BB%D1%8C%D0%B5%D1%84%D0%BD%D0%BE%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D1%83%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5

5

ПБР решает. халявный буст графона для этого поколения.
Жаль, что следующий буст упирается уже в RT, который совсем не халявный.

7

Для того чтобы ПБР нормально отрабатывал требуется полный набор карт вроде рафнеса, металика и AO, что делает разработку заметно дороже, плюс увеличивается нагрузка на железо, чтобы хранить и обрабатывать все эти карты. Тут уж каждый сам решает для себя.

Ох, помню, как в своё время часто пересматривал то самое демо UT3 (тогда ещё UT2007) на PS3 (вроде, было на диске "Игромании"), и просто не мог поверить своим глазам.

Но как же обидно было видеть тот бесстыдный даунгрейд, который провернули с игрой, это просто стыдоба... :(( Оптимизации оптимизациями, но вместо революционной по визуалу UT2007 на выходе получили унылый и мрачный UT3. Потому что "Как в Gears of War!", вот только 1ым Гирям эта эстетика очень шла к лицу, в отличие от Турнира.

На видео: геймплей UT (тогда ещё) 2007 с какой-то презентации (точных данных, увы, не помню).

3

Я никак не пойму, тут на сетке в упор не могу увидеть достаточное количество вертексов чтобы сделать такую плавную их покраску. А если это карта теней, то для чего окно выделять отрезками?

1

Эм, а как вертексы с покраской связаны? Я прост такое экстремальное лоуполи и не делал никогда. Всеж от текселя зависит.

2