LightmapGI

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

Вычисляет и сохраняет запеченные карты освещения для быстрого глобального освещения.

Описание

Узел LightmapGI используется для вычисления и хранения запеченных карт освещения. Карты освещения используются для обеспечения высококачественного непрямого освещения с очень малой утечкой света. LightmapGI также может обеспечивать грубые отражения с использованием сферических гармоник, если включен directional. Динамические объекты могут получать непрямое освещение благодаря световым зондам, которые можно автоматически размещать, устанавливая generate_probes_subdiv на значение, отличное от GENERATE_PROBES_DISABLED. Дополнительные зонды световых карт также можно добавлять, создавая узлы LightmapProbe. Недостатком является то, что световые карты полностью статичны и не могут быть запечены в экспортированном проекте. Запекание узла LightmapGI также медленнее по сравнению с VoxelGI.

Процедурная генерация: Функциональность запекания световых карт доступна только в редакторе. Это означает, что LightmapGI не подходит для процедурно сгенерированных или созданных пользователем уровней. Для процедурно сгенерированных или созданных пользователем уровней используйте VoxelGI или SDFGI (см. Environment.sdfgi_enabled).

Производительность: LightmapGI обеспечивает наилучшую возможную производительность во время выполнения для глобального освещения. Подходит для аппаратного обеспечения низкого уровня, включая интегрированную графику и мобильные устройства.

Примечание: Из-за особенностей работы карт освещения большинство свойств имеют видимый эффект только после повторного запекания карт освещения.

Примечание: Запекание карт освещения на CSGShape3D и PrimitiveMesh не поддерживается, так как они не могут хранить данные UV2, необходимые для запекания.

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

Примечание: Узел LightmapGI запекает только данные освещения для дочерних узлов своего родителя. Узлы, расположенные выше по иерархии сцены, не будут запекаться.

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

Свойства

float

bias

0.0005

float

bounce_indirect_energy

1.0

int

bounces

3

CameraAttributes

camera_attributes

int

denoiser_range

10

float

denoiser_strength

0.1

bool

directional

false

Color

environment_custom_color

Color(1, 1, 1, 1)

float

environment_custom_energy

1.0

Sky

environment_custom_sky

EnvironmentMode

environment_mode

1

GenerateProbes

generate_probes_subdiv

2

bool

interior

false

LightmapGIData

light_data

int

max_texture_size

16384

BakeQuality

quality

1

ShadowmaskMode

shadowmask_mode

0

bool

supersampling

false

float

supersampling_factor

2.0

float

texel_scale

1.0

bool

use_denoiser

true

bool

use_texture_for_bounces

true


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

enum BakeQuality: 🔗

BakeQuality BAKE_QUALITY_LOW = 0

Низкое качество запекания (самое быстрое время запекания). Качество этого пресета можно настроить, изменив ProjectSettings.rendering/lightmapping/bake_quality/low_quality_ray_count и ProjectSettings.rendering/lightmapping/bake_quality/low_quality_probe_ray_count.

BakeQuality BAKE_QUALITY_MEDIUM = 1

Среднее качество запекания (быстрое время запекания). Качество этого пресета можно настроить, изменив ProjectSettings.rendering/lightmapping/bake_quality/medium_quality_ray_count и ProjectSettings.rendering/lightmapping/bake_quality/medium_quality_probe_ray_count.

BakeQuality BAKE_QUALITY_HIGH = 2

Высокое качество запекания (медленное время запекания). Качество этого пресета можно настроить, изменив ProjectSettings.rendering/lightmapping/bake_quality/high_quality_ray_count и ProjectSettings.rendering/lightmapping/bake_quality/high_quality_probe_ray_count.

BakeQuality BAKE_QUALITY_ULTRA = 3

Высочайшее качество запекания (самое медленное время запекания). Качество этого пресета можно настроить, изменив ProjectSettings.rendering/lightmapping/bake_quality/ultra_quality_ray_count и ProjectSettings.rendering/lightmapping/bake_quality/ultra_quality_probe_ray_count.


enum GenerateProbes: 🔗

GenerateProbes GENERATE_PROBES_DISABLED = 0

Не создавайте зонды карты освещения для освещения динамических объектов.

