Как устроены технологии графики в современных играх
Gamedev
Владимир Семыкин

Как освещается Манхэттен: процедурные отражения и источники света в 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 на тайл
Light Probes могут разместиться и на пересечении небольших дорог

Разработчики создали систему, благодаря которой Light Probes могут создавать отражения для всего города. Близкие объекты отражаются в высоком разрешении, а далёкие — в низком.

В Light Probes содержится кубическая карта, каждая сторона которой имеет разрешение 512х512. Для текстур отражения используется технология mip-mapping, которая позволяет создать ещё пять уровней кубической карты — каждый представляет свою степень глянцевости.

Кубическая карта для Light Probes

Чтобы создать отражения для всего города, а не только для соседних тайлов, игра всегда хранит в памяти самый нижний уровень mip-текстуры, а также все здания виртуального Манхэттена — вместе эти элементы составляют нижний LOD этого мира. По словам Гальперина, весь «снимок» геометрии мира весит около 101 Мбайта, а нижний уровень mip-текстуры — около 90 Мбайт.

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

Облако точек
Геометрия самих зданий

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

Для каждого здания команда создаёт по два атласа текстур: в первом содержится RGB альбедо, во втором — отражения, глянцевость и излучение. Атласы каждого здания собраны из кусочков атласов соседних построек.

Атлас, который используется зданиями в нескольких соседних тайлах

Геометрия игрового мира также используется для создания карты освещения, которая нужна для просчитывания рассеянного света в открытом мире. С помощью этой карты можно понять, как каждый тайл влияет на своё окружения.

Каждый тайл делится на зоны по 16х16 метров — и по горизонтали, и по вертикали. Всё это позволяет сгенерировать кубическую карту для каждой отдельной зоны и определить поведение рассеянного света.

{ "author_name": "Владимир Семыкин", "author_type": "editor", "tags": ["\u043e\u043f\u044b\u0442","\u043b\u0435\u0432\u0435\u043b\u0434\u0438\u0437\u0430\u0439\u043d","\u0430\u0440\u0442"], "comments": 27, "likes": 126, "favorites": 167, "is_advertisement": false, "subsite_label": "gamedev", "id": 765306, "is_wide": true, "is_ugc": false, "date": "Wed, 16 Jun 2021 11:14:50 +0300", "is_special": false }
(function (w, d, css, imgs) { var teaser = d.querySelector('.' + css.root); var isFeed = d.querySelector('[air-module="module.feed"]'); if (teaser) { teaser.classList.add(css.sitename); if (isFeed) { teaser.classList.add(css.index); } else { teaser.classList.add(css.entry); } loadImages(imgs).then(function () { teaser.classList.add(css.loaded); }); } function loadImages(urls) { return Promise.all(urls.map(function (url) { return new Promise(function (resolve) { var img = d.createElement('img'); img.onload = resolve; img.onerror = resolve; img.src = url; }); })); }; }(window, document, { root: 'pixonic-banner', index: 'pixonic-banner--index', entry: 'pixonic-banner--entry', loaded: 'pixonic-banner--loaded', sitename: 'pixonic-banner--' + (window.__codename || 'vc') }, [ 'https://leonardo.osnova.io/f78d51cb-71d0-5ce2-90de-b2c88340b6b6/', ]));
0
27 комментариев
Популярные
По порядку
Написать комментарий...
27

Спасибо за перевод. Жаль, что QA-секции не переводишь, там много интересных вопросов бывает. Конкретно тут:
1. Был неплохой вопрос про теги и то, как они исключают объекты из алгоритма по созданию импостеров. К примеру, пустышки не для всей геометрии — некоторые части зданий (часто на крышах), не понижают в качестве. Это относятся к кондеям, бочкам с водой и прочим объектам.
2. Они не встроили Худини в свой движок, но используют его в хедлес моде, вызывая его через шел.
3. Рефлекшн мепы обновляются в среднем дважды в секунду.

Ответить
32

*говорит на девелоперском

Ответить
25

Как освещается Манхэттен

Вопреки преступлениям Человека-Паука!

Ответить
2

Согласен. Человек-Паук - угроза!

Ответить
10

Старший технический художник Insomniac Games Иксрей Гальперин (Xray Halperin)

Как вы сына назовете, так она и поплывет

Ответить
0

Долго переводили что-то.

Ответить
4

так запись лекции опубликовали лишь несколько дней назад

Ответить
1

А причем здесь левел-дизайн? Разве отражения это не работа левел-артистов?

Ответить
–5

Гальперин

Теперь понятно, кова чёрта Стопгейм каждому экзу соней отсасывает.

Кроме дейс гон, ведь обзорщик дейс гона наиграл три часа.

Ответить
1

Но ведь он Гальперов

Ответить
0

Ну да.
Был бы в Сони Гальперов, а не Гальперин, так ретёрналу бы натянули не до похвально, а до изумительно.

Ответить
0

Ты на стопгейм не ходи тогда

Ответить
0

Забавно что Гальперов у них главный сониеб

Ответить

Комментарий удален

0

ПроцедурныЕ

Ответить
0

спасибо, поправил

Ответить
0

как освещают карту зельды?

Ответить
0

По старинке лайтмапами

Ответить
–1

правильный ответ - говено

Ответить
0

А это, фалк, неправильный ответ

Ответить
0

но мне он больше нравится

Ответить
0

Рентген Гальперин

Ответить
0

в первом содержится RGB и альбедо,

Там просто RGB альбедо, без и.

Ответить
0

Спасибо за перевод.
Прикольные решения, однако!

Ответить
Читать все 27 комментариев
{"hash":"410a9fb0","params":{"id":"dtfru","service":1,"title":"\u041f\u0440\u044f\u043c\u043e\u0439 \u044d\u0444\u0438\u0440","isLegacy":false}}