Настройка рівнів деталізації (LOD) для графіки
LOD — не просто «зробити три версії моделі». Неправильно налаштований LOD Group у Unity може дати зворотний ефект: LOD0 перемикається на LOD1 занадто рано, гравець бачить різкий pop, це сприймається як баґ. Або переходи налаштовані за Screen Relative Height без обліку реальної дистанції, та на ортографічній камері LOD взагалі не працює.
Суть у тому, що LOD — це система управління складністю сцени залежно від видимості об'єкту. І вона працює правильно тільки коли враховані: тип камери, швидкість руху гравця, освітлення (відкидані тіні у LOD1 часто гірше, ніж у LOD0), та як движок рахує дистанцію.
Реальні проблеми, які ломають LOD у продакшені
LOD Pop — головна візуальна проблема. Відбувається, коли геометрія та/або текстури між рівнями відрізняються занадто сильно. Класичний випадок: художник зробив LOD1 з на 60% меншою кількістю полігонів, але UV-розгортка поїхала, та нормал-карта не компенсує втрату форми. Перехід з 10 метрів — помітен неозброєним оком. Вирішується через правильний LOD-генератор (Simplygon, Unity LOD Generator) з збереженням UV-seam'ів та перевіркою normal projection.
Тіні не слідують за LOD-переходами. У Unity Shadow Caster Culling працює незалежно від LOD Group. Якщо у вас LOD2 — плоский billboard з 2 полігонами, але тінь все ще рахується від LOD0 mesh (тому що Force Shadow Casting = On), ви платите за рендер тіней від повної геометрії об'єкту, якого візуально нема. Це легко пропустити — Frame Debugger показує Shadow Pass з повним Draw Call-бюджетом.
HLOD (Hierarchical LOD) не настроєний для великих сцен. У open-world проектах стандартний LOD Group не працює на дистанції понад 500 метрів — об'єкти просто culled, але Scene не вивантажується. Unity HLOD (через HLOD Creator пакет) об'єднує дальні об'єкти в один mesh автоматично. Без цього у вас може бути 3000 Draw Calls від дерев на горизонті.
Як налаштовуємо LOD у проектах
Починаємо з профілю ігрової камери: FOV, типова дистанція до об'єктів, швидкість перемощення. Для шутера від першої особи з FOV 90° та швидкістю руху 6 м/с пороги LOD будуть принципово іншими, ніж для RTS з ізометричною камерою.
Під кожну категорію об'єктів (персонажі, будівлі, пропси, рослинність) встановлюємо окрему LOD-політику. Приклад з практики — мобільна RPG, відкритий світ 2×2 км. Дерева: LOD0 (500 полігонів) до 15 метрів, LOD1 (80 полігонів) до 50 метрів, LOD2 (billboard cross) до 150 метрів, Culled за 150 метрів. Будівлі: LOD0 до 30 метрів, LOD1 до 80 метрів, LOD2 до 200 метрів. Така настройка дала перехід з 680 Draw Calls у центрі міста до 210.
Для Unreal Engine працюємо з Nanite там, де це застосовно — на статичних мешах з високим poly count. Але Nanite не заміняє LOD для рухомих об'єктів та не працює з напівпрозорими матеріалами. HLOD у UE5 настроюємо через World Partition HLOD Layer.
Cross-фейдинг замість hard pop. Unity LOD Group підтримує Cross Fade mode — дітерінг-перехід між рівнями. Працює через Dither Fade шейдерне ключове слово. На мобільних платформах дітерінг дешевіше, ніж здається — Adreno добре його паралелить. Включаємо для крупних об'єктів на передньому плані, залишаємо instant-перехід для дрібного пропса вдалеке.
Рослинність — окремо історія. SpeedTree LOD інтегрується у Unity через окремий pipeline. Головна ловушка — billboard LOD SpeedTree рендерится через окремий BatchRendererGroup, та його потрібно профілювати окремо від основного Draw Call счетчика. Бачили проекти, де 40% GPU time йшло на 2000 billboard-дерев, які здавались «вже оптимізованими».
Процес настройки LOD
Аудит починається з Profiler → GPU Usage та Frame Debugger з фільтром по Draw Calls. Дивимось, скільки об'єктів рендерится за межами видимої деталізації. Потім — Scene View у Overdraw mode, щоб знайти об'єкти з високим overdraw без LOD.
Після аудиту готуємо LOD-специфікацію: таблиця з категоріями об'єктів, кількістю рівнів, пороговими дистанціями, політикою тіней для кожного рівня. Це артефакт, який узгоджуємо з командою художників — їм важливо розуміти, до якої дистанції потрібно робити «красиву» геометрію.
Реалізація: либо настройка існуючих LOD Group, либо створення LOD-ассетів (якщо їх немає), либо автоматична генерація через Simplygon з подальшою ручною правкою критичних об'єктів.
| Масштаб завдання | Орієнтовні строки |
|---|---|
| Аудит LOD-настроїв + звіт | 1–3 дні |
| Настройка LOD для однієї сцени (до 200 типів об'єктів) | 1–2 тижні |
| Розробка LOD-політики + реалізація для open-world | 3–6 тижнів |
| Інтеграція HLOD/Nanite у існуючий проект | 2–4 тижні |
Вартість визначається після аналізу сцени та вимог до цільових платформ.





