Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

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

Lightmap було успішним.

BakeError BAKE_ERROR_NO_SCENE_ROOT = 1

Lightmap випікання не вдалося, тому що кореневий вузол для редагування сцени не може бути підключений.

BakeError BAKE_ERROR_FOREIGN_DATA = 2

Lightmap випікання не вдалося як ресурс даних Lightmap вбудований в іноземний ресурс.

BakeError BAKE_ERROR_NO_LIGHTMAPPER = 3

Lightmap випічка не вдалося, як там немає світлакарта, доступна в цій колекції Godot.

BakeError BAKE_ERROR_NO_SAVE_PATH = 4

Lightmap випічка не була як LightmapGIData зберегти шлях не налаштовується в ресурсі.

BakeError BAKE_ERROR_NO_MESHES = 5

Lightmap випікання не вдалося, оскільки немає сітки, які GeometryInstance3D.gi_mode є GeometryInstance3D.GI_MODE_STATIC і з чинним УФ2 картуванням в поточній сцені. Вам може знадобитися вибрати 3D-сцени в Доку Імпорта і змінити свій глобальний режим освітлення відповідно.

BakeError BAKE_ERROR_MESHES_INVALID = 6

Lightmap не вдалося проаналізувати деякі сітки, позначені статичною для випічки.

BakeError BAKE_ERROR_CANT_CREATE_IMAGE = 7

Lightmap не вдалося зберегти або імпортувати Godot після його збереження.

BakeError BAKE_ERROR_USER_ABORTED = 8

Користувач припинив роботу випікання Lightmap (типово натиснувши кнопку Cancel у діалоговому вікні прогресу).

BakeError BAKE_ERROR_TEXTURE_SIZE_TOO_SMALL = 9

Lightmap випікання не вдалося, оскільки максимальний розмір текстури занадто малий, щоб підійти деякі сітки, позначені для випічки.

BakeError BAKE_ERROR_LIGHTMAP_TOO_SMALL = 10

Lightmap випічка не була настільки невеликою.

BakeError BAKE_ERROR_ATLAS_TOO_SMALL = 11

Lightmap випічка не в змозі вписати в атлас.


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 може зафіксувати тіньові прищі на отриманому запеченому світлі карти, але може ввести петер-панування (порід не з'єднуючись до своїх роликів). В режимі реального часу 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()

Відстань в пікселях з яких зразків дезодоратора. Низькі значення зберігають більше деталей, але можуть дати розмиті результати, якщо якість Lightmap недостатньо. Тільки ефективний, якщо 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/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. Напрямна інформація також використовується для забезпечення грубих відбиття для статичних та динамічних об'єктів. Це має невелику вартість виконання робочого часу, оскільки шейдер повинен виконувати більше роботи для інтерпретації інформації про напрямок від Lightmap. Прямі мапи також візьмуть довше, щоб випікати і призвести до більшого розміру файлів.

Примітка: Назва майна не має відносин з DirectionalLight3D. directional працює з усіма видами світла.


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

  • void set_environment_custom_color(value: Color)

  • Color get_environment_custom_color()

Колір, який використовуватиметься для освітлення середовища. Ефективний лише тоді, коли environment_mode має значення ENVIRONMENT_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.

Shadowmasking дозволяє вузлам 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()

Коефіцієнт, на який множиться щільність текселів для супердискретизації. Для отримання найкращих результатів використовуйте ціле число. Хоча дробові значення дозволені, вони можуть призвести до збільшення витоку світла та розмитості карти освітлення.

Вищі значення можуть призвести до кращої якості, але також збільшити час випікання та використання пам’яті під час випікання.

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


bool use_texture_for_bounces = true 🔗

  • void set_use_texture_for_bounces(value: bool)

  • bool is_using_texture_for_bounces()

Якщо true, буде створено текстуру з інформацією про освітлення, щоб пришвидшити створення непрямого освітлення ціною певної точності. У геометрії можуть спостерігатися додаткові артефакти витоку світла під час використання карт освітлення з низькою роздільною здатністю або UVs, які значно розтягують карту освітлення по поверхнях. Залиште use_texture_for_bounces значенням за замовчуванням true, якщо не впевнені.

Примітка: use_texture_for_bounces має ефект, лише якщо bounces встановлено на значення, більше або дорівнює 1.