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

Hérite de : Light3D < VisualInstance3D < Node3D < Node < Object

Une lumière de zone, comme un tube de néon ou un écran.

Description

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.

Tutoriels

Propriétés

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)


Descriptions des propriétés

float area_attenuation = 1.0 🔗

Contrôle la fonction d'atténuation de distance pour les lumières de zone.

Une valeur de 0.0 maintiendra une luminosité constante à travers la plupart de la plage, mais atténuera doucement la lumière au bord de l'intervalle. Utilisez une valeur de 2.0 pour des lumières physiquement précises, car cela entraîne une atténuation carrée inverse appropriée.

Note : Définir l'atténuation à 2.0 ou plus peut résulter en des objets distants recevant une lumière minimale, même dans l'intervalle. Par exemple, avec un intervalle de 4096, un objet à 100 unités est atténué par un facteur de 0.0001. Avec une luminosité par défaut de 1, la lumière ne serait pas visible à cette distance.

Note : L'utilisation de valeurs négatives ou supérieures à 10.0 peut entraîner des résultats inattendus.


bool area_normalize_energy = true 🔗

  • void set_area_normalize_energy(value: bool)

  • bool is_area_normalizing_energy()

Définit si l'énergie est normalisée (divisée) par la zone de surface de la lumière. Si ajustée à vrai, la modification de la taille n'affecte pas l'énergie totale émise, et n'altère pas fortement la luminosité de la scène.


float area_range = 5.0 🔗

L'intervalle de zone est en mètres. Ceci détermine la distante maximale de n'importe quel point de la zone dans laquelle elle peut continuer d'émettre de la lumière.


Vector2 area_size = Vector2(1, 1) 🔗

L'étendue (largeur et hauteur) de la zone est en mètres.


Texture2D area_texture 🔗

Une texture optionnelle à utiliser comme source lumineuse. La modification de la texture en exécution peut impacter la performance, comme elle doit être dessinée sur la carte de la lumière avec des mipmaps filtrés.

Si aucune texture n'est attribuée, la lumière de zone émet une lumière uniforme au travers sa surface.

Note : Les textures de la lumière de zone ne sont supportées que dans les méthodes pour les rendus Forward+ et Mobile, pas pour Compatibilité. Afin de réduire l'impact sur la performance sur la bascule de texture en exécution, assurez-vous que chaque dimension de la texture de zone est un multiple de 128 pixels, ou une puissance de deux. Cela évite le besoin de transmettre une échelle, ce qui ralentit les changement de texture. Les textures n'ont pas besoin d'être nécessairement carrées pour être idéales. Les exemples de tailles de textures idéales incluent 32x64, 128x128 et 256x384.