[Перевод] Форсаж: ускорение работы Forza Horizon 4 благодаря шейдерам окон

image


Гарет Харвуд — технический арт-директор Playground Games

Действие Forza Horizon 4 происходит в прекрасной Британии, заполненной мгновенно узнаваемыми местами и достопримечательностями, в том числе и моделью города Эдинбурга в версии Playground Games.

В большинстве игр с открытым миром особое внимание нужно уделять скорости потоковой передачи данных, иForza Horizon 4 с её детализированным и пёстрым городом не стала исключением. Для отрисовки зданий Эдинбурга необходимы были новые возможности сборки ресурсов, рендеринга, а также функционал движка, позволяющий загружать модели при движении со скоростью 300 миль в час.


Здания создавались по референсам из реального мира. Для этого необходимо было сфотографировать и изготовить множество домов, однако мы можем создать и физически хранить на диске ограниченное количество зданий. Чтобы справиться с этим ограничением, сохранив при этом вариативность, мы создали взаимозаменяемый модульный набор объектов, которые добавляются к зданиям; к ним относятся такие объекты, как оконные рамы, подъезды, антенны и охранные сигнализации. Также мы обеспечили возможность изменения цветов и оттенков частей этих объектов. Такая система идеально подходила для создания серии домов с террасами, каждый из которых имеет дверь своего цвета.

9d2bcbfc023261b85c8a76d53c48f8b5.jpg


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

Кроме того, это позволило нам сместить сложность моделей ближе к первым этажам; витрины, рядом с которыми проезжает игрок, имеют бОльшую детализацию, чем крыши, которые видны только на расстоянии. Уникальные здания наподобие Монумента Скотта и Национальной галереи в сочетании с модульными зданиями снижают монотонность картинки, в то же время по максимуму обеспечивая многократное использование ресурсов и вариативность.


7109b05063cf8eeff856b8b8e2fff196.jpg


Реалистичные миры всегда были сильной чертой игр Forza Horizon, и один из способов их создания стало добавление в здания интерьеров.

Мы знали, что в Forza Horizon 4 Эдинбург будет настолько плотно застроенным и детализированным, что физически моделируемые интерьеры создадут излишнюю нагрузку. Поэтому мы решили использовать другую технику под названием «параллаксные текстуры». Они дали нам огромное преимущество при создании интерьеров. При запекании их в текстуру их не ограничивает количество полигонов и сложность материалов. Рендеринг таких текстур менее затратен, чем создание геометрии, поэтому в игре может быть больше интерьеров. Раньше необходимо было закрывать окна занавесками или затенять их, но теперь у нас есть полностью параллаксные интерьеры.

02905f5ef40802b0ebaf3e722d186834.jpg


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

Первый слой прост, он содержит только оконную раму и стекло. Он добавляет такие нюансы, как витражи и свинцовое стекло, характерные для старой британской архитектуры. Этот слой имеет diffuse, alpha, roughness, metalness и normal pass. В normal pass содержится вариация каждого витража для добавления реалистичной вариативности углов отражения стекла, которое особо заметно на старых витражах.

35d0ddfd863eebaad7e5d2a279750a52.jpg


Второй слой используется для занавесок или штор. У них есть diffuse и alpha, а также пропускающая свет текстура, которая используется ночью, чтобы показать толщину занавесок. У нас есть плотные занавески, не пропускающие света, просвечивающие шторы и даже занавески с украшениями, которые мы создали из отверстий, частично пропускающего свет.

16291cfde7ef2bc0842a9e4d084f2c4a.jpg


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

У нас есть несколько деревенских атласов, которые рендерятся на деревенских домах, атласы для городских домов, а также несколько атласов коммерческих заведений, которые накладываются на магазины, рестораны и классические британские пабы. Также у нас есть две основные глубины интерьеров. Одна — для стандартных комнат, другая — для неглубоких витрин. Художники могут выбирать, какую часть атласа они хотят использовать для каждого окна здания, а затем задать материалы с помощью свойств полигональной модели каждого окна.

f229d53800397bbb5c05f54ba5078ef5.jpg


Шейдер вычисляет угол, под которым игрок смотрит в комнату, и изменяет UV-координаты таким образом, чтобы он видел только ту часть интерьера, которая была бы видима под этим углом. У этой техники есть несколько ограничений, с которыми мы справились.

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

У каждой текстуры интерьера также есть текстура освещения для вечернего света. Благодаря преимуществам запекания текстуры мы могли использовать любое количество источников света, потому что в результате все они оказываются записанными в текстуру. У каждого здания есть вариации со включенным и выключенным светом.

33d7ebd6329f3c8d50c3f25d84501c06.jpg


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

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

e101e358be34bbcb93d21fcbc2fc96d5.jpg


Независимо от того, путешествуете ли вы неторопливо по Эдинбургу в своём винтажном родстере, рассматривая каждую витрину, или несётесь со скоростью 300 миль в час на суперкаре за миллион фунтов стерлингов, Forza Horizon 4 будет воссоздавать красивое, реалистичное и интересное окружение. Каждая технология, метод рендеринга, шейдер и текстура работают в гармонии, создавая одну из самых технически сложных частей карты Forza Horizon 4.

8cc3caa080fa7f58fa6507c8a3fc2457.jpg

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

© Habrahabr.ru