Voxel Global Illumination¶
Voxel Global Illumination (VGI, воксельное глобальное освещение) — это метод компьютерной графики, предназначенный для расчёта непрямого (отражённого) освещения в трёхмерных сценах, основанный на дискретизации пространства сцены в виде воксельной решётки. В отличие от традиционных методов, таких как трассировка пути (path tracing) или фотонные карты, VGI использует воксельное представление геометрии для аппроксимации распространения света, что позволяет достигать реалистичного освещения в реальном времени или с высокой производительностью.
¶Принцип работы
Основная идея VGI заключается в преобразовании непрерывного трёхмерного пространства сцены в регулярную сетку из вокселей — трёхмерных аналогов пикселей. Каждый воксель хранит информацию о свойствах материала (цвет, альбедо, отражательная способность) и, в некоторых реализациях, о накопленной освещённости. Процесс расчёта обычно включает два этапа:
- Вокселизация сцены: геометрия (полигональные модели) преобразуется в воксельное представление. Для этого каждый треугольник или поверхность растеризуется в трёхмерное пространство, заполняя соответствующие воксели. Размер вокселя (разрешение решётки) определяет точность аппроксимации: чем мельче воксели, тем выше детализация, но больше вычислительные затраты.
- Распространение света: от источников прямого освещения (например, солнца, ламп) излучаются фотоны или лучи, которые взаимодействуют с вокселями. При столкновении с вокселем часть энергии поглощается, а часть отражается в соответствии с законом Ламберта или другими моделями отражения. Отражённый свет затем распространяется на соседние воксели, создавая эффект непрямого освещения (color bleeding, мягкие тени). Этот процесс может повторяться итеративно до достижения сходимости.
В отличие от методов трассировки пути, которые требуют большого количества семплов для сглаживания шума, VGI использует пространственную фильтрацию и интерполяцию между вокселями, что позволяет получать более гладкие результаты при меньшем числе расчётов.
¶История
Концепция использования вокселей для освещения восходит к ранним работам по объёмному рендерингу в 1990-х годах, однако практическое применение в реальном времени стало возможным лишь с развитием графических процессоров (GPU) и шейдерных технологий.
- 2000-е годы: в играх и интерактивных приложениях доминировали методы прямого освещения (например, карты теней, ambient occlusion). Непрямое освещение либо игнорировалось, либо аппроксимировалось статическими картами освещения (lightmaps), что ограничивало динамику сцен.
- 2010 год: исследователи из компании Crytek (Германия) представили технику Light Propagation Volumes (LPV) — одну из первых попыток расчёта непрямого освещения в реальном времени с использованием воксельной решётки. LPV использовала иерархические объёмы для распространения света, но страдала от артефактов (например, световых утечек через тонкие стены).
- 2011 год: компания NVIDIA (США) разработала Voxel Cone Tracing (VCT) — метод, объединяющий воксельную решётку с трассировкой конусов. VCT позволил более точно моделировать отражения и мягкие тени, став основой для многих последующих реализаций.
- 2014 год: в движке Unreal Engine 4 (Epic Games, США) была внедрена технология Voxel Global Illumination на основе VCT, что сделало VGI доступным для разработчиков игр. Позднее, в Unreal Engine 5, VGI был заменён более продвинутой системой Lumen (основанной на трассировке лучей и сигнальных методах), но VGI остаётся в качестве опции для совместимости.
- 2020-е годы: VGI продолжает использоваться в ряде игровых движков (например, в Unity с пакетом HDRP, в Godot с модулем VoxelGI) и в системах виртуальной реальности, где требуется баланс между качеством и производительностью.
¶Классификация методов
Методы VGI можно разделить по способу хранения и распространения света:
¶По типу воксельной структуры
- Однородная решётка: все воксели имеют одинаковый размер. Проста в реализации, но неэффективна для сцен с большим разбросом масштабов (например, крупные здания и мелкие детали).
- Октри (Octree): иерархическая структура, где воксели делятся на дочерние ячейки только в областях с высокой детализацией. Позволяет экономить память и вычислительные ресурсы, адаптируя разрешение к сложности геометрии.
- Анизотропные воксели: воксели могут иметь разный размер по разным осям, что полезно для сцен с выраженной ориентацией (например, длинные коридоры).
¶По способу распространения света
- Трассировка конусов (Cone Tracing): из точки наблюдения или от источника света испускаются конусы, которые пересекают воксели. Интенсивность света в конусе аппроксимируется интегрированием по вокселям. Этот метод лежит в основе VCT.
- Итеративное распространение (Propagation): свет распространяется от вокселя к вокселю по принципу «размножения» (аналогично диффузии). Каждый воксель накапливает вклад от соседей, и процесс повторяется несколько раз. Пример: LPV.
- Метод Монте-Карло с воксельной аппроксимацией: случайные лучи трассируются от источников, но при столкновении с геометрией информация записывается в воксели, а не в фотонные карты. Затем воксели используются для интерполяции освещения.
¶По динамике
- Статический VGI: воксельная решётка строится один раз для статической геометрии (например, для зданий, ландшафта). Источники света могут быть динамическими, но геометрия не меняется. Используется для предварительного расчёта (baking) в играх с фиксированными сценами.
- Динамический VGI: решётка перестраивается каждый кадр или с определённой периодичностью, что позволяет обрабатывать движущиеся объекты, разрушаемую геометрию и анимированные источники света. Требует больше вычислительных ресурсов.
¶Применение
¶В игровой индустрии
VGI широко применяется в компьютерных играх для создания реалистичного освещения без необходимости в предварительном запекании (baking) световых карт. Основные преимущества:
- Динамическое освещение: изменение времени суток, движение объектов, включение/выключение источников света — всё это обрабатывается в реальном времени.
- Мягкие тени и цветовые отражения: непрямой свет от стен, пола и других поверхностей придаёт сцене глубину и натуральность.
- Производительность: VGI может работать на современном игровом оборудовании (GPU среднего и высокого класса) с частотой кадров 30–60 FPS, в отличие от трассировки пути, которая требует значительно больших вычислительных мощностей.
Примеры игр, использующих VGI: Crysis 3 (2013, CryEngine), The Witcher 3: Wild Hunt (2015, REDengine 3 — модифицированная версия), Metro Exodus (2019, 4A Engine), Cyberpunk 2077 (2020, REDengine 4 — с опцией VGI).
¶В архитектурной визуализации
VGI применяется в системах реального времени для предварительного просмотра освещения в архитектурных проектах. Позволяет архитекторам и дизайнерам оценивать распределение света в помещениях при различных условиях (например, солнечный свет, искусственное освещение) без длительного рендеринга.
¶В виртуальной и дополненной реальности
В VR/AR-приложениях VGI используется для создания иммерсивного освещения, которое адаптируется к движениям пользователя и изменениям в сцене. Однако требования к производительности здесь особенно высоки (частота кадров не менее 90 FPS), поэтому применяются упрощённые версии VGI с низким разрешением вокселей.
¶Ограничения и недостатки
Несмотря на преимущества, VGI имеет ряд ограничений:
- Артефакты вокселизации: при малом разрешении решётки мелкие детали (например, тонкие провода, щели) могут быть потеряны, что приводит к световым утечкам (light leaking) — свет проходит сквозь стены или объекты, которые должны быть непрозрачными.
- Ограниченная точность: VGI аппроксимирует освещение, поэтому он не может достичь фотореалистичности, свойственной методам трассировки пути. В частности, эффекты каустики (фокусировки света через прозрачные объекты) и сложные отражения (например, от глянцевых поверхностей) воспроизводятся плохо.
- Потребление памяти: воксельная решётка, особенно с высоким разрешением, может занимать значительный объём видеопамяти (до нескольких сотен мегабайт). Для динамических сцен требуется дополнительная память для обновления структуры.
- Зависимость от сцены: эффективность VGI сильно зависит от сложности геометрии. В сценах с большим количеством мелких объектов или с открытыми пространствами (например, пустыня) производительность может снижаться.
¶Сравнение с альтернативными методами
| Метод | Качество | Производительность | Динамика | Сложность реализации |
|---|---|---|---|---|
| VGI | Среднее/высокое | Высокая (реальное время) | Высокая | Средняя |
| Трассировка пути (Path Tracing) | Очень высокое | Низкая (нереальное время) | Высокая | Высокая |
| Световые карты (Lightmaps) | Высокое (статическое) | Очень высокая | Низкая (статическая) | Низкая |
| Ambient Occlusion | Низкое (только тени) | Очень высокая | Высокая | Низкая |
¶Перспективы развития
С развитием аппаратного обеспечения (например, трассировки лучей на GPU NVIDIA RTX) и программных методов (машинное обучение для аппроксимации освещения) VGI постепенно вытесняется более точными методами, такими как Lumen в Unreal Engine 5 или гибридные системы, сочетающие трассировку лучей и воксельные подходы. Однако VGI остаётся востребованным для платформ с ограниченными ресурсами (мобильные устройства, консоли предыдущего поколения) и в проектах, где требуется высокая производительность при приемлемом качестве освещения.
¶Источники
- Crytek. "Light Propagation Volumes in CryEngine 3". SIGGRAPH 2010 Talk.
- NVIDIA. "Voxel Cone Tracing for Global Illumination". GPU Gems 3, 2007.
- Epic Games. "Unreal Engine 4 Documentation: Voxel Global Illumination".
- Cyril Crassin et al. "Interactive Indirect Illumination Using Voxel Cone Tracing". ACM Transactions on Graphics, 2011.
- Unity Technologies. "High Definition Render Pipeline: Voxel Global Illumination". Unity Manual.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →
