VoxelGI

Наследует: VisualInstance3D < Node3D < Node < Object

Зонд глобального освещения (GI) в реальном времени.

Описание

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

Примечание: VoxelGI поддерживается только в методе рендеринга Forward+, а не в Mobile или Compatibility.

Процедурная генерация: VoxelGI можно запечь в экспортированном проекте, что делает его подходящим для процедурно сгенерированных или созданных пользователем уровней, если вся геометрия сгенерирована заранее. Для игр, где геометрия генерируется в любой момент во время игрового процесса, больше подходит SDFGI (см. Environment.sdfgi_enabled).

Производительность: VoxelGI относительно требователен к графическому процессору и не подходит для аппаратного обеспечения низкого уровня, такого как интегрированная графика (вместо этого рассмотрите LightmapGI). Чтобы улучшить производительность, настройте ProjectSettings.rendering/global_illumination/voxel_gi/quality и включите ProjectSettings.rendering/global_illumination/gi/use_half_resolution в настройках проекта. Чтобы обеспечить резерв для аппаратного обеспечения низкого уровня, рассмотрите возможность добавления опции отключения VoxelGI в меню параметров вашего проекта. Узел VoxelGI можно отключить, скрыв его.

Примечание: Меши должны иметь достаточно толстые стенки, чтобы избежать утечек света (избегайте односторонних стен). Для внутренних уровней заключите геометрию уровня в достаточно большой ящик и соедините петли, чтобы закрыть сетку. Чтобы еще больше предотвратить утечки света, вы также можете стратегически разместить временные узлы MeshInstance3D с их GeometryInstance3D.gi_mode, установленным на GeometryInstance3D.GI_MODE_STATIC. Эти временные узлы затем можно скрыть после запекания узла VoxelGI.

Обучающие материалы

Свойства

CameraAttributes

camera_attributes

VoxelGIData

data

Vector3

size

Vector3(20, 20, 20)

Subdiv

subdiv

1

Методы

void

bake(from_node: Node = null, create_visual_debug: bool = false)

void

debug_bake()


Перечисления

enum Subdiv: 🔗

Subdiv SUBDIV_64 = 0

Используйте 64 подразделений. Это самая низкая настройка качества, но самая быстрая. Используйте ее, если можете, но особенно используйте ее на слабом оборудовании.

Subdiv SUBDIV_128 = 1

Использовать 128 подразделений. Это настройка качества по умолчанию.

Subdiv SUBDIV_256 = 2

Использовать 256 делений.

Subdiv SUBDIV_512 = 3

Использовать 512 подразбиений. Это настройка наивысшего качества, но медленная. На слабом оборудовании это может привести к остановке GPU.

Subdiv SUBDIV_MAX = 4

Представляет размер перечисления Subdiv.


Описания свойств

CameraAttributes camera_attributes 🔗

Ресурс CameraAttributes, который определяет уровни экспозиции для запекания. Свойства автоматической экспозиции и отсутствия экспозиции будут игнорироваться. Настройки экспозиции следует использовать для уменьшения динамического диапазона, присутствующего при запекании. Если экспозиция слишком высокая, VoxelGI будет иметь артефакты полос или может иметь артефакты переэкспонирования.


VoxelGIData data 🔗

Ресурс VoxelGIData, содержащий данные для этого VoxelGI.


Vector3 size = Vector3(20, 20, 20) 🔗

Размер области, покрываемой VoxelGI. Он должен быть 1.0 или больше по каждой оси.

Примечание: Если вы увеличите размер, не увеличивая количество подразделений с помощью subdiv, размер каждой ячейки увеличится, что приведет к менее детальному освещению.


Subdiv subdiv = 1 🔗

Количество раз, когда нужно разделить сетку, над которой работает VoxelGI. Большее число приводит к более мелкой детализации и, следовательно, к более высокому визуальному качеству, тогда как меньшее число приводит к лучшей производительности.


Описания метода

void bake(from_node: Node = null, create_visual_debug: bool = false) 🔗

Запекает эффект из всех GeometryInstance3D, отмеченных GeometryInstance3D.GI_MODE_STATIC, и Light3D, отмеченных либо Light3D.BAKE_STATIC, либо Light3D.BAKE_DYNAMIC. Если create_visual_debug имеет значение true, после запекания света будет сгенерирована MultiMesh, в которой есть куб, представляющий каждую сплошную ячейку, причем каждый куб окрашен в цвет альбедо ячейки. Это можно использовать для визуализации данных VoxelGI и отладки любых проблем, которые могут возникнуть.

Примечание: bake() работает из редактора и в экспортированных проектах. Это делает его подходящим для процедурно сгенерированных или созданных пользователем уровней. Запекание узла VoxelGI обычно занимает от 5 до 20 секунд в большинстве сцен. Уменьшение subdiv может ускорить запекание.

Примечание: GeometryInstance3D и Light3D должны быть полностью готовы до вызова bake(). Если вы создаете их процедурно и в вашем запеченном VoxelGI отсутствуют некоторые сетки или источники света, используйте call_deferred("bake") вместо прямого вызова bake().


void debug_bake() 🔗

Вызывает метод bake() с включенным create_visual_debug.