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 пікселів або степенем числа 2. Це усуває необхідність у проході масштабування, що уповільнює зміну текстур. Текстури не обов'язково мають бути квадратними, щоб бути оптимальними. Прикладами оптимальних розмірів текстур є 32x64, 128x128 та 256x384.