DirectionalLight3D

继承: Light3D < VisualInstance3D < Node3D < Node < Object

来自远处的平行光,如太阳光。

描述

平行光是一种 Light3D 节点,它可以模拟覆盖整个场景的无限数量的平行光线。它用于距离场景较远的强光,以模拟日光或月光。 DirectionalLight3D 变换的世界空间位置(原点)将被忽略。只有基被用于确定光线方向。

教程

属性

bool

directional_shadow_blend_splits

false

float

directional_shadow_fade_start

0.8

float

directional_shadow_max_distance

100.0

ShadowMode

directional_shadow_mode

2

float

directional_shadow_pancake_size

20.0

float

directional_shadow_split_1

0.1

float

directional_shadow_split_2

0.2

float

directional_shadow_split_3

0.5

SkyMode

sky_mode

0


枚举

enum ShadowMode:

ShadowMode SHADOW_ORTHOGONAL = 0

从正交的角度渲染整个场景的阴影图。这是最快的定向阴影模式。可能会导致近距离物体的阴影更模糊。

ShadowMode SHADOW_PARALLEL_2_SPLITS = 1

将视锥体分成2个区域,每个区域都有自己的阴影贴图。这种阴影模式是 SHADOW_ORTHOGONALSHADOW_PARALLEL_4_SPLITS 在性能上的折衷。

ShadowMode SHADOW_PARALLEL_4_SPLITS = 2

将视锥体分成 4 个区域,每个区域都有自己的阴影贴图。这是最慢的定向阴影模式。


enum SkyMode:

SkyMode SKY_MODE_LIGHT_AND_SKY = 0

使灯光在场景照明和天空渲染中都可见。

SkyMode SKY_MODE_LIGHT_ONLY = 1

使灯光仅在场景照明中可见(包括直接照明和全局照明)。使用此模式时,天空着色器看不到此灯光。

SkyMode SKY_MODE_SKY_ONLY = 2

使灯光仅对天空着色器可见。使用此模式时,灯光不会将灯光投射到场景中(通过直接照明或通过全局照明),但可以通过天空着色器访问。例如,当你想要控制天空效果而不照亮场景时(例如,在夜间循环期间),这可能很有用。


属性说明

bool directional_shadow_blend_splits = false

  • void set_blend_splits ( bool value )

  • bool is_blend_splits_enabled ( )

如果为 true,会牺牲阴影的细节,换取分割区域之间更平滑的过渡。启用阴影混合分割同时也会带来一些性能消耗。当 directional_shadow_modeSHADOW_ORTHOGONAL 时会被忽略。


float directional_shadow_fade_start = 0.8

  • void set_param ( float value )

  • float get_param ( )

阴影开始消失时,directional_shadow_max_distance 的比例。在 directional_shadow_max_distance 处,阴影会消失。默认值是平滑淡化和远处阴影可见性之间的平衡。如果相机移动较快且 directional_shadow_max_distance 较低,请考虑将 directional_shadow_fade_start 降低到 0.8 以下,以使阴影过渡不那么明显。另一方面,如果调整了 directional_shadow_max_distance 来覆盖整个场景,可以将 directional_shadow_fade_start 设置为 1.0,以防止阴影在远处逐渐淡化(它将会突然切断 )。


float directional_shadow_max_distance = 100.0

  • void set_param ( float value )

  • float get_param ( )

阴影分割的最大距离。将这个值增大会让定向阴影在更远处可见,代价是整体的阴影细节降低和性能(因为渲染定向阴影时需要包含更多的物体)。


ShadowMode directional_shadow_mode = 2

灯光的阴影渲染算法。见 ShadowMode


float directional_shadow_pancake_size = 20.0

  • void set_param ( float value )

  • float get_param ( )

设置定向阴影圆斑的大小。该圆斑偏移了阴影的相机视锥体的起点,为阴影提供更高的有效深度分辨率。但是,较大的圆斑大小会导致靠近视锥体边缘的大型物体的阴影出现伪影。减少该圆斑的大小会有所帮助。将大小设置为 0 会关闭该圆斑效果。


float directional_shadow_split_1 = 0.1

  • void set_param ( float value )

  • float get_param ( )

相机到阴影分割 1 的距离。相对于 directional_shadow_max_distance。只有当 directional_shadow_modeSHADOW_PARALLEL_2_SPLITSSHADOW_PARALLEL_4_SPLITS 时才使用。


float directional_shadow_split_2 = 0.2

  • void set_param ( float value )

  • float get_param ( )

从阴影分割 1 到阴影分割 2 的距离。相对于 directional_shadow_max_distance。仅在 directional_shadow_modeSHADOW_PARALLEL_4_SPLITS 时使用。


float directional_shadow_split_3 = 0.5

  • void set_param ( float value )

  • float get_param ( )

从阴影分割 2 到阴影分割 3 的距离。相对于 directional_shadow_max_distance。只有当 directional_shadow_modeSHADOW_PARALLEL_4_SPLITS 时才使用。


SkyMode sky_mode = 0

设置该 DirectionalLight3D 是否在天空、场景、或天空和场景中可见。有关选项,请参阅 SkyMode

Previous Next


© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7.

Built with Sphinx using a theme provided by Read the Docs.