OmniLight3D
Inherits:Light3D<VisualInstance3D<Node3D<Node<Object
Omnidirectional light, such as a light bulb or a candle.
Description
An Omnidirectional light is a type ofLight3D that emits light in all directions. The light is attenuated by distance and this attenuation can be configured by changing its energy, radius, and attenuation parameters.
Note: When using the Mobile rendering method, only 8 omni lights can be displayed on each mesh resource. Attempting to display more than 8 omni lights on a single mesh resource will result in omni lights flickering in and out as the camera moves. When using the Compatibility rendering method, only 8 omni lights can be displayed on each mesh resource by default, but this can be increased by adjustingProjectSettings.rendering/limits/opengl/max_lights_per_object.
Note: When using the Mobile or Compatibility rendering methods, omni lights will only correctly affect meshes whose visibility AABB intersects with the light's AABB. If using a shader to deform the mesh in a way that makes it go outside its AABB,GeometryInstance3D.extra_cull_margin must be increased on the mesh. Otherwise, the light may not be visible on the mesh.
Tutorials
Properties
light_specular |
| |
| ||
| ||
| ||
shadow_normal_bias |
|
Enumerations
enumShadowMode:🔗
ShadowModeSHADOW_DUAL_PARABOLOID =0
Shadows are rendered to a dual-paraboloid texture. Faster thanSHADOW_CUBE, but lower-quality.
ShadowModeSHADOW_CUBE =1
Shadows are rendered to a cubemap. Slower thanSHADOW_DUAL_PARABOLOID, but higher-quality.
Property Descriptions
floatget_param()
Controls the distance attenuation function for omnilights.
A value of0.0
will maintain a constant brightness through most of the range, but smoothly attenuate the light at the edge of the range. Use a value of2.0
for physically accurate lights as it results in the proper inverse square attenutation.
Note: Setting attenuation to2.0
or higher may result in distant objects receiving minimal light, even within range. For example, with a range of4096
, an object at100
units is attenuated by a factor of0.0001
. With a default brightness of1
, the light would not be visible at that distance.
Note: Using negative or values higher than10.0
may lead to unexpected results.
floatget_param()
The light's radius. Note that the effectively lit area may appear to be smaller depending on theomni_attenuation in use. No matter theomni_attenuation in use, the light will never reach anything outside this radius.
Note:omni_range is not affected byNode3D.scale (the light's scale or its parent's scale).
ShadowModeomni_shadow_mode =1
🔗
ShadowModeget_shadow_mode()
SeeShadowMode.