Запекание карт освещения и Ambient Occlusion для VR игр
Realtime global illumination в мобильном VR — это мечта, которая разбивается о 6.9 мс на фрейм. На Quest 3 нет ни Lumen, ни SSAO приличного качества без просадок. Единственный способ получить богатое освещение со сложными тенями и контактным AO — запечь его заранее.
Но запечённое освещение в VR имеет собственные подводные камни, которых нет на плоском экране.
Почему стандартный Lightmapping Unity ломается в VR
Lightmap 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 при ATW. Если lightmap содержит gradients с высокочастотными деталями (резкие тени от мелких объектов), Asynchronous TimeWarp подхватывает старый кадр и интерполирует — и на статичных поверхностях появляется лёгкое мерцание. Это решается сглаживанием AO-радиуса и отключением sharp point shadows в запекании.
Stereo несоответствие. В VR два глаза видят сцену под немного разными углами. Запечённые specular highlights — проблема: они выпечены под одну точку зрения и не изменяются при смещении головы. В VR это ломает 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-комнате создаёт иллюзию «грязи» на стенах.
Для Quest: lightmap атлас максимум 1024×1024, желательно 512×512 для большинства сцен. Несколько атласов лучше одного гигантского — это упрощает streaming при переходе между зонами. Формат хранения: ASTC 6×6 через переопределение в Texture Importer.
Запекание в сторонних инструментах
Для высококачественного контента 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-опытов.
| Сцена | Ориентировочные сроки запекания + настройки |
|---|---|
| Небольшое интерьерное помещение | 1–2 рабочих дня |
| Средняя сцена (5–10 зон) | 3–5 рабочих дней |
| Крупная открытая локация | 1–2 недели |
Стоимость рассчитывается индивидуально после аудита сцены и требований к качеству.





