Отчёт о ходе оптимизации Godot 4.0

Поскольку большинство функций рендеринга для грядущей Godot 4.0 уже реализовано, разработчики потратили последние два месяца на оптимизацию движка рендеринга как со стороны процессора, так и со стороны GPU. В результате всей этой работы время рендеринга значительно сократилось.

Отчёт о ходе оптимизации Godot 4.0

Оптимизация CPU

  • Кулинг теперь выполняется брутфорсом, что чрезвычайно эффективно кэшируется.
  • Используются эффективные структуры для кеширования, чтобы гарантировать использование меньшего количества страниц памяти и строк кеша.
  • Одновременно кулится всё в основном кадре: объекты, световые каскады, SDFGI-каскады и т. д.
  • Кулинг теперь выполняется в нескольких потоков, что позволяет масштабировать с учётом количества доступных процессоров.
  • Объекты передаются в рендерер через массивы с разбивкой по страницам, поэтому больше нет ограничений для отображаемых объектов.
  • На стороне рендерера реализован поточный рендеринг, включая поддержку вторичного буфера команд Vulkan.
  • Инстансинг используется для рендеринга похожих объектов (меши, материал и прочие настройки), что снижает нагрузку на API рендеринга.
  • Большая часть состояния рендеринга теперь лучше кэшируется, поэтому меньше операций делается во время рендеринга.

Тесты можно посмотреть на Гитхабе.

Отчёт о ходе оптимизации Godot 4.0

Оптимизация GPU

  • Реализованы автоматические LOD'ы, чтобы уменьшить нагрузку на вертексы.
  • Существуют специальные версии мешей для рендеринга при выполнении карт теней или предварительного прохода. Это уменьшает количество обрабатываемых вершин, а также пропускную способность.
  • Переписано большинство шейдеров, чтобы уменьшить использование VGPR и тем самым улучшить загрузку. Это позволяет графическому процессору лучше распараллеливать их.
  • Переписаны световые кластеры. Кластеризация теперь полностью выполняется на GPU. Новый подход работает намного быстрее, позволяя создавать сотни источников света с тенями с очень хорошей производительностью.
  • Оптимизированы форматы текстур. Для многих алгоритмов используются более лёгкие форматы текстур для уменьшения объёма данных.
  • Произведена общая оптимизация большинства шейдеров для повышения производительности.
  • В GI добавлены дополнительные настройки качества, что позволяет работать на устройствах более низкого уровня.
  • Улучшенный параллелизм с более умным использованием барьеров. Большинство шейдеров (как вычислительных, так и растровых) будут работать параллельно по возможности. Это даёт значительное улучшение производительности на железе от AMD (более скромное на Nvidia).

Вот полный кадр из Godot, запускающего сцену в разрешении 1080, 8xMSAA со всеми включенными эффектами, GI и т. д.

Отчёт о ходе оптимизации Godot 4.0

На тестовом оборудовании (Vega64) время кадра улучшилось с 10 до 4,5 мс. На NVidia 1650 улучшения с 15 до 10 мс. Благодаря масштабируемым настройкам качества теперь можно работать с очень широким спектром оборудования.

1.1K1.1K открытий
10 комментариев

Комментарий недоступен

Ответить

Для снижения объёма передаваемых данных. У меня проблемы с пропускной способностью мозга.

Ответить