Консультування за питаннями візуальної оптимізації графіки ігор
Час фрейму 28ms на Samsung Galaxy A53 при цільових 16.6ms. Unity Profiler показує Camera.Render займає 18ms з них. Розробник дивиться в Frame Debugger — 340 draw calls, половина з яких це UI Canvas у режимі Screen Space - Overlay з Rebuild кожний кадр. Це розв'язується за день. Але без розуміння, де саме втрата — ітерації займають тижні.
Консультування по візуальній оптимізації — це діагностика вузьких місць та план конкретних дій, а не «використовуйте менше полігонів».
Що профілюємо та де шукаємо
CPU сторона. UnityEngine.Rendering.RenderPipeline.Render у Profiler — першу точку входу. Якщо там > 10ms на мобілі при простій сцені — шукаємо далі. Canvas.SendWillRenderCanvases — ознака проблемного UI. ShadowCaster.Render — тіней занадто багато або shadow distance занадто великий. Animator.Update з великою кількістю активних аніматорів у сцені — кожний активний Animator витрачає CPU незалежно від видимості.
GPU сторона. Snapdragon Profiler для Android, Xcode GPU Frame Capture для iOS — точніше Unity Profiler для GPU-аналізу. Fillrate overdraw видно в Unity Scene View у режимі Overdraw — червоні зони це багатократна перерисовка. Типова проблема: particle-системи з Additive blending рисують 15-20 шарів поверх фону — кожний шар це повний fillrate pass.
Пам'ять. Memory Profiler package — не вбудований Profiler. Знімок кучі показує конкретні текстури, які займають VRAM. Незатиснена 4K текстура = 64 МБ VRAM, без mipmap ще гірше — 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 юнітах від камери. На top-view або ізометрії це весь видимий рівень. Реальна потребу — зазвичай 20-40 юнітів. Різниця у часі shadow render — 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 тижнів |
Вартість розраховується після первинного аналізу проекту та цільових платформ.





