class_directionallight.rst 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/3.6/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/3.6/doc/classes/DirectionalLight.xml.
  6. .. _class_DirectionalLight:
  7. DirectionalLight
  8. ================
  9. **Inherits:** :ref:`Light<class_Light>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  10. Directional light from a distance, as from the Sun.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. A directional light is a type of :ref:`Light<class_Light>` node that models an infinite number of parallel rays covering the entire scene. It is used for lights with strong intensity that are located far away from the scene to model sunlight or moonlight. The worldspace location of the DirectionalLight transform (origin) is ignored. Only the basis is used to determine light direction.
  15. .. rst-class:: classref-introduction-group
  16. Tutorials
  17. ---------
  18. - :doc:`../tutorials/3d/lights_and_shadows`
  19. .. rst-class:: classref-reftable-group
  20. Properties
  21. ----------
  22. .. table::
  23. :widths: auto
  24. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  25. | :ref:`float<class_float>` | :ref:`directional_shadow_bias_split_scale<class_DirectionalLight_property_directional_shadow_bias_split_scale>` | ``0.25`` |
  26. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  27. | :ref:`bool<class_bool>` | :ref:`directional_shadow_blend_splits<class_DirectionalLight_property_directional_shadow_blend_splits>` | ``false`` |
  28. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  29. | :ref:`ShadowDepthRange<enum_DirectionalLight_ShadowDepthRange>` | :ref:`directional_shadow_depth_range<class_DirectionalLight_property_directional_shadow_depth_range>` | ``0`` |
  30. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  31. | :ref:`float<class_float>` | :ref:`directional_shadow_fade_start<class_DirectionalLight_property_directional_shadow_fade_start>` | ``0.8`` |
  32. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  33. | :ref:`float<class_float>` | :ref:`directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>` | ``100.0`` |
  34. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  35. | :ref:`ShadowMode<enum_DirectionalLight_ShadowMode>` | :ref:`directional_shadow_mode<class_DirectionalLight_property_directional_shadow_mode>` | ``3`` |
  36. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  37. | :ref:`float<class_float>` | :ref:`directional_shadow_normal_bias<class_DirectionalLight_property_directional_shadow_normal_bias>` | ``0.8`` |
  38. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  39. | :ref:`float<class_float>` | :ref:`directional_shadow_split_1<class_DirectionalLight_property_directional_shadow_split_1>` | ``0.1`` |
  40. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  41. | :ref:`float<class_float>` | :ref:`directional_shadow_split_2<class_DirectionalLight_property_directional_shadow_split_2>` | ``0.2`` |
  42. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  43. | :ref:`float<class_float>` | :ref:`directional_shadow_split_3<class_DirectionalLight_property_directional_shadow_split_3>` | ``0.5`` |
  44. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  45. | :ref:`float<class_float>` | shadow_bias | ``0.1`` (overrides :ref:`Light<class_Light_property_shadow_bias>`) |
  46. +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
  47. .. rst-class:: classref-section-separator
  48. ----
  49. .. rst-class:: classref-descriptions-group
  50. Enumerations
  51. ------------
  52. .. _enum_DirectionalLight_ShadowMode:
  53. .. rst-class:: classref-enumeration
  54. enum **ShadowMode**:
  55. .. _class_DirectionalLight_constant_SHADOW_ORTHOGONAL:
  56. .. rst-class:: classref-enumeration-constant
  57. :ref:`ShadowMode<enum_DirectionalLight_ShadowMode>` **SHADOW_ORTHOGONAL** = ``0``
  58. Renders the entire scene's shadow map from an orthogonal point of view. This is the fastest directional shadow mode. May result in blurrier shadows on close objects.
  59. .. _class_DirectionalLight_constant_SHADOW_PARALLEL_2_SPLITS:
  60. .. rst-class:: classref-enumeration-constant
  61. :ref:`ShadowMode<enum_DirectionalLight_ShadowMode>` **SHADOW_PARALLEL_2_SPLITS** = ``1``
  62. Splits the view frustum in 2 areas, each with its own shadow map. This shadow mode is a compromise between :ref:`SHADOW_ORTHOGONAL<class_DirectionalLight_constant_SHADOW_ORTHOGONAL>` and :ref:`SHADOW_PARALLEL_4_SPLITS<class_DirectionalLight_constant_SHADOW_PARALLEL_4_SPLITS>` in terms of performance.
  63. .. _class_DirectionalLight_constant_SHADOW_PARALLEL_3_SPLITS:
  64. .. rst-class:: classref-enumeration-constant
  65. :ref:`ShadowMode<enum_DirectionalLight_ShadowMode>` **SHADOW_PARALLEL_3_SPLITS** = ``2``
  66. Splits the view frustum in 3 areas, each with its own shadow map. This shadow mode is a compromise between :ref:`SHADOW_ORTHOGONAL<class_DirectionalLight_constant_SHADOW_ORTHOGONAL>` and :ref:`SHADOW_PARALLEL_4_SPLITS<class_DirectionalLight_constant_SHADOW_PARALLEL_4_SPLITS>` in terms of performance.
  67. .. _class_DirectionalLight_constant_SHADOW_PARALLEL_4_SPLITS:
  68. .. rst-class:: classref-enumeration-constant
  69. :ref:`ShadowMode<enum_DirectionalLight_ShadowMode>` **SHADOW_PARALLEL_4_SPLITS** = ``3``
  70. Splits the view frustum in 4 areas, each with its own shadow map. This is the slowest directional shadow mode.
  71. .. rst-class:: classref-item-separator
  72. ----
  73. .. _enum_DirectionalLight_ShadowDepthRange:
  74. .. rst-class:: classref-enumeration
  75. enum **ShadowDepthRange**:
  76. .. _class_DirectionalLight_constant_SHADOW_DEPTH_RANGE_STABLE:
  77. .. rst-class:: classref-enumeration-constant
  78. :ref:`ShadowDepthRange<enum_DirectionalLight_ShadowDepthRange>` **SHADOW_DEPTH_RANGE_STABLE** = ``0``
  79. Keeps the shadow stable when the camera moves, at the cost of lower effective shadow resolution.
  80. .. _class_DirectionalLight_constant_SHADOW_DEPTH_RANGE_OPTIMIZED:
  81. .. rst-class:: classref-enumeration-constant
  82. :ref:`ShadowDepthRange<enum_DirectionalLight_ShadowDepthRange>` **SHADOW_DEPTH_RANGE_OPTIMIZED** = ``1``
  83. Tries to achieve maximum shadow resolution. May result in saw effect on shadow edges. This mode typically works best in games where the camera will often move at high speeds, such as most racing games.
  84. .. rst-class:: classref-section-separator
  85. ----
  86. .. rst-class:: classref-descriptions-group
  87. Property Descriptions
  88. ---------------------
  89. .. _class_DirectionalLight_property_directional_shadow_bias_split_scale:
  90. .. rst-class:: classref-property
  91. :ref:`float<class_float>` **directional_shadow_bias_split_scale** = ``0.25``
  92. .. rst-class:: classref-property-setget
  93. - void **set_param** **(** :ref:`float<class_float>` value **)**
  94. - :ref:`float<class_float>` **get_param** **(** **)**
  95. Amount of extra bias for shadow splits that are far away. If self-shadowing occurs only on the splits far away, increasing this value can fix them. This is ignored when :ref:`directional_shadow_mode<class_DirectionalLight_property_directional_shadow_mode>` is :ref:`SHADOW_ORTHOGONAL<class_DirectionalLight_constant_SHADOW_ORTHOGONAL>`.
  96. .. rst-class:: classref-item-separator
  97. ----
  98. .. _class_DirectionalLight_property_directional_shadow_blend_splits:
  99. .. rst-class:: classref-property
  100. :ref:`bool<class_bool>` **directional_shadow_blend_splits** = ``false``
  101. .. rst-class:: classref-property-setget
  102. - void **set_blend_splits** **(** :ref:`bool<class_bool>` value **)**
  103. - :ref:`bool<class_bool>` **is_blend_splits_enabled** **(** **)**
  104. If ``true``, shadow detail is sacrificed in exchange for smoother transitions between splits. Enabling shadow blend splitting also has a moderate performance cost. This is ignored when :ref:`directional_shadow_mode<class_DirectionalLight_property_directional_shadow_mode>` is :ref:`SHADOW_ORTHOGONAL<class_DirectionalLight_constant_SHADOW_ORTHOGONAL>`.
  105. .. rst-class:: classref-item-separator
  106. ----
  107. .. _class_DirectionalLight_property_directional_shadow_depth_range:
  108. .. rst-class:: classref-property
  109. :ref:`ShadowDepthRange<enum_DirectionalLight_ShadowDepthRange>` **directional_shadow_depth_range** = ``0``
  110. .. rst-class:: classref-property-setget
  111. - void **set_shadow_depth_range** **(** :ref:`ShadowDepthRange<enum_DirectionalLight_ShadowDepthRange>` value **)**
  112. - :ref:`ShadowDepthRange<enum_DirectionalLight_ShadowDepthRange>` **get_shadow_depth_range** **(** **)**
  113. Optimizes shadow rendering for detail versus movement. See :ref:`ShadowDepthRange<enum_DirectionalLight_ShadowDepthRange>`.
  114. .. rst-class:: classref-item-separator
  115. ----
  116. .. _class_DirectionalLight_property_directional_shadow_fade_start:
  117. .. rst-class:: classref-property
  118. :ref:`float<class_float>` **directional_shadow_fade_start** = ``0.8``
  119. .. rst-class:: classref-property-setget
  120. - void **set_param** **(** :ref:`float<class_float>` value **)**
  121. - :ref:`float<class_float>` **get_param** **(** **)**
  122. Proportion of :ref:`directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>` at which point the shadow starts to fade. At :ref:`directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>`, the shadow will disappear. The default value is a balance between smooth fading and distant shadow visibility. If the camera moves fast and the :ref:`directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>` is low, consider lowering :ref:`directional_shadow_fade_start<class_DirectionalLight_property_directional_shadow_fade_start>` below ``0.8`` to make shadow transitions less noticeable. On the other hand, if you tuned :ref:`directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>` to cover the entire scene, you can set :ref:`directional_shadow_fade_start<class_DirectionalLight_property_directional_shadow_fade_start>` to ``1.0`` to prevent the shadow from fading in the distance (it will suddenly cut off instead).
  123. .. rst-class:: classref-item-separator
  124. ----
  125. .. _class_DirectionalLight_property_directional_shadow_max_distance:
  126. .. rst-class:: classref-property
  127. :ref:`float<class_float>` **directional_shadow_max_distance** = ``100.0``
  128. .. rst-class:: classref-property-setget
  129. - void **set_param** **(** :ref:`float<class_float>` value **)**
  130. - :ref:`float<class_float>` **get_param** **(** **)**
  131. The maximum distance for shadow splits. Increasing this value will make directional shadows visible from further away, at the cost of lower overall shadow detail and performance (since more objects need to be included in the directional shadow rendering).
  132. .. rst-class:: classref-item-separator
  133. ----
  134. .. _class_DirectionalLight_property_directional_shadow_mode:
  135. .. rst-class:: classref-property
  136. :ref:`ShadowMode<enum_DirectionalLight_ShadowMode>` **directional_shadow_mode** = ``3``
  137. .. rst-class:: classref-property-setget
  138. - void **set_shadow_mode** **(** :ref:`ShadowMode<enum_DirectionalLight_ShadowMode>` value **)**
  139. - :ref:`ShadowMode<enum_DirectionalLight_ShadowMode>` **get_shadow_mode** **(** **)**
  140. The light's shadow rendering algorithm. See :ref:`ShadowMode<enum_DirectionalLight_ShadowMode>`.
  141. .. rst-class:: classref-item-separator
  142. ----
  143. .. _class_DirectionalLight_property_directional_shadow_normal_bias:
  144. .. rst-class:: classref-property
  145. :ref:`float<class_float>` **directional_shadow_normal_bias** = ``0.8``
  146. .. rst-class:: classref-property-setget
  147. - void **set_param** **(** :ref:`float<class_float>` value **)**
  148. - :ref:`float<class_float>` **get_param** **(** **)**
  149. Can be used to fix special cases of self shadowing when objects are perpendicular to the light.
  150. .. rst-class:: classref-item-separator
  151. ----
  152. .. _class_DirectionalLight_property_directional_shadow_split_1:
  153. .. rst-class:: classref-property
  154. :ref:`float<class_float>` **directional_shadow_split_1** = ``0.1``
  155. .. rst-class:: classref-property-setget
  156. - void **set_param** **(** :ref:`float<class_float>` value **)**
  157. - :ref:`float<class_float>` **get_param** **(** **)**
  158. The distance from camera to shadow split 1. Relative to :ref:`directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>`. Only used when :ref:`directional_shadow_mode<class_DirectionalLight_property_directional_shadow_mode>` is :ref:`SHADOW_PARALLEL_2_SPLITS<class_DirectionalLight_constant_SHADOW_PARALLEL_2_SPLITS>` or :ref:`SHADOW_PARALLEL_4_SPLITS<class_DirectionalLight_constant_SHADOW_PARALLEL_4_SPLITS>`.
  159. .. rst-class:: classref-item-separator
  160. ----
  161. .. _class_DirectionalLight_property_directional_shadow_split_2:
  162. .. rst-class:: classref-property
  163. :ref:`float<class_float>` **directional_shadow_split_2** = ``0.2``
  164. .. rst-class:: classref-property-setget
  165. - void **set_param** **(** :ref:`float<class_float>` value **)**
  166. - :ref:`float<class_float>` **get_param** **(** **)**
  167. The distance from shadow split 1 to split 2. Relative to :ref:`directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>`. Only used when :ref:`directional_shadow_mode<class_DirectionalLight_property_directional_shadow_mode>` is :ref:`SHADOW_PARALLEL_2_SPLITS<class_DirectionalLight_constant_SHADOW_PARALLEL_2_SPLITS>` or :ref:`SHADOW_PARALLEL_4_SPLITS<class_DirectionalLight_constant_SHADOW_PARALLEL_4_SPLITS>`.
  168. .. rst-class:: classref-item-separator
  169. ----
  170. .. _class_DirectionalLight_property_directional_shadow_split_3:
  171. .. rst-class:: classref-property
  172. :ref:`float<class_float>` **directional_shadow_split_3** = ``0.5``
  173. .. rst-class:: classref-property-setget
  174. - void **set_param** **(** :ref:`float<class_float>` value **)**
  175. - :ref:`float<class_float>` **get_param** **(** **)**
  176. The distance from shadow split 2 to split 3. Relative to :ref:`directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>`. Only used when :ref:`directional_shadow_mode<class_DirectionalLight_property_directional_shadow_mode>` is :ref:`SHADOW_PARALLEL_4_SPLITS<class_DirectionalLight_constant_SHADOW_PARALLEL_4_SPLITS>`.
  177. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  178. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  179. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  180. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`