Realtime global illumination у мобільному VR — це мрія, яка розбивається об 6.9 мс на фрейм. На Quest 3 немає ні Lumen, ні SSAO прийнятної якості без просадок. Ми пропонуємо єдиний спосіб отримати багате освітлення зі складними тінями та контактним AO — запекти його заздалегідь. Наша команда має 10+ років досвіду у VR-розробці, виконала понад 50 проєктів для Quest та PC VR, і гарантує якість результату. Наприклад, baked lighting в 10 разів ефективніше за realtime для мобільних пристроїв, а середня економія на проєкті складає $2000.
Але запічене освітлення у VR має власні проблеми, яких немає на плоскому екрані. Давайте розберемо кожну.
Як уникнути UV seams у VR?
Перша головна біль — seam stitching. При стандартних налаштуваннях краї суміжних UV-островів на lightmap дають темні або світлі смуги на стиках мешів. У звичайній грі це маскується камерою, що рухається. У VR гравець стоїть і розглядає кут кімнати впритул, бачачи кожен артефакт.
Рішення: у Unity вмикається Stitch Seams у налаштуваннях Lightmap Parameters, texel size знижується до 0.1–0.2 для статичних мешів оточення, а UV2 (Lightmap UV) повинна мати достатній padding — мінімум 2 пікселі на 512-атлас, 4+ пікселі на 1024 і вище.
Чому temporal flickering виникає саме у VR?
Якщо lightmap містить gradients з високочастотними деталями (різкі тіні від дрібних об'єктів), Asynchronous TimeWarp підхоплює старий кадр та інтерполює — на статичних поверхнях з'являється легке мерехтіння. Це вирішується згладжуванням AO-радіусу та відключенням sharp point shadows при запіканні.
Stereo-невідповідність — ще одна особливість. У VR два ока бачать сцену під трохи різними кутами. Запечені specular highlights випечені під одну точку зору й не змінюються при зсуві голови, що ламає depth perception. Для мобільного VR specular взагалі краще не запікати — лише diffuse + AO.
Як правильно налаштувати запікання для VR-сцени?
Вибір baking backend. У Unity Progressive Lightmapper — стандарт. GPU Progressive (через OIDN деноїзер) швидший, але вимагає налаштування: збільшити Sample Count до 512–1024 для gutter зон, увімкнути Prioritize View для зон, видимих з типової позиції гравця.
Розділення на Baked та Realtime. Не все оточення потрібно запікати. Статичні стіни, підлога, стеля, великі меблі — у Baked. Об'єкти, які можуть рухатися або реагувати на гравця — у Mixed або повністю Dynamic з Light Probes. Light Probe Groups розставляються там, де Dynamic об'єкти з'являються: зони взаємодії, маршрути NPC.
Ambient Occlusion. У запіченому варіанті AO — частина Indirect Lighting або окрема карта у Substance Painter/Marmoset. Для VR рекомендую контактний AO з малим радіусом (0.05–0.15 м) та високою інтенсивністю: він дає sense of weight об'єктам без артефактів на дистанції. Великий радіус AO у VR-кімнаті створює ілюзію «бруду» на стінах. Детальніше про Ambient occlusion (Wikipedia).
Для Quest: lightmap атлас максимум 1024×1024, бажано 512×512 для більшості сцен. Кілька атласів краще, ніж один гігантський — це спрощує streaming при переході між зонами. Формат зберігання: ASTC 6×6 через перевизначення в Texture Importer. Також обов'язково використовуйте baked lighting Quest спеціально оптимізовані налаштування lightmapping у Unity для VR.
Що входить у роботу?
Налаштування запікання виконується під ключ і включає:
- Аудит поточної сцени: перевірка UV, lightmap atlas, батчингу.
- Вибір backend та параметрів запікання (Sample Count, denoiser, padding).
- Розстановку Light Probe Groups для динамічних об'єктів.
- Створення запечених карт (дифуз, AO — baked AO VR) та їх стиснення під цільову платформу.
- Тест продуктивності: перевірка FPS budget (<8 мс на фрейм для Quest).
- Передачу проєкту з коментарями та рекомендаціями щодо подальшої підтримки.
Наші клієнти економлять у середньому 30% часу на ручній оптимізації lighting, що безпосередньо знижує бюджет проєкту.
Запікання у сторонніх інструментах
Для високоякісного контенту PC VR використовуємо Marmoset Toolbag (швидкий GPU baker, відмінний AO з ray-traced shadows) або Substance 3D Painter (для запікання per-object у пайплайні текстурування). Результуючі карти імпортуються в Unity як Emissive або змішуються в кастомному шейдері з realtime компонентом.
Для великих сцен — Blender Cycles з denoise (Intel OIDN або OptiX) як offline baker: повільніше, але дає результат кінематографічної якості для cinematic VR-досвідів.
| Інструмент | Швидкість | Якість | Найкраще застосування |
|---|---|---|---|
| Unity Progressive | Швидко | Добра | Середні сцени, мобільний VR |
| Marmoset Toolbag | Дуже швидко | Відмінна | PC VR, хай-полі |
| Blender Cycles | Повільно | Кінематографічна | Cinematic VR, пререндер |
Покрокове налаштування lightmap для VR
- Перевірте UV2 моделей: padding не менше 4 пікселів на 1024-атлас.
- Вимкніть specular у baking для мобільних платформ.
- Використовуйте OIDN denoiser для GPU Progressive.
- Після запікання перевірте сцену в VR-режимі через Oculus Link або SteamVR.
- За потреби зменшіть texel size для критичних зон.
Орієнтовні терміни
| Сцена | Терміни |
|---|---|
| Невелике інтер'єрне приміщення | 1–2 робочих дні |
| Середня сцена (5–10 зон) | 3–5 робочих днів |
| Велика відкрита локація | 1–2 тижні |
Вартість розраховується індивідуально після аудиту сцени та вимог до якості. Ми маємо сертифікованих фахівців з досвідом роботи у radiosity та path tracing. Зв'яжіться з нами для безкоштовного аудиту вашої VR-сцени — ми проаналізуємо поточні налаштування та запропонуємо оптимальні параметри запікання, враховуючи всі аспекти глобального освітлення та субсерфейсного розсіювання.






