Очередной блог разработчиков Mount & Blade 2: Bannerlord
Приветствуем вас, воины Кальрадии!
На этой неделе мы расскажем вам о движке новой версии 1.4. Его графическая составляющая претерпела ряд изменений, а производительность была улучшена.
Различные составляющие движка разрабатываются отдельными командами и маркируются как разные версии. Таким образом мы можем полноценно тестировать новые функции движка, не рискуя его стабильностью (что важно для разработчиков игрового процесса).
Глобальное освещение
Мы ввели новую систему глобального освещения, которая будет работать и для статичных, и для динамических объектов. Она основана на готовой системе динамического освещения Precomputed Radiance Transfer. Система работает независимо от атмосферы, а для Bannerlord это обязательное условие, ведь игрок может попадать в одну и ту же локацию в разное время суток. Используемый нами метод позволяет заранее рассчитать освещение в каждой точке координатной сетки. Мы максимально автоматизировали расчёты, облегчив работу художников, создающих сцены. Создатели модификаций также смогут использовать эти инструменты и подключать глобальное освещение к своим сценам.
Просчитывание внешнего вида с помощью вычислительного шейдера
С помощью профилирования мы установили, что в крупных сражениях графический процессор дольше всего просчитывает внешний вид мешей агентов. Как правило, эти расчёты совершаются каждый раз, когда нужно отобразить меш (отображение теней, буфер геометрии, затенение волос и т. д.). Мы решили эту проблему так: теперь просчитывание вешнего вида мешей со скелетной анимацией будет выполняться не вершинным шейдером, а другим — на другом этапе. Хотя оба этапа выполняются графическим процессором, просчитывание внешнего вида мешей на отдельной стадии и сохранение результатов в рабочей памяти позволяет нам делать это лишь один раз для каждого кадра и использовать специальные механизмы оптимизации вычислительных шейдеров. В результате отображение внешнего вида моделей происходит на 60% быстрее, а это, в свою очередь, позволяет большинству видеокарт выдавать 60 кадров в секунду даже в масштабных сражениях.
Атлас шейдинга частиц
Теперь шейдинг частиц осуществляется на отдельном этапе вычислительным шейдером. Каждой видимой частице в глобальном текстурном атласе приписывается квадрат (2x2, 4x4, 8x8, 16x16 или 32x32 — в зависимости от её размера на экране). Вычислительный шейдер выполняет шейдинг на этих крошечных квадратах. Непосредственно для отображения нужен только результат по свету для текстуры из атласа. Более сложный расчёт света уже не нужен. Разделение этапов шейдинга и прорисовки снижает потребность в наполнении частицами, поскольку теперь шейдинг затрагивает очень малое число пикселей. Это снижает нагрузку на видеокарту при отображении пустынных сцен. Данный метод также позволяет убрать резкие тени на вышеупомянутых квадратах, делая и без того красивые частицы в Bannerlord еще качественнее!
Подчёркиваем, что разработка движка и дополнений к нему идёт параллельно разработке самой игры. Отдел, где ведётся разработка движка, постоянно работает над оптимизацией, которая позволит сократить время загрузки и увеличить масштаб сражений, кадровую частоту и реалистичность изображения. Все эти манипуляции никоим образом не тормозят разработку игры и служат лишь улучшению качества итогового продукта.
На следующей неделе на наши вопросы ответит Корнил Ганс, программист игрового процесса. Ганс, в основном, работает над сетевой игрой Mount & Blade II: Bannerlord.