Консультирование по вопросам визуальной оптимизации графики игр
Frame time 28ms на Samsung Galaxy A53 при целевых 16.6ms. Unity Profiler показывает Camera.Render занимает 18ms из них. Разработчик смотрит в Frame Debugger — 340 draw calls, половина из которых это UI Canvas в режиме Screen Space - Overlay с Rebuild каждый кадр. Это решаемо за день. Но без понимания, где именно потеря — итерации занимают недели.
Консультирование по визуальной оптимизации — это диагностика узких мест и план конкретных действий, а не «используйте меньше полигонов».
Что профилируем и где ищем
CPU side. UnityEngine.Rendering.RenderPipeline.Render в Profiler — первая точка входа. Если там > 10ms на мобиле при простой сцене — смотрим дальше. Canvas.SendWillRenderCanvases — флаг проблемного UI. ShadowCaster.Render — теней слишком много или слишком большой shadow distance. Animator.Update с большим числом активных аниматоров в сцене — каждый активный Animator тратит CPU независимо от видимости.
GPU side. Snapdragon Profiler для Android, Xcode GPU Frame Capture для iOS — точнее Unity Profiler для GPU-анализа. Fillrate overdraw виден через Unity Scene View в режиме Overdraw — красные зоны это многократная перерисовка. Типичная проблема: партикл-системы с Additive blending рисуют по 15-20 слоёв поверх фона — каждый слой полный fillrate pass.
Memory. Memory Profiler package — не встроенный Profiler. Снапшот кучи показывает конкретные текстуры, которые занимают VRAM. Незасжатая 4K текстура = 64 МБ VRAM, без мипмапов ещё хуже — при удалении от объекта GPU всё равно читает полное разрешение.
Типичные находки при аудите
Dynamic batching не работает. Unity автоматически батчит меши с одинаковым материалом если они <= 900 вершин и 300 треугольников. Но если у объектов разные MaterialPropertyBlock значения (например, цвет через скрипт) — батчинг ломается. Решение: GPU Instancing + Instanced property через shader UNITY_INSTANCING_BUFFER.
Canvas Rebuild каждый кадр. Canvas.willRenderCanvases стреляет при любом изменении дочернего элемента — смещение, цвет, текст. Если в HUD обновляется таймер каждую секунду, весь Canvas пересчитывается. Решение: разделение Canvas на статичные и динамические части. Анимированные элементы на отдельный Canvas — разрушение parent-child иерархии не критично для визуала, но убирает rebuild.
Shadow Distance. На мобильных платформах Shadow Distance = 150 (дефолт) рисует каскадные тени для всего что в 150 юнитах от камеры. На топ-вью или изометрии это весь видимый уровень. Реальная потребность — обычно 20-40 юнитов. Разница в shadow render time — 3-4x.
MipMap Streaming не настроен. Без QualitySettings.streamingMipmapsActive = true все текстуры загружаются в полном разрешении при старте сцены. Для мобилок с 3-4 ГБ RAM это критично — сцена с 200 текстурами может занять 600 МБ VRAM при старте.
Как проходит консультация
Первый этап: аудит. Запускаем проект на целевом устройстве с прикреплённым Profiler, снимаем несколько характерных сцен. Анализируем frame breakdown, draw calls, fillrate, memory snapshot. Результат — список узких мест с оценкой потенциального прироста.
Второй этап: план действий. Приоритизируем по соотношению «сложность исправления / прирост производительности». Простые победы (shadow distance, canvas split, texture compression) — сначала. Архитектурные изменения (переход на GPU Instancing, реорганизация LOD) — с оценкой трудозатрат.
Третий этап: поддержка реализации. Можем реализовать сами или консультировать команду при самостоятельном исправлении. Для второго варианта: письменный технический гайд с конкретными настройками и ожидаемыми результатами.
Инструменты, которые используем
Unity Profiler, Memory Profiler 1.1+, Frame Debugger — базовый набор. RenderDoc для детального GPU-анализа на PC. Snapdragon Profiler, ARM Mali Graphics Debugger — для Android с соответствующими GPU. Xcode GPU Frame Capture + Metal Performance HUD — для iOS. Stats окно в Game View для быстрой оценки батчей и вершин.
Сроки
| Тип консультации | Срок |
|---|---|
| Экспресс-аудит + отчёт (1 сцена, 1 платформа) | 1–3 дня |
| Полный аудит производительности + план оптимизации | 5–10 дней |
| Аудит + реализация оптимизаций | 2–6 недель |
Стоимость рассчитывается после первичного анализа проекта и целевых платформ.





