Light¶
继承: VisualRender < Item3D < Item < Object
派生: DirectionalLight, PointLight, SpotLight
为不同类型的轻节点提供基类。
描述¶
Light3D是光节点的抽象基类。由于它不能被实例化,所以不应该直接使用。其他类型的光节点继承自它。Light3D包含用于照明的常用变量和参数。
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
枚举¶
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
用于访问PointLight.omni_range或SpotLight.spot_range的常量。
Param PARAM_SIZE = 5
用于访问light_size的常量。
Param PARAM_ATTENUATION = 6
用于访问PointLight.omni_attenuation或SpotLight.spot_attenuation的常量。
Param PARAM_SPOT_ANGLE = 7
常量用于访问SpotLight.spot_angle。
Param PARAM_SPOT_ATTENUATION = 8
常量用于访问SpotLight.spot_angle_attenuation。
Param PARAM_SHADOW_MAX_DISTANCE = 9
用于访问DirectionalLight.directional_shadow_max_distance的常量。
Param PARAM_SHADOW_SPLIT_1_OFFSET = 10
用于访问DirectionalLight.directional_shadow_split_1的常量。
Param PARAM_SHADOW_SPLIT_2_OFFSET = 11
用于访问DirectionalLight.directional_shadow_split_2的常量。
Param PARAM_SHADOW_SPLIT_3_OFFSET = 12
用于访问DirectionalLight.directional_shadow_split_3的常量。
Param PARAM_SHADOW_FADE_START = 13
用于访问DirectionalLight.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
用于访问DirectionalLight.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
烘焙时忽略光源。这是最快的模式,但烘焙全局照明时会考虑光线。这种模式通常应用于变化迅速的动态灯,因为全局照明对这些灯的影响不太明显。
注意:隐藏光源不影响烘焙Lightmass。隐藏光源仍然会影响烘焙VoxelGI和SDFGI(参见Environment.sdfgi_enabled)。
BakeMode BAKE_STATIC = 1
静态烘烤(VoxelGI、Lightmass、SDFGI(Environment.sdfgi_enabled)中考虑了光线,光线可以四处移动或修改,但其全局光照不会实时更新。这适用于细微的变化(如闪烁的手电筒),但一般不会有大的变化,如打开和关闭灯。
注意:如果editor_only为true,则Lightmass中的灯不会烘焙。
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为单位)。
注意:仅对PointLight和SpotLight有效。
bool distance_fade_enabled = false 🔗
如果true,则当远离从distance_fade_begin开始的活动Camera时,光源将平滑地消失。这是详细级别(LOD)的一种形式。光源将在distance_fade_begin+distance_fade_length上淡出,之后它将被剔除,根本不会发送到着色器。使用它来减少场景中活动光源的数量,从而提高性能。
注意:仅对PointLight和SpotLight有效。
float distance_fade_length = 10.0 🔗
光线和阴影消失的距离。在这个距离上,光线的能量和阴影的不透明度逐渐降低,最终完全不可见。
注意:仅对PointLight和SpotLight有效。
float distance_fade_shadow = 50.0 🔗
与摄像机之间的距离,光源的阴影被切断(以3D为单位)。将其设置为低于distance_fade_begin+distance_fade_length的值以进一步提高性能,因为阴影渲染通常比光渲染本身更昂贵。
注意:仅对PointLight和SpotLight有效,并且仅当shadow_enabled为true时有效。
如果true,则该灯仅出现在编辑器中,并且在运行时不可见。如果true,则无论其light_bake_mode如何,该光源都不会在Lightmass中烘焙。
float light_angular_distance = 0.0 🔗
光的角度大小(以度为单位)。增加这个值将使阴影在更远的距离更柔和(也称为百分比接近软阴影,或PCSS)。仅适用于DirectionalLights。作为参考,地球上的太阳大约是0.5。对于启用阴影的光源,将此值增加到0.0以上将由于PCSS而产生明显的性能成本。
注意:light_angular_distance不受Item3D.scale(光源的比例或其父级比例)的影响。
注意:用于方向灯的PCSS仅在Forward+渲染方法中受支持,不支持Mobile或兼容性。
BakeMode light_bake_mode = 2 🔗
光源的烘焙模式。这将影响对光源渲染有影响的全局照明技术。请参阅BakeMode。
注意:Meshes的全局光照模式也会影响全局光照渲染。参见GeometryRender.gi_mode。
Color light_color = Color(1, 1, 1, 1) 🔗
光线的颜色。可以使用过亮颜色来达到相当于增加光线的light_energy的效果。
int light_cull_mask = 4294967295 🔗
光线将影响所选图层中的对象。
光的强度倍增器(这不是物理单位)。对于PointLight和SpotLight,更改此值只会改变光色的强度,而不是光的半径。
float light_indirect_energy = 1.0 🔗
次级倍增器用于间接光(光反射)。与VoxelGI和SDFGI一起使用(参见Environment.sdfgi_enabled)。
注意:如果light_energy等于0.0,则忽略此属性,因为光根本不会出现在GI着色器中。
float light_intensity_lumens 🔗
由位置灯(PointLight和SpotLight)使用,当ProjectSettings.rendering/lights_and_shadows/use_physical_light_units为true时。设置以流明为单位测量的光源强度。流明是光通量的度量,即光源每单位时间发出的可见光总量。
对于SpotLights,我们假设可见锥体外部区域被完美的吸光材料包围,相应地,锥体区域的表观亮度不会随着锥体尺寸的增加和减少而改变。
一个典型的家用灯泡可以从大约600流明到1200流明不等,一支蜡烛大约是13流明,而路灯大约是60,000流明。
由DirectionalLights使用,当ProjectSettings.rendering/lights_and_shadows/use_physical_light_units为true时。设置以Lux为单位测量的光源强度。Lux是单位面积光通量的度量,它等于每平方米一流明。Lux是给定时间有多少光照射到表面的度量。
在晴朗的晴天,阳光直射下的表面可能约为100,000勒克斯,家庭中的典型房间可能约为50勒克斯,而月光下的地面可能约为0.1勒克斯。
如果true,则反转光的效果,使区域变暗并投射明亮的阴影。
由光投射的Texture2D。投影仪必须打开shadow_enabled才能工作。光投影仪使光线看起来像是穿过彩色但透明的物体,几乎就像光线穿过彩色玻璃一样。
注意:与BaseMaterial3D不同,BaseMaterial3D的滤镜模式可以在每种材质的基础上进行调整,光投影仪纹理的滤镜模式使用ProjectSettings.rendering/textures/light_projectors/filter进行全局设置。
注意:光投影仪纹理仅在Forward+和Mobile渲染方法中受支持,不支持兼容性。
以i3D为单位的光的大小。仅适用于PointLights和SpotLights。增加此值将使光淡出速度变慢,阴影看起来更模糊(也称为百分比接近软阴影,或PCSS)。这可以在一定程度上用于模拟区域灯。对于启用阴影的光源,将此值增加到0.0以上将由于PCSS而产生明显的性能成本。
注意:light_size不受Item3D.scale(光源的比例或其父级比例)的影响。
注意:位置灯的PCSS仅在Forward+和Mobile渲染方法中受支持,不支持兼容性。
受光影响的物体中镜面斑点的强度。在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(或除非重新投影量显着降低)。
用于调整阴影外观。太小的值会导致自阴影(“阴影痤疮”),而太大的值会导致阴影与脚轮分离(“peter-panning”)。根据需要进行调整。
模糊阴影的边缘。可用于隐藏低分辨率阴影贴图中的像素伪影。高值会影响性能,使阴影看起来颗粒状,并可能导致其他不需要的伪影。尽量保持接近默认值。
int shadow_caster_mask = 4294967295 🔗
光线只会使用选定图层中的对象投射阴影。
如果true,光线将投射实时阴影。这具有显着的性能成本。只有当它对场景外观产生明显差异时才启用阴影渲染,并考虑使用distance_fade_enabled在远离Camera时隐藏光线。
float shadow_normal_bias = 2.0 🔗
用对象的法线偏移对阴影贴图的查找。这可用于减少自阴影工件,而无需使用shadow_bias。实际上,此值应与shadow_bias一起调整,以尽可能减少工件。
渲染光线阴影贴图时使用的不透明度。低于1.0的值使光线通过阴影出现。这可以用来以较低的性能成本伪造全局照明。
bool shadow_reverse_cull_face = false 🔗
如果true,则反转网格的背面剔除。当您有一个后面有灯的平面网格时,这可能很有用。如果您需要在网格的两侧投射阴影,请将网格设置为使用GeometryRender.SHADOW_CASTING_SETTING_DOUBLE_SIDED的双面阴影。
方法说明¶
返回给定light_temperature处理想化黑体的Color。该值在内部根据light_temperature计算。此Color在发送到RenderingServer之前乘以light_color。
float get_param(param: Param) const 🔗
返回指定Param参数的值。
void set_param(param: Param, value: float) 🔗
设置指定Param参数的值。