Пост

Дневник разработки: август

HDRP и процедурное текстурирование

Добрый день!

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

Поля Также это хорошее место, чтобы черпать вдохновение и референсы для разработки

Начну с радостной вести о том, что High Definition Render Pipeline (HDRP) выйдет из беты этой осенью. HDRP - это высококачественный движок визуализации следующего поколения, разработанный в Unity и рассчитанный на современное железо. С ним в комплекте идет набор полезных инструментов для создания контента, таких как визуальный редактор для создания шейдеров и систем частиц, продуманное API для разработки собственных высокопроизводительных систем рендеринга, а также набор дополнительных возможностей, начиная с объемного освещения, заканчивая подповерхностным рассеиванием. Я начал использовать HDRP год назад, когда он находился еще в альфе. Даже на таком раннем этапе выдаваемые им результаты оправдывали мои ожидания. А сейчас в Unity Technologies пообещали, что он станет стабильным как раз перед релизом Rocket Science! Поэтому я занялся переводом игры на последнюю версию движка, чтобы воспользоваться стабильной версией HDRP, как только она станет доступной.

Освещение в HDRP Пример объемного освещения в HDRP

Во-вторых я добавил в игру карту высот Луны. Это оказалось гораздо проще, чем я думал, так что следующим на очереди будет Марс. Я также переписал систему конфигурации планет, после чего каждая планета будет представлена в Солнечной системе, даже если для нее еще нет карт высот и текстур. Такое небесное тело будет выглядеть как простая белая сфера, но вы все равно сможете на него приземлиться.

Тестирование карты высот Луны Тестовая сцена с наложенной картой высот Луны

Последняя вещь, о которой я хотел поговорить - это система текстурирования планеты. Старая система поддерживала только 16 материалов (что совершенно недостаточно для планеты в реальном масштабе), выдавала плохие результаты и ее было сложно конфигурировать и развивать. Мне нужно было разработать систему, которая бы процедурно выбирала материалы, основываясь на легко конфигурируемых параметрах. Я провел исследование того, как это было сделано в других космических симуляторах, а также в популярных библиотеках на рынке, и, в итоге, пришел к собственному решению.

Я разработал модуль процедурного текстурирования планеты с файлом конфигурации, поддерживающим 32 слоя материалов (и я могу в будущем увеличить количество слоев до 64). Эти слои работают как в Фотошопе, только в них присутствует набор параметров, которые контролируют, будет ли материал помещен поверх предыдущего или нет.

Инспектор для процедурного текстурирования Инспектор, с помощью которого я настраиваю модуль процедурного текстурирования

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

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

На сегодня всё, я попробую выбраться с поля, а вам желаю продуктивной наступающей осени.

Авторский пост защищен лицензией CC BY 4.0 .

© unbeGames. Некоторые права защищены.

Популярные теги