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 підрозділи. Це найвища якість, але найшвидше. На нижчому апараті це може призвести до графічного процесора.

Subdiv SUBDIV_MAX = 4

Представляємо розмір Subdiv enum.


Описи властивостей

CameraAttributes camera_attributes 🔗

CameraAttributes ресурс, який визначає рівні впливу на випікання. Автоекспозиції та неефективні властивості ігноруються. Параметри експозиції повинні бути використані для зменшення динамічного діапазону, що присутні при випіканні. Якщо експозиція занадто висока, то VoxelGI буде перехоплювати артефакти або може мати позаштачні артефакти.


VoxelGIData data 🔗

VoxelGIData ресурс, який містить дані для цього VoxelGI.


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

Розмір площі, покритого VoxelGI. Якщо ви робите розмір більшим, не збільшуючи підрозділи з subdiv, розмір кожної комірки збільшиться і призведе до більш детального освітлення.

Примітка: Розмір затискається до 1,0 одиниці або більше на кожній осі.


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() 🔗

Увімкніть create_visual_debug.