Realtime global illumination в мобильном VR — это мечта, которая разбивается о 6.9 мс на фрейм. На Quest 3 нет ни Lumen, ни SSAO приличного качества без просадок. Мы предлагаем единственный способ получить rich освещение со сложными тенями и контактным AO — запечь его заранее. Наша команда имеет 10+ лет опыта в VR-разработке и выполнила более 50 проектов для Quest и PC VR.
Но запечённое освещение в 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 можно прочитать в энциклопедии.
Для Quest: lightmap атлас максимум 1024×1024, желательно 512×512 для большинства сцен. Несколько атласов лучше одного гигантского — это упрощает streaming при переходе между зонами. Формат хранения: ASTC 6×6 через переопределение в Texture Importer.
Что входит в работу?
Настройка запекания выполняется под ключ и включает:
- Аудит текущей сцены: проверка UV, lightmap atlas, батчинга.
- Выбор backend и параметров запекания (Sample Count, denoiser, padding).
- Расстановку Light Probe Groups для динамических объектов.
- Создание запечённых карт (диффуз, AO) и их сжатие под целевую платформу.
- Тест производительности: проверка 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 недели |
Стоимость рассчитывается индивидуально после аудита сцены и требований к качеству. Свяжитесь с нами для бесплатного аудита вашей VR-сцены — мы проанализируем текущие настройки и предложим оптимальные параметры запекания.






