Открыть сервис

Voxel Global Illumination

Voxel Global Illumination (VGI, воксельное глобальное освещение) — это метод компьютерной графики, предназначенный для расчёта непрямого (отражённого) освещения в трёхмерных сценах, основанный на дискретизации пространства сцены в виде воксельной решётки. В отличие от традиционных методов, таких как трассировка пути (path tracing) или фотонные карты, VGI использует воксельное представление геометрии для аппроксимации распространения света, что позволяет достигать реалистичного освещения в реальном времени или с высокой производительностью.

Принцип работы

Основная идея VGI заключается в преобразовании непрерывного трёхмерного пространства сцены в регулярную сетку из вокселей — трёхмерных аналогов пикселей. Каждый воксель хранит информацию о свойствах материала (цвет, альбедо, отражательная способность) и, в некоторых реализациях, о накопленной освещённости. Процесс расчёта обычно включает два этапа:

  1. Вокселизация сцены: геометрия (полигональные модели) преобразуется в воксельное представление. Для этого каждый треугольник или поверхность растеризуется в трёхмерное пространство, заполняя соответствующие воксели. Размер вокселя (разрешение решётки) определяет точность аппроксимации: чем мельче воксели, тем выше детализация, но больше вычислительные затраты.
  1. Распространение света: от источников прямого освещения (например, солнца, ламп) излучаются фотоны или лучи, которые взаимодействуют с вокселями. При столкновении с вокселем часть энергии поглощается, а часть отражается в соответствии с законом Ламберта или другими моделями отражения. Отражённый свет затем распространяется на соседние воксели, создавая эффект непрямого освещения (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 →