На прошлой неделе технический художник и арт-директор Каспер Швайка представил демо-ролики, представляющие его метод процедурного размещения объектов, а также анонсировал грядущую статью для энтузиастов процедурной генерации, пообещав опубликовать её в открытом доступе.
Художник сдержал обещание, поделившись подробной инструкцией, детально описывающей метод динамического GPU-размещения объектов на ландшафте в Unity в стиле Horizon: Zero Dawn от студии Guerilla.
В статье автор рассказывает о преимуществах процедурного размещения, помогающего улучшить производительность за счёт выделения памяти только для отображаемых в кадре объектов и динамического рассеивания их при движении камеры, а также делающего процесс размещения объектов на обширной местности менее утомительным и трудоёмким.
Также разработчик объясняет, как вычислительные шейдеры помогают исполнять логику системы, описывает понятия "области влияния" и "экотипов", а также исследует чанки системы, каждый из которых содержит указатели, становящиеся экземплярами объектов. Кроме того, Каспер делится несколькими фрагментами кода, позволяющими очень быстро и легко воссоздать систему в Unity.
Более того, разработчик обсуждает генерацию случайных чисел, показывает, как выбрать подходящий прототип для каждого указателя, и рассказывает о том, как контролировать плотность размещения прототипов в разных областях, а также делится любопытной техникой для управления пересекающимися экземплярами.
Наконец, автор рассказывает о практическом применении системы, обсуждая, как её можно использовать для динамической генерации ландшафтов со специфичными для биомов особенностями, изменения окружения в реальном времени и имитации роста со временем.
Всю статью можно почитать тут.