reckfellENGINE

VoxelGI: запекание и устранение засветов

Size, статическая геометрия, данные .rbin и проверка результата.

На этой странице

VoxelGI

VoxelGI вычисляет непрямое освещение внутри заданного объёма. Статическая геометрия сначала подготавливается запеканием; использование результата и освещение выполняются во время рендеринга. Это не полностью динамическая геометрия без предварительной подготовки.

Используйте Forward+. VoxelGI не является способом получить тот же результат в Mobile или Compatibility. Для выбора метода см. обзор GI.

Подготовить объём

  1. Откройте уровень .rscene и проверьте освещение, материалы и нормали без GI. Сначала устраните дублированные источники и пересечения геометрии.
  2. Для участвующих статических MeshInstance3D установите GIMode = Static. Пустой MeshInstance3D, скрытая геометрия или объект вне объёма не создадут нужных данных запекания.
  3. Добавьте Entity типа VoxelGI в общий корень уровня, рядом с геометрией. По умолчанию запекание обходит родителя VoxelGI и его потомков. Если запекаете через API, передайте нужный корень в Bake(root).
  4. Поместите объём в нужную область и задайте Size. Это полная длина коробки по осям, а не половина размера. Например, Size = (8, 4, 8) покрывает от −4 до +4 по X/Z и от −2 до +2 по Y относительно центра.
  5. Выберите Subdiv. Числа 64/128/256/512 задают детализацию длиннейшей оси; короткие оси подстраиваются. Не увеличивайте объём на весь мир ради одной комнаты: размер ячейки станет грубее.
  6. Выделите VoxelGI и используйте Bake VoxelGI. При первом запекании сохраните внешний ресурс данных .rbin. Редактор предлагает это расширение; не используйте старый рецепт с .res.
  7. Убедитесь, что свойство Data содержит VoxelGIData, затем сохраните уровень. После повторного открытия данные должны оставаться назначенными.

Отсутствие Data означает отсутствие подготовленного объёма. Не компенсируйте пустое запекание увеличением Energy. Скрывать VoxelGI для сравнения можно; скрывать геометрию до запекания, ожидая, что она всё равно попадёт в данные, нельзя.

Что требует нового запекания

Перезапекайте после изменения статических мешей, их положения, материалов, эмиссии, границ или детализации объёма. Старые данные не перестраиваются от обычного сохранения уровня.

Режим геометрииПоведение
StaticУчаствует в подготовке VoxelGI и получает непрямой свет.
DynamicНе входит в статическое запекание; динамическое участие VoxelGI требует отдельной работы во время рендеринга и не бесплатно.
DisabledНе входит в запекаемую геометрию. Это не универсальный выключатель получения GI или прямого света.

Проверка здесь выполнялась на статических MeshInstance3D со StandardMaterial3D. Не рассчитывайте, что результат произвольного ShaderMaterial будет полностью воспроизведён статическим запеканием: вокселизатор извлекает свойства BaseMaterial3D. Для сложного материала сначала проверьте маленькую репрезентативную область.

Настройки данных

Свойство VoxelGIDataДля чего менять
InteriorИсключить вклад неба из VoxelGI для закрытого помещения. Не исправляет отверстия в стенах и прямой свет.
EnergyМасштаб непрямого света. Сначала настройте источники и эмиссию; увеличение Energy не исправляет геометрию.
Bias, NormalBiasСмещение выборки для борьбы с самозатенением. Слишком большое смещение может усилить утечки через стены.
Propagation, UseTwoBouncesХарактер распространения и дополнительные отражения. Сравнивайте кадр и стоимость на целевом GPU; универсального бесплатного улучшения нет.
DynamicRangeДиапазон представляемой энергии. Не используйте как произвольную замену экспозиции камеры.

Сохраняйте одинаковые камеру, экспозицию, источники и постобработку при сравнении. Отключайте вклад только проверяемого эффекта.

Устранить артефакт

  • Свет проходит через потолок: проверьте замкнутость и толщину потолка, ориентацию нормалей, реальный размер ячейки и затем Bias. Стена тоньше ячейки может плохо представляться объёмом.
  • Верх комнаты засвечен: сравните прямой свет отдельно от GI, проверьте вклад неба, эмиссию и экспозицию. Interior не выключает прямой DirectionalLight3D.
  • Статический объект перенесли, старый свет остался: перезапеките данные и проверьте, что сохранён именно назначенный Data-ресурс.
  • Объём не влияет: проверьте фактический Forward+, Data, видимость VoxelGI и пересечение объёма с получателями света.
  • Детали грязные или полосатые: сначала уменьшите лишний объём и проверьте достаточную детализацию; Bias увеличивайте небольшими шагами, проверяя утечки с другой стороны поверхности.
  • Освещение меняется при повороте камеры: исключите чрезмерное перекрытие объёмов. Текущий Forward+ хранит до 8 VoxelGI-экземпляров в GI-буфере; не проектируйте большое число перекрытий как бесконечно смешиваемое освещение.

Глобальная настройка rendering/global_illumination/gi/use_half_resolution влияет и на VoxelGI, и на SDFGI. Снижение разрешения может экономить GPU-время, но требует проверки тонких деталей. Результат и время кадра измеряйте отдельно.

Что проверено

На установленном Forward+/Vulkan проверены запекание статической эмиссивной геометрии, ненулевые VoxelGIData, сохранение и независимая загрузка .rbin, появление непрямого света на ранее тёмных поверхностях и его исчезновение при скрытии объёма. Это функциональная проверка, не приёмка качества всех моделей, производительности или динамической геометрии.

Для более протяжённого мира со статической геометрией рассмотрите SDFGI; для заранее рассчитанного освещения — LightmapGI.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.