«Магия» за визуальными эффектами в Red Dead Redemption 2
Не так давно Фабьен Бауэр, старший программист графики в компании Rockstar Games, выступил с довольно интересным докладом на конференции SIGGRAPH 2019. Доклад был на тему визуальных эффектов в Red Dead Redemption 2, прошлогоднего хит-вестерна, и о том, на каких принципах они построены.
Доклад был чрезвычайно обширен и сложен, но у нас все-таки получилось выбрать из него самую интересную информацию, которая будет понятна и обычному читателю. Не стоит забывать, что этот доклад в первую очередь был предназначен для коллег по индустрии г-н Бауэра.
Визуальные эффекты в RDR 2 и как они работают
Согласно словам Бауэра, главной задачей Rockstar Games было корректное отображение природы Дикого Запада конца 19 века. Более того, не какой-то определенной зоны, а сразу нескольких зон с различными климатическими условиями. Чтобы справиться с этой непростой задачей, они решили сосредоточиться на двух аспектах игры: освещение и небо.
Пожалуй, главным вдохновением при работе над освещением и небом для Rockstar стали картины художников из Гудзонской школы. Достаточно посмотреть на следующие несколько примеров, чтобы понять, о чем мы говорим:
Художники из этой школы всегда старались изображать в своих картинах следующие элементы: объемное и реалистичное освещение, лучи от солнца, преломляющиеся в крупных облаках на заднем фоне, естественные оттенки, туман и радуга. В Red Dead Redemption 2 всего этого можно найти с лихвой.
Но каким образом Rockstar смогли добиться такой потрясающей картинки, схожей с художествами школы Гудзон? Чтобы перенести все это в игру, разработчики создали свою особую систему рассеивания частиц, которая основана на реальных физических принципах.
Работает эта система следующим образом: те или иные частицы, например, тумана или радуги, способны отражать или поглощать свет, если те находится на его пути. Больше частиц — больше рассеянного света. Более того, рассеиваются не только первоначальные лучи света, но и те, которые уже были рассеяны ранее. Вот такая вот сложная система, позволяющая создавать во внутриигровом пространстве незабываемые пейзажи и сцены.
Если вы хотите более детально изучить работу этой непростой системы, то в докладе Бауэра есть достаточно удобный слайд со всеми необходимыми формулами. Большинству из вас это наверняка будет в излишек, но некоторым читателей, разбирающихся в этой теме, данный слайд будет вполне себе интересен.
Можно сказать, что Бауэр начал свой доклад с облаков в Red Dead Redemption 2 и том, как они устроены. Во время игрового процесса в реальном времени создается так называемая «облачная карта», которая охватывает буквально все просторы виртуального Дикого Запада, причем при генерации этой карты учитывается как погода, так и время суток. Выходит эдакая двухканальная текстура, содержащая в себе сведения о плотности облаков на двух слоях.
При помощи полученных данных мы с вами можем определить, где будут располагаться облака в двух плоскостях, однако это далеко не все: им еще необходимо задать форму, которая будет основана на данных высоты. Это выполняется прямо время игрового процесса при помощи таблички, которая содержит список градиентов, позволяющих создавать разные типы облаков.
Под самими облаками время от времени может создаваться дождевой туман, что зависит от плотности самого облака на дождевой карте (не путать с облачной картой). Примерно таким же образом в Red Dead Redemption 2 генерируется и реалистичный туман. Для тумана в игре создается особая трехканальная карта, в которой учитывается высота, расстояние покрытия и плотность тумана. К этим же сведениям подключается и погода, и время суток.
Именно по этой причине вы и можете наблюдать, как туман не рассеивается над водоемами в утреннее время. Впрочем, в некоторых местах на карте игры разработчики собственноручно расставляли частицы тумана, а не полагались на генерацию. Вероятно, это было сделано для того, чтобы придать той или иной сцене в игре нужное настроение.
Рендеринг всего этого «добра», по словам Бауэрса, работает следующим образом: ближняя дистанция к игроку (камере) покрывается усеченным полем зрения целиком, а вот все, что находится за этим полем зрения — только лучами. Вот наглядное изображение для лучшего понимания из доклада:
Радуги в Red Dead Redemption 2, кстати, работают тоже по системе рассеивания. Можно было бы подумать, что радуги по миру были расставлены лично разработчиками, но это совершенно не так. Радуги точно также генерируются в реальном времени по миру игры. При создании радуг учитываются погодные условия и положения источника света (Солнца или Луны).
Следующий эффект из доклада — затенение. Опять таки, по утверждениям старшего программиста графики, затенение в RDR 2 работает практически также, как и рассеивание. Первым делом происходит трассировка лучей на поверхность карты высот по направлению движения источника света (и снова, Солнца и Луны).
При отображении корректного затенения также учитывается высота пересечения с окружением и длина луча. Далее в процессе создания затенения точки высот сравнивают с картой теней для определения их видимости. Ранее упомянутая длина луча используется для изменения резкости теней на той или иной местности в зависимости от расстояния от камеры.