GenerateProbes GENERATE_PROBES_SUBDIV_4 = 1

Самый низкий уровень подразделения (самое быстрое время запекания, наименьшие размеры файлов).

GenerateProbes GENERATE_PROBES_SUBDIV_8 = 2

Низкий уровень подразделения (быстрое время запекания, небольшой размер файлов).

GenerateProbes GENERATE_PROBES_SUBDIV_16 = 3

Высокий уровень разбиения (медленное время запекания, большие размеры файлов).

GenerateProbes GENERATE_PROBES_SUBDIV_32 = 4

Самый высокий уровень подразделения (самое медленное время запекания, самые большие размеры файлов).


enum BakeError: 🔗

BakeError BAKE_ERROR_OK = 0

Запекание карты освещения прошло успешно.

BakeError BAKE_ERROR_NO_SCENE_ROOT = 1

Запекание карты освещения не удалось, поскольку не удалось получить доступ к корневому узлу редактируемой сцены.

BakeError BAKE_ERROR_FOREIGN_DATA = 2

Запекание карты освещения не удалось, так как ресурс данных карты освещения встроен в сторонний ресурс.

BakeError BAKE_ERROR_NO_LIGHTMAPPER = 3

Запекание карты освещения не удалось, так как в этой сборке Godot отсутствует модуль карты освещения.

BakeError BAKE_ERROR_NO_SAVE_PATH = 4

Не удалось выполнить запекание карты освещения, так как путь сохранения LightmapGIData не настроен в ресурсе.

BakeError BAKE_ERROR_NO_MESHES = 5

Запекание карты освещения не удалось, так как нет сеток, у которых GeometryInstance3D.gi_mode является GeometryInstance3D.GI_MODE_STATIC и с допустимым отображением UV2 в текущей сцене. Возможно, вам придется выбрать 3D-сцены в доке импорта и изменить их глобальный режим освещения соответствующим образом.

BakeError BAKE_ERROR_MESHES_INVALID = 6

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

BakeError BAKE_ERROR_CANT_CREATE_IMAGE = 7

Запекание карты освещения не удалось, поскольку полученное изображение не удалось сохранить или импортировать в Godot после сохранения.

BakeError BAKE_ERROR_USER_ABORTED = 8

Пользователь прервал операцию запекания карты освещения (обычно нажав кнопку Отмена в диалоговом окне хода выполнения).

BakeError BAKE_ERROR_TEXTURE_SIZE_TOO_SMALL = 9

Запекание карты освещения не удалось, так как максимальный размер текстуры слишком мал для некоторых сеток, отмеченных для запекания.

BakeError BAKE_ERROR_LIGHTMAP_TOO_SMALL = 10

Запекание карты освещения не удалось, так как карта освещения слишком мала.

BakeError BAKE_ERROR_ATLAS_TOO_SMALL = 11

Запекание карты освещения не удалось, поскольку карта освещения не смогла поместиться в атлас.


enum EnvironmentMode: 🔗

EnvironmentMode ENVIRONMENT_MODE_DISABLED = 0

Игнорируйте окружающее освещение при запекании световых карт.

EnvironmentMode ENVIRONMENT_MODE_SCENE = 1

Используйте освещение среды сцены при запекании карт освещения.

Примечание: Если запекать карты освещения в сцене без узла WorldEnvironment, это будет действовать как ENVIRONMENT_MODE_DISABLED. Предварительный просмотр неба и солнца редактора не учитывается LightmapGI при запекании карт освещения.

EnvironmentMode ENVIRONMENT_MODE_CUSTOM_SKY = 2

Используйте environment_custom_sky в качестве источника освещения окружающей среды при запекании карт освещения.

EnvironmentMode ENVIRONMENT_MODE_CUSTOM_COLOR = 3

Используйте environment_custom_color, умноженный на environment_custom_energy, в качестве постоянного источника освещения окружающей среды при запекании карт освещения.


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

float bias = 0.0005 🔗

Смещение, используемое при вычислении теней. Увеличение bias может исправить теневые угри на результирующей запеченной карте освещения, но может привести к появлению Peter-Panning (тени, не соединяющиеся с их источниками). На тени Light3D в реальном времени это свойство bias не влияет.


