Лучшее  🚀
22.03.2020 в 11:37 Evernews

ID Tech 7: как устроены технологии Doom Eternal

Отказ от мегатекстур пошел технологии id Software на пользу.

Кстати, на сайте читать удобнее

Doom Eternal вышел на тех же консолях, что и предыдущая часть серии. Тем не менее, карты здесь больше, а модели проработаннее. Количество мелких деталей увеличилось, качество текстур и эффектов повысилось. Причина — в новом движке.

Вышедший в 2016 году Doom создавался на движке id Tech 6, сохранившем ряд артефактов предыдущего поколения. Наиболее заметным из них была технология мегатекстур, некоторое время считавшаяся прорывной. Надежды не оправдались: мегатекстуры усложняли работу художников, долго прогружались и доставляли массу проблем.

Создавая новую версию движка, рассказывает ведущий программист id Tech 7 Билли Хан, разработчики стремились выполнить две задачи. Во-первых, нужно было повысить качество картинки, отказавшись от мегатекстур и перейдя на ассеты высокого разрешения. Во-вторых, следовало увеличить частоту кадров.

Для начала в id Software решили полностью перейти на использование графического API Vulkan. Этот интерфейс задействовали не только в движке, но и во всех инструментах, с помощью которых создаются уровни, эффекты и другие ассеты.

Благодаря этому удалось существенно увеличить скорость создания контента и одновременно повысить производительность. По сравнению с предыдущей частью серии, в Doom Eternal в десять раз больше уникальных ассетов, наполняющих мир деталями.

Вместо мегатекстур было решено создать новую систему потоковой загрузки. Это решило сразу две проблемы: во-первых, дизайнерам не приходилось работать с огромными текстурными атласами, что тоже ускоряло работу; во-вторых, удалось повысить разрешение самих текстур.

Сам процесс работы над ассетами стал куда более гибким. К примеру, художники могли создавать материалы, просто рисуя прямо поверх моделей или нужных поверхностей; появилась возможность комбинировать слои текстур и гораздо проще переиспользовать уже созданные материалы.

Одновременно был переработан алгоритм отсечения невидимых полигонов. Это очень важная оптимизация: в одной сцене Doom Eternal может быть примерно в 8-10 раз больше полигонов, чем в Doom 2016 года — то есть порядка 80-90 миллионов.

Чтобы помочь железу справиться с нагрузкой, разработчики улучшили систему уровней детализации. У почти каждого ассета в Doom Eternal есть несколько менее детализированных версий, причем их подгрузка зависит не только от расстояния до объекта, но и от того, насколько большая его часть видна в кадре.

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

Для оптимизации анимации использовалось кэширование Alembic. Это техника, разработанная студией Industrial Light and Magic и применяющаяся, в основном, для кино и анимационных фильмов; в играх ее можно было увидеть, например, в Gears 5.

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

Эта система применяется практически для всех существ в Doom Eternal — от щупалец, вылезающих из-под земли, до демонов. Все данные подгружаются по мере необходимости: так можно не забивать ими память.

Для консольных версий внедрили ряд отдельных оптимизаций. В первую очередь это динамическое разрешение: на Xbox One S картинка рендерится максимум в разрешении 900p, на PlayStation 4 разрешение достигает 1080p, но в особенно тяжелых сценах обе консоли могут проседать примерно до 720p.

У мощных консолей разрешение рендеринга выше. На PlayStation 4 Pro используется максимальное разрешение 1440p, у Xbox One X оно выставлено на 1800p. До разрешения 4К картинка восстанавливается с помощью специальных алгоритмов.

По уровню графики обычные консоли примерно соответствуют средним настройкам в версии для PC, у Xbox One X и PlayStation 4 Pro графика близка к высоким-максимальным настройкам на PC. Кроме того, на консолях скорректировано расстояние подгрузки менее детализированных версий объектов.

Все эти оптимизации позволили консольным версиям Doom Eternal выдавать практически стабильные 60 кадров в секунду; просадки бывают, но не слишком серьезными. Мощные PC могут выдавать сотни кадров в секунду: это особенно полезно для владельцев мониторов с высокой частотой обновлений.

Читать далее