Light3D
Наследует: VisualInstance3D < Node3D < Node < Object
Наследуется от: DirectionalLight3D, OmniLight3D, SpotLight3D
Предоставляет базовый класс для различных видов световых узлов.
Описание
Light3D — это абстрактный базовый класс для световых узлов. Поскольку его нельзя инстанцировать, его не следует использовать напрямую. Другие типы световых узлов наследуются от него. Light3D содержит общие переменные и параметры, используемые для освещения.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методы
get_correlated_color() const |
|
void |
Перечисления
enum Param: 🔗
Param PARAM_ENERGY = 0
Константа для доступа к light_energy.
Param PARAM_INDIRECT_ENERGY = 1
Константа для доступа к light_indirect_energy.
Param PARAM_VOLUMETRIC_FOG_ENERGY = 2
Константа для доступа к light_volumetric_fog_energy.
Param PARAM_SPECULAR = 3
Константа для доступа к light_specular.
Param PARAM_RANGE = 4
Константа для доступа к OmniLight3D.omni_range или SpotLight3D.spot_range.
Param PARAM_SIZE = 5
Константа для доступа к light_size.
Param PARAM_ATTENUATION = 6
Константа для доступа к OmniLight3D.omni_attenuation или SpotLight3D.spot_attenuation.
Param PARAM_SPOT_ANGLE = 7
Константа для доступа к SpotLight3D.spot_angle.
Param PARAM_SPOT_ATTENUATION = 8
Константа для доступа к SpotLight3D.spot_angle_attenuation.
Param PARAM_SHADOW_MAX_DISTANCE = 9
Константа для доступа к DirectionalLight3D.directional_shadow_max_distance.
Param PARAM_SHADOW_SPLIT_1_OFFSET = 10
Константа для доступа к DirectionalLight3D.directional_shadow_split_1.
Param PARAM_SHADOW_SPLIT_2_OFFSET = 11
Константа для доступа к DirectionalLight3D.directional_shadow_split_2.
Param PARAM_SHADOW_SPLIT_3_OFFSET = 12
Константа для доступа к DirectionalLight3D.directional_shadow_split_3.
Param PARAM_SHADOW_FADE_START = 13
Константа для доступа к DirectionalLight3D.directional_shadow_fade_start.
Param PARAM_SHADOW_NORMAL_BIAS = 14
Константа для доступа к shadow_normal_bias.
Param PARAM_SHADOW_BIAS = 15
Константа для доступа к shadow_bias.
Param PARAM_SHADOW_PANCAKE_SIZE = 16
Константа для доступа к DirectionalLight3D.directional_shadow_pancake_size.
Param PARAM_SHADOW_OPACITY = 17
Константа для доступа к shadow_opacity.
Param PARAM_SHADOW_BLUR = 18
Константа для доступа к shadow_blur.
Param PARAM_TRANSMITTANCE_BIAS = 19
Константа для доступа к shadow_transmittance_bias.
Param PARAM_INTENSITY = 20
Константа для доступа к light_intensity_lumens и light_intensity_lux. Используется только когда ProjectSettings.rendering/lights_and_shadows/use_physical_light_units имеет значение true.
Param PARAM_MAX = 21
Представляет размер перечисления Param.
enum BakeMode: 🔗
BakeMode BAKE_DISABLED = 0
Свет игнорируется при запекании. Это самый быстрый режим, но свет не будет учитываться при запекании глобального освещения. Этот режим обычно следует использовать для динамических источников света, которые быстро меняются, так как эффект глобального освещения на них менее заметен.
Примечание: Скрытие источника света не влияет на запекание LightmapGI. Скрытие источника света все равно повлияет на запекание VoxelGI и SDFGI (см. Environment.sdfgi_enabled).
BakeMode BAKE_STATIC = 1
Свет учитывается при статическом запекании (VoxelGI, LightmapGI, SDFGI (Environment.sdfgi_enabled)). Свет можно перемещать или изменять, но его глобальное освещение не будет обновляться в реальном времени. Это подходит для незначительных изменений (например, мерцающих факелов), но, как правило, не для больших изменений, таких как включение и выключение света.
Примечание: Свет не запекается в LightmapGI, если editor_only равен true.
BakeMode BAKE_DYNAMIC = 2
Свет учитывается при динамическом запекании (только VoxelGI и SDFGI (Environment.sdfgi_enabled)). Свет можно перемещать или изменять с обновлением глобального освещения в реальном времени. Внешний вид глобального освещения света будет немного отличаться по сравнению с BAKE_STATIC. Это имеет большую стоимость производительности по сравнению с BAKE_STATIC. При использовании SDFGI скорость обновления динамического освещения зависит от ProjectSettings.rendering/global_illumination/sdfgi/frames_to_update_lights.
Описания свойств
float distance_fade_begin = 40.0 🔗
Расстояние от камеры, на котором свет начинает затухать (в 3D-единицах).
Примечание: Действует только для OmniLight3D и SpotLight3D.
bool distance_fade_enabled = false 🔗
Если true, свет будет плавно затухать, когда находится далеко от активной Camera3D, начиная с distance_fade_begin. Это действует как форма уровня детализации (LOD). Свет будет затухать через distance_fade_begin + distance_fade_length, после чего он будет отбракован и вообще не отправлен в шейдер. Используйте это, чтобы уменьшить количество активных источников света в сцене и, таким образом, повысить производительность.
Примечание: Эффективно только для OmniLight3D и SpotLight3D.
float distance_fade_length = 10.0 🔗
Расстояние, на котором свет и его тень затухают. Энергия света и непрозрачность тени постепенно уменьшаются на этом расстоянии и в конце становятся полностью невидимыми.
Примечание: Эффективно только для OmniLight3D и SpotLight3D.
float distance_fade_shadow = 50.0 🔗
Расстояние от камеры, на котором тень света обрезается (в 3D-единицах). Установите это значение ниже, чем distance_fade_begin + distance_fade_length, чтобы еще больше повысить производительность, поскольку рендеринг тени часто обходится дороже, чем рендеринг самого света.
Примечание: Эффективно только для OmniLight3D и SpotLight3D, и только когда shadow_enabled равно true.
Если true, свет появляется только в редакторе и не будет виден во время выполнения. Если true, свет никогда не будет запечен в LightmapGI независимо от его light_bake_mode.
float light_angular_distance = 0.0 🔗
Угловой размер источника света в градусах. Увеличение этого значения сделает тени мягче на больших расстояниях (также называется процентно-ближенные мягкие тени, или PCSS). Доступно только для DirectionalLight3D. Для справки, Солнце от Земли составляет приблизительно 0.5. Увеличение этого значения выше 0.0 для источников света с включенными тенями приведет к заметному снижению производительности из-за PCSS.
Примечание: light_angular_distance не зависит от Node3D.scale (масштаб источника света или масштаб его родителя).
Примечание: PCSS для направленных источников света поддерживается только в методе рендеринга Forward+, а не Mobile или Compatibility.
BakeMode light_bake_mode = 2 🔗
Режим запекания света. Это повлияет на методы глобального освещения, которые влияют на рендеринг света.
Примечание: Режим глобального освещения сеток также повлияет на рендеринг глобального освещения. См. GeometryInstance3D.gi_mode.
Color light_color = Color(1, 1, 1, 1) 🔗
Цвет источника света в нелинейном кодировании sRGB. Цвет overbright может использоваться для достижения результата, эквивалентного увеличению light_energy источника света.
int light_cull_mask = 4294967295 🔗
Свет будет влиять на объекты в выбранных слоях.
Примечание: Маска отсечения света игнорируется VoxelGI, SDFGI, LightmapGI и объёмным туманом. Они всегда будут рендерить свет, игнорируя маску отсечения. См. также VisualInstance3D.layers.
Множитель силы света (это не физическая единица). Для OmniLight3D и SpotLight3D изменение этого значения изменит только интенсивность цвета света, но не радиус света.
float light_indirect_energy = 1.0 🔗
Вторичный множитель, используемый с непрямым светом (отскоки света). Используется с VoxelGI и SDFGI (см. Environment.sdfgi_enabled).
Примечание: Это свойство игнорируется, если light_energy равен 0.0, так как свет вообще не будет присутствовать в шейдере GI.
float light_intensity_lumens 🔗
Используется позиционными источниками света (OmniLight3D и SpotLight3D), когда ProjectSettings.rendering/lights_and_shadows/use_physical_light_units имеет значение true. Устанавливает интенсивность источника света, измеряемую в люменах. Люмены — это мера светового потока, представляющая собой общее количество видимого света, излучаемого источником света за единицу времени.
Для SpotLight3D мы предполагаем, что область за пределами видимого конуса окружена идеальным светопоглощающим материалом. Соответственно, видимая яркость области конуса не меняется по мере увеличения и уменьшения размера конуса.
Типичная бытовая лампочка может иметь яркость от 600 до 1200 люменов, свеча — около 13 люменов, а уличный фонарь — около 60 000 люменов.
Используется DirectionalLight3D, когда ProjectSettings.rendering/lights_and_shadows/use_physical_light_units имеет значение true. Устанавливает интенсивность источника света, измеряемую в люксах. Люкс — это мера светового потока на единицу площади, она равна одному люмену на квадратный метр. Люкс — это мера того, сколько света попадает на поверхность в данный момент времени.
В ясный солнечный день поверхность, находящаяся под прямыми солнечными лучами, может иметь освещенность приблизительно 100 000 люкс, типичная комната в доме может иметь освещенность приблизительно 50 люкс, в то время как освещенная луной земля может иметь освещенность приблизительно 0,1 люкс.
Если true, эффект света обратный, затемняя области и отбрасывая яркие тени.
Texture2D проецируется светом. shadow_enabled должен быть включен для работы проектора. Проекторы света создают видимость света, как будто он проходит через цветной, но прозрачный объект, почти как свет, проходящий через витражное стекло.
Примечание: В отличие от BaseMaterial3D, режим фильтра которого можно настраивать для каждого материала, режим фильтра для текстур проекторов света устанавливается глобально с помощью ProjectSettings.rendering/textures/light_projectors/filter.
Примечание: Текстуры проекторов света поддерживаются только в методах рендеринга Forward+ и Mobile, но не Compatibility.
Размер источника света в единицах Godot. Доступно только для OmniLight3D и SpotLight3D. Увеличение этого значения замедлит затухание света и сделает тени более размытыми (также называемыми процентно-ближенными мягкими тенями или PCSS). Это можно использовать для имитации площадного освещения в определенной степени. Увеличение этого значения выше 0.0 для источников света с включенными тенями приведет к заметному снижению производительности из-за PCSS.
Примечание: light_size не зависит от Node3D.scale (масштаба источника света или масштаба его родителя).
Примечание: PCSS для позиционного освещения поддерживается только в методах рендеринга Forward+ и Mobile, но не Compatibility.
Интенсивность зеркального пятна в объектах, затронутых светом. При 0 свет становится чистым диффузным светом. Если не запекать излучение, это можно использовать для избежания нереалистичных отражений при размещении света над излучающей поверхностью.
Устанавливает цветовую температуру источника света, измеряемую в градусах Кельвина. Используется для расчета коррелированной цветовой температуры, которая окрашивает light_color.
Температура солнца в пасмурный день составляет около 6500 Кельвинов, в ясный день — от 5500 до 6000 Кельвинов, а в ясный день на восходе или закате — около 1850 Кельвинов.
float light_volumetric_fog_energy = 1.0 🔗
Вторичный множитель умножается на light_energy, затем используется с объемным туманом Environment (если включен). Если установлено значение 0.0, вычисление объемного тумана будет пропущено для этого источника света, что может повысить производительность для большого количества источников света, когда включен объемный туман.
Примечание: Чтобы предотвратить плохое взаимодействие кратковременных динамических световых эффектов с объемным туманом, для источников света, используемых в этих эффектах, light_volumetric_fog_energy должно быть установлено значение 0.0, если только Environment.volumetric_fog_temporal_reprojection_enabled не отключено (или если количество перепроецирования значительно не снижено).
Используется для регулировки внешнего вида тени. Слишком маленькое значение приводит к самозатенению («теневые угри»), а слишком большое значение приводит к отделению теней от отбрасывающих их («Питер-Пэннинг»). Отрегулируйте по мере необходимости.
Размывает края тени. Может использоваться для скрытия артефактов пикселей в картах теней с низким разрешением. Высокое значение может повлиять на производительность, сделать тени зернистыми и вызвать другие нежелательные артефакты. Постарайтесь сохранить значение как можно ближе к значению по умолчанию.
int shadow_caster_mask = 4294967295 🔗
Свет будет отбрасывать тени только от объектов в выбранных слоях.
Если true, свет будет отбрасывать тени в реальном времени. Это существенно снижает производительность. Включайте рендеринг теней только тогда, когда это заметно влияет на внешний вид сцены, и рассмотрите возможность использования distance_fade_enabled, чтобы скрыть свет, когда он находится далеко от Camera3D.
float shadow_normal_bias = 2.0 🔗
Смещает поиск в теневой карте по нормали объекта. Это можно использовать для уменьшения артефактов самозатенения без использования shadow_bias. На практике это значение следует настраивать вместе с shadow_bias, чтобы максимально уменьшить артефакты.
Непрозрачность, используемая при рендеринге карты теней света. Значения ниже 1.0 заставляют свет проявляться сквозь тени. Это можно использовать для имитации глобального освещения с низкими затратами производительности.
bool shadow_reverse_cull_face = false 🔗
Если true, то отменяется отбраковка задней поверхности сетки. Это может быть полезно, когда у вас есть плоская сетка, за которой находится свет. Если вам нужно отбросить тень на обе стороны сетки, настройте сетку на использование двухсторонних теней с помощью GeometryInstance3D.SHADOW_CASTING_SETTING_DOUBLE_SIDED.
float shadow_transmittance_bias = 0.05 🔗
There is currently no description for this property. Please help us by contributing one!
Описания метода
Возвращает Color идеализированного черного тела при заданной light_temperature. Это значение вычисляется внутренне на основе light_temperature. Этот Color умножается на light_color перед отправкой на RenderingServer.
float get_param(param: Param) const 🔗
Возвращает значение указанного параметра Param.
void set_param(param: Param, value: float) 🔗
Устанавливает значение указанного параметра Param.