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.

AreaLight3D

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

Светильник, освещающий большую площадь, например, неоновая лампа или экран.

Описание

An area light is a type of Light3D node that emits light over a two-dimensional area, in the shape of a rectangle. The light is attenuated throughout the distance. This attenuation can be configured by changing the energy, area_attenuation, and area_range.

Light is emitted in the -Z direction of the node's global basis. For an unrotated light, this means that the light is emitted forwards, illuminating the front side of a 3D model (see Vector3.FORWARD and Vector3.MODEL_FRONT).

Area lights can cast soft shadows using PCSS, which you can control by tweaking the size parameter. The shadow map is drawn from the center of the light.

Note: Area lights have limited support in the Mobile and Compatibility renderers. In the Mobile renderer, the size of the penumbra doesn't vary as it should with PCSS. In Compatibility, area lights cannot cast shadows.

Warning: Shadows cast by an area light may look incorrect if the object casting shadows doesn't have enough subdivisions and it's very close to the area light. This is the same limitation as the Dual Paraboloid shadow mode on an OmniLight3D.

Performance: Area lights are more demanding on the GPU compared to omni and spot lights. In Forward+, there is an additional GPU cost on all rendered objects as soon as one area light is present in the view frustum (due to the nature of clustered lighting). Consider using them only for cinematics or when targeting high-end devices.

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

Свойства

float

area_attenuation

1.0

bool

area_normalize_energy

true

float

area_range

5.0

Vector2

area_size

Vector2(1, 1)

Texture2D

area_texture

float

light_size

0.5 (overrides Light3D)

float

shadow_normal_bias

1.0 (overrides Light3D)


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

float area_attenuation = 1.0 🔗

Управляет функцией ослабления света на расстоянии для этого источника света.

Значение 0.0 обеспечит постоянную яркость на большей части диапазона, но плавно ослабит свет на краю диапазона. Используйте значение 2.0 для физически точных источников света, так как это обеспечивает правильное ослабление света в обратном квадратичном выражении.

Примечание: Установка ослабления на 2.0 или выше может привести к тому, что удаленные объекты будут получать минимальное количество света, даже находясь в пределах диапазона. Например, при диапазоне 4096 объект на расстоянии 100 единиц будет ослаблен в 0.0001. При яркости по умолчанию 1 свет не будет виден на этом расстоянии.

** Примечание: Использование отрицательных значений или значений выше 10.0 может привести к неожиданным результатам.


bool area_normalize_energy = true 🔗

  • void set_area_normalize_energy(value: bool)

  • bool is_area_normalizing_energy()

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


float area_range = 5.0 🔗

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


Vector2 area_size = Vector2(1, 1) 🔗

Размеры (ширина и высота) площади в метрах.


Texture2D area_texture 🔗

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

Если текстура не назначена, источник света излучает равномерный свет по всей своей поверхности.

Примечание: Текстуры источников света поддерживаются только в методах рендеринга Forward+ и Mobile, а не в Compatibility. Чтобы уменьшить влияние на производительность при переключении текстур во время выполнения, убедитесь, что каждый размер текстуры области либо кратен 128 пикселям, либо является степенью двойки. Это устраняет необходимость в проходе масштабирования, который замедляет изменение текстур. Текстуры не обязательно должны быть квадратными для оптимальной производительности. Примеры оптимальных размеров текстур включают 32x64, 128x128 и 256x384.