Поскольку большинство функций рендеринга для грядущей Godot 4.0 уже реализовано, разработчики потратили последние два месяца на оптимизацию движка рендеринга как со стороны процессора, так и со стороны GPU. В результате всей этой работы время рендеринга значительно сократилось.Оптимизация CPUКулинг теперь выполняется брутфорсом, что чрезвычайно эффективно кэшируется.Используются эффективные структуры для кеширования, чтобы гарантировать использование меньшего количества страниц памяти и строк кеша.Одновременно кулится всё в основном кадре: объекты, световые каскады, SDFGI-каскады и т. д.Кулинг теперь выполняется в нескольких потоков, что позволяет масштабировать с учётом количества доступных процессоров.Объекты передаются в рендерер через массивы с разбивкой по страницам, поэтому больше нет ограничений для отображаемых объектов.На стороне рендерера реализован поточный рендеринг, включая поддержку вторичного буфера команд Vulkan.Инстансинг используется для рендеринга похожих объектов (меши, материал и прочие настройки), что снижает нагрузку на API рендеринга.Большая часть состояния рендеринга теперь лучше кэшируется, поэтому меньше операций делается во время рендеринга.Тесты можно посмотреть на Гитхабе.Оптимизация GPUРеализованы автоматические LOD'ы, чтобы уменьшить нагрузку на вертексы.Существуют специальные версии мешей для рендеринга при выполнении карт теней или предварительного прохода. Это уменьшает количество обрабатываемых вершин, а также пропускную способность.Переписано большинство шейдеров, чтобы уменьшить использование VGPR и тем самым улучшить загрузку. Это позволяет графическому процессору лучше распараллеливать их.Переписаны световые кластеры. Кластеризация теперь полностью выполняется на GPU. Новый подход работает намного быстрее, позволяя создавать сотни источников света с тенями с очень хорошей производительностью.Оптимизированы форматы текстур. Для многих алгоритмов используются более лёгкие форматы текстур для уменьшения объёма данных.Произведена общая оптимизация большинства шейдеров для повышения производительности.В GI добавлены дополнительные настройки качества, что позволяет работать на устройствах более низкого уровня.Улучшенный параллелизм с более умным использованием барьеров. Большинство шейдеров (как вычислительных, так и растровых) будут работать параллельно по возможности. Это даёт значительное улучшение производительности на железе от AMD (более скромное на Nvidia).Вот полный кадр из Godot, запускающего сцену в разрешении 1080, 8xMSAA со всеми включенными эффектами, GI и т. д.На тестовом оборудовании (Vega64) время кадра улучшилось с 10 до 4,5 мс. На NVidia 1650 улучшения с 15 до 10 мс. Благодаря масштабируемым настройкам качества теперь можно работать с очень широким спектром оборудования.#godot #gamedevnews
Комментарий недоступен
Для снижения объёма передаваемых данных. У меня проблемы с пропускной способностью мозга.