Как освещается Манхэттен: процедурные отражения и источники света в Marvel's Spider-Man
Модульный город, построенный на основе облаков точек.
Старший технический художник Insomniac Games Иксрей Гальперин (Xray Halperin) выступил с докладом на GDC 2019, в котором рассказал, как команда использовала процедурные инструменты для создания глобального освещения в Marvel's Spider-Man. Мы выбрали из лекции главное.
Задача Гальперина заключалась в поиске процессов, которые можно автоматизировать, чтобы облегчить работу художников. Одним из таких элементов разработки оказалась расстановка освещения по всему Манхэттену.
В докладе Гальперин рассказал про три важные составляющие своей работы:
- расстановку освещения;
- расстановку Light Probes;
- генерацию сетки освещения.
Для реализации системы глобального освещения команда разделила карту мира на 726 тайлов, размер которых составляет 128х128 метров. Эти тайлы используются для оптимизации загрузки контента — когда Человек-паук попадает в тайл, соседние зоны подгружаются, а предыдущие выгружаются из памяти. Несмотря на удобство такой системы, она накладывает ограничения на дальность отражений в игре.
Чтобы генератор мог автоматически поместить объекты освещения в игровой мир, разработчики сформировали список правил. К примеру, у фонарных столбов прописано, как далеко они должны находиться от обочины и друг от друга.
Когда все фонари расставлены, команда создаёт особую карту, на которой можно увидеть расположение всех источников освещения — так она может обнаружить места с недостатком света.
Light Probes используются для создания карты отражений — они также размещаются процедурно по правилам, прописанным художниками. Обычно на каждом тайле находится по четыре Light Probes, но в некоторых случаях нужны дополнительные.
Первый этап размещения Light Probes — разделение тайла на четыре зоны. Затем генератор выбирает оптимальное место для Light Probes — обычно оно находится на пересечении крупных дорог.
Разработчики создали систему, благодаря которой Light Probes могут создавать отражения для всего города. Близкие объекты отражаются в высоком разрешении, а далёкие — в низком.
В Light Probes содержится кубическая карта, каждая сторона которой имеет разрешение 512х512. Для текстур отражения используется технология mip-mapping, которая позволяет создать ещё пять уровней кубической карты — каждый представляет свою степень глянцевости.
Чтобы создать отражения для всего города, а не только для соседних тайлов, игра всегда хранит в памяти самый нижний уровень mip-текстуры, а также все здания виртуального Манхэттена — вместе эти элементы составляют нижний LOD этого мира. По словам Гальперина, весь «снимок» геометрии мира весит около 101 Мбайта, а нижний уровень mip-текстуры — около 90 Мбайт.
Но как вся геометрия острова умещается всего в 101 мегабайт? Разработчик рассказал, что всё дело в особом подходе к созданию окружения. Все здания состоят из множества модулей, которые размещаются поверх облака точек — именно эти точки ответственны за форму каждого строения.
Для дополнительной оптимизации система ищет большие поверхности с повторяющимися модулями, а затем объединяет эти полигоны. В процессе оптимизации количество полигонов может снизиться с десятков тысяч до 5 тысяч.
Для каждого здания команда создаёт по два атласа текстур: в первом содержится RGB альбедо, во втором — отражения, глянцевость и излучение. Атласы каждого здания собраны из кусочков атласов соседних построек.
Геометрия игрового мира также используется для создания карты освещения, которая нужна для просчитывания рассеянного света в открытом мире. С помощью этой карты можно понять, как каждый тайл влияет на своё окружения.
Каждый тайл делится на зоны по 16х16 метров — и по горизонтали, и по вертикали. Всё это позволяет сгенерировать кубическую карту для каждой отдельной зоны и определить поведение рассеянного света.