float bounce_indirect_energy = 1.0 🔗

  • void set_bounce_indirect_energy(value: float)

  • float get_bounce_indirect_energy()

Множитель энергии для каждого отскока. Более высокие значения сделают непрямое освещение ярче. Значение 1.0 представляет физически точное поведение, но более высокие значения можно использовать, чтобы сделать непрямое освещение более заметным при использовании небольшого количества отскоков. Это можно использовать для ускорения времени запекания, уменьшив количество bounces, а затем увеличив bounce_indirect_energy.

Примечание: bounce_indirect_energy имеет эффект только в том случае, если для bounces задано значение большее или равное 1.


int bounces = 3 🔗

  • void set_bounces(value: int)

  • int get_bounces()

Количество отражений света, которые учитываются при запекании. Более высокие значения дают более яркое, реалистичное освещение за счет более длительного времени запекания. Если установлено значение 0, запекается только окружающее освещение, прямой свет и испускаемое освещение.


CameraAttributes camera_attributes 🔗

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


int denoiser_range = 10 🔗

  • void set_denoiser_range(value: int)

  • int get_denoiser_range()

Расстояние в пикселях, с которого берется образец шумоподавителя. Более низкие значения сохраняют больше деталей, но могут давать неоднородные результаты, если качество карты освещения недостаточно высокое. Эффективно только если use_denoiser равно true и ProjectSettings.rendering/lightmapping/denoising/denoiser установлено в JNLM.


float denoiser_strength = 0.1 🔗

  • void set_denoiser_strength(value: float)

  • float get_denoiser_strength()

Сила шага шумоподавления, применяемого к сгенерированным картам освещения. Действует только если use_denoiser имеет значение true и ProjectSettings.rendering/lightmapping/denoising/denoiser имеет значение JNLM.


bool directional = false 🔗

  • void set_directional(value: bool)

  • bool is_directional()

Если true, запекает карты освещения, чтобы они содержали информацию о направлении в виде сферических гармоник. Это приводит к более реалистичному внешнему виду освещения, особенно с материалами с картами нормалей и для источников света, у которых запечен прямой свет (Light3D.light_bake_mode установлен на Light3D.BAKE_STATIC и с Light3D.editor_only установлен на false). Информация о направлении также используется для предоставления грубых отражений для статических и динамических объектов. Это имеет небольшие затраты производительности во время выполнения, так как шейдеру приходится выполнять больше работы для интерпретации информации о направлении из карты освещения. Направленные карты освещения также дольше запекаются и приводят к большему размеру файла.

Примечание: Имя свойства не имеет отношения к DirectionalLight3D. directional работает со всеми типами освещения.


Color environment_custom_color = Color(1, 1, 1, 1) 🔗

  • void set_environment_custom_color(value: Color)

  • Color get_environment_custom_color()

Цвет, используемый для освещения окружающей среды. Действует только если environment_modeENVIRONMENT_MODE_CUSTOM_COLOR.


float environment_custom_energy = 1.0 🔗

  • void set_environment_custom_energy(value: float)

  • float get_environment_custom_energy()

Множитель цвета для использования в освещении окружающей среды. Действует только если environment_mode имеет значение ENVIRONMENT_MODE_CUSTOM_COLOR.


Sky environment_custom_sky 🔗

  • void set_environment_custom_sky(value: Sky)

  • Sky get_environment_custom_sky()

Небо, используемое как источник освещения среды. Действует только если environment_mode имеет значение ENVIRONMENT_MODE_CUSTOM_SKY.


EnvironmentMode environment_mode = 1 🔗

Режим среды, используемый при запекании карт освещения.


GenerateProbes generate_probes_subdiv = 2 🔗

Уровень подразделения, используемый при автоматической генерации LightmapProbe для динамического освещения объектов. Более высокие значения приводят к более точному непрямому освещению динамических объектов за счет более длительного времени запекания и большего размера файла.

Примечание: Автоматически сгенерированные LightmapProbe не отображаются как узлы в доке дерева сцены и не могут быть изменены таким образом после генерации.

Примечание: Независимо от generate_probes_subdiv, прямое освещение динамических объектов всегда применяется с использованием узлов Light3D в реальном времени.


bool interior = false 🔗

  • void set_interior(value: bool)

  • bool is_interior()

Если true, игнорировать окружающее освещение при запекании карт освещения.


LightmapGIData light_data 🔗

LightmapGIData, связанный с этим узлом LightmapGI. Этот ресурс автоматически создается после запекания и не предназначен для создания вручную.


int max_texture_size = 16384 🔗

  • void set_max_texture_size(value: int)

  • int get_max_texture_size()

Максимальный размер текстуры для сгенерированного атласа текстур. Более высокие значения приведут к генерации меньшего количества срезов, но могут не работать на всех аппаратных средствах из-за аппаратных ограничений на размеры текстур. Оставьте max_texture_size в значении по умолчанию 16384, если не уверены.


BakeQuality quality = 1 🔗

Предустановка качества для использования при запекании карт освещения. Это влияет на время запекания, но размеры выходных файлов остаются в основном одинаковыми на всех уровнях качества.

Чтобы еще больше ускорить время запекания, уменьшите bounces, отключите use_denoiser и/или уменьшите texel_scale.

Чтобы еще больше повысить качество, включите supersampling и/или увеличьте texel_scale.


ShadowmaskMode shadowmask_mode = 0 🔗

Экспериментальное: Это свойство может быть изменено или удалено в будущих версиях.

Политика маскировки теней, используемая для направленных теней на статических объектах, запеченных с этим экземпляром LightmapGI.

Маскировка теней позволяет узлам DirectionalLight3D отбрасывать тени даже за пределами диапазона, определенного их свойством DirectionalLight3D.directional_shadow_max_distance. Это делается путем запекания текстуры, содержащей карту теней для направленного света, а затем использования этой текстуры в соответствии с текущим режимом маски теней.

Примечание: Текстура маски теней создается только в том случае, если shadowmask_mode не является LightmapGIData.SHADOWMASK_MODE_NONE. Чтобы увидеть разницу, вам нужно снова запечь карты освещения после переключения с LightmapGIData.SHADOWMASK_MODE_NONE на любой другой режим.


bool supersampling = false 🔗

  • void set_supersampling_enabled(value: bool)

  • bool is_supersampling_enabled()

Если true, карты освещения запекаются с масштабом текселя, умноженным на supersampling_factor, и подвергаются пониженной выборке перед сохранением карты освещения (поэтому эффективная плотность текселя идентична отключенной суперсэмплировке).

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


float supersampling_factor = 2.0 🔗

  • void set_supersampling_factor(value: float)

  • float get_supersampling_factor()

Коэффициент, на который умножается плотность текселей )texel( для суперсэмплинга )supersampling(. Для достижения наилучших результатов используйте целочисленное значение. Хотя дробные значения допускаются, они могут привести к увеличению утечки света и размытости карты освещения.

Более высокие значения могут привести к лучшему качеству, но также увеличивают время запекания и использование памяти при запекании.

См. supersampling для получения дополнительной информации.


float texel_scale = 1.0 🔗

  • void set_texel_scale(value: float)

  • float get_texel_scale()

Масштабирует плотность текселей карты освещения всех сеток для текущего запекания. Это множитель, который строится на существующем размере текселей карты освещения, определенном в каждой импортированной 3D-сцене, вместе с множителем плотности для каждой сетки (который предназначен для использования, когда одна и та же сетка используется в разных масштабах). Более низкие значения приведут к более быстрому времени запекания.

Например, удвоение texel_scale удваивает разрешение текстуры карты освещения для всех объектов на каждой оси, поэтому это учетверит количество текселей.


bool use_denoiser = true 🔗

  • void set_use_denoiser(value: bool)

  • bool is_using_denoiser()

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


bool use_texture_for_bounces = true 🔗

  • void set_use_texture_for_bounces(value: bool)

  • bool is_using_texture_for_bounces()

Если true, текстура с информацией об освещении будет сгенерирована для ускорения генерации непрямого освещения за счет некоторой потери точности. Геометрия может демонстрировать дополнительные артефакты утечки света при использовании карт освещения с низким разрешением или UV, которые значительно растягивают карту освещения по поверхностям. Оставьте use_texture_for_bounces со значением по умолчанию true, если не уверены.

Примечание: use_texture_for_bounces имеет эффект только в том случае, если bounces установлен на значение большее или равное 1.