Проверяет знание GPU-пайплайна и оптимизации графики — ключевой темы для производительности.
Draw call — это команда GPU «отрисуй этот объект с этим материалом». Много draw calls замедляют игру, особенно на мобильных устройствах. Уменьшить их можно с помощью batching (Static/Dynamic), объединения мешей, атласа текстур, сокращения материалов, GPU Instancing, SRP Batcher и упрощения рендера. Главное — минимизировать количество уникальных материалов и переключений состояния рендера.
Определение: Команда от CPU к GPU, запускающая рендер одного меша с материалом.
Каждый объект, который не может быть объединён, является отдельным draw call.
загрузку материала
настройку шейдеров
передачу вершинных данных
сам рендер меша
Происходит переключение контекста.
Самый дорогой этап.
Uniforms
Transform matrices
Shader keywords
На мобильных каждый draw call может стоить десятки микросекунд.
Объединение неподвижных объектов в один большой меш.
объект помечен как Static
материалы одинаковые
огромное снижение draw calls
больше памяти для объединённых мешей
Объединяет маленькие меши в динамике.
одинаковый материал
маленькие меши (ограничение ~300 вершин)
не работает с разными scale
не работает с GPU instancing
Объединение множества текстур в один atlas.
чтобы разные объекты могли использовать один материал
Проблемы:
bleeding
сложно обновлять atlass’ы
Определение: Рендер множества одинаковых объектов одной командой.
Пример:
трава
деревья
войска на поле
Преимущества:
тысячи объектов → несколько draw calls
Требования:
одинаковый материал
instancing-enabled
Фреймворк для ускорения SetPass вызовов.
радикально снижает CPU нагрузку
даже разные материалы могут быть в одном проходе
Ручная сборка нескольких объектов в один меш.
полный контроль
сложно обновлять
нельзя использовать для анимированных объектов
Canvas splitting
избегать частых rebuild
не создавать тысячи UI элементов
Static batching
Texture atlases
Mesh combine
GPU Instancing
SRP Batcher
оптимизация материалов
много материалов
много разных шейдеров
отключить batching
использовать много прозрачных объектов
Draw call — это команда на рендер объекта. Чтобы уменьшить их количество, объединяют материалы, используют batching, instancing, atlases и SRP Batcher.