8b7c7f5a75
Adds a new, cleaned up, HashMap implementation. * Uses Robin Hood Hashing (https://en.wikipedia.org/wiki/Hash_table#Robin_Hood_hashing). * Keeps elements in a double linked list for simpler, ordered, iteration. * Allows keeping iterators for later use in removal (Unlike Map<>, it does not do much for performance vs keeping the key, but helps replace old code). * Uses a more modern C++ iterator API, deprecates the old one. * Supports custom allocator (in case there is a wish to use a paged one). This class aims to unify all the associative template usage and replace it by this one: * Map<> (whereas key order does not matter, which is 99% of cases) * HashMap<> * OrderedHashMap<> * OAHashMap<>
61 lines
6 KiB
XML
61 lines
6 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<class name="DirectionalLight3D" inherits="Light3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
|
|
<brief_description>
|
|
Directional light from a distance, as from the Sun.
|
|
</brief_description>
|
|
<description>
|
|
A directional light is a type of [Light3D] 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 DirectionalLight3D transform (origin) is ignored. Only the basis is used to determine light direction.
|
|
</description>
|
|
<tutorials>
|
|
<link title="Lights and shadows">$DOCS_URL/tutorials/3d/lights_and_shadows.html</link>
|
|
</tutorials>
|
|
<members>
|
|
<member name="directional_shadow_blend_splits" type="bool" setter="set_blend_splits" getter="is_blend_splits_enabled" default="false">
|
|
If [code]true[/code], 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 [member directional_shadow_mode] is [constant SHADOW_ORTHOGONAL].
|
|
</member>
|
|
<member name="directional_shadow_fade_start" type="float" setter="set_param" getter="get_param" default="0.8">
|
|
Proportion of [member directional_shadow_max_distance] at which point the shadow starts to fade. At [member 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 [member directional_shadow_max_distance] is low, consider lowering [member directional_shadow_fade_start] below [code]0.8[/code] to make shadow transitions less noticeable. On the other hand, if you tuned [member directional_shadow_max_distance] to cover the entire scene, you can set [member directional_shadow_fade_start] to [code]1.0[/code] to prevent the shadow from fading in the distance (it will suddenly cut off instead).
|
|
</member>
|
|
<member name="directional_shadow_max_distance" type="float" setter="set_param" getter="get_param" default="100.0">
|
|
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).
|
|
</member>
|
|
<member name="directional_shadow_mode" type="int" setter="set_shadow_mode" getter="get_shadow_mode" enum="DirectionalLight3D.ShadowMode" default="2">
|
|
The light's shadow rendering algorithm. See [enum ShadowMode].
|
|
</member>
|
|
<member name="directional_shadow_pancake_size" type="float" setter="set_param" getter="get_param" default="20.0">
|
|
Sets the size of the directional shadow pancake. The pancake offsets the start of the shadow's camera frustum to provide a higher effective depth resolution for the shadow. However, a high pancake size can cause artifacts in the shadows of large objects that are close to the edge of the frustum. Reducing the pancake size can help. Setting the size to [code]0[/code] turns off the pancaking effect.
|
|
</member>
|
|
<member name="directional_shadow_split_1" type="float" setter="set_param" getter="get_param" default="0.1">
|
|
The distance from camera to shadow split 1. Relative to [member directional_shadow_max_distance]. Only used when [member directional_shadow_mode] is [constant SHADOW_PARALLEL_2_SPLITS] or [constant SHADOW_PARALLEL_4_SPLITS].
|
|
</member>
|
|
<member name="directional_shadow_split_2" type="float" setter="set_param" getter="get_param" default="0.2">
|
|
The distance from shadow split 1 to split 2. Relative to [member directional_shadow_max_distance]. Only used when [member directional_shadow_mode] is [constant SHADOW_PARALLEL_4_SPLITS].
|
|
</member>
|
|
<member name="directional_shadow_split_3" type="float" setter="set_param" getter="get_param" default="0.5">
|
|
The distance from shadow split 2 to split 3. Relative to [member directional_shadow_max_distance]. Only used when [member directional_shadow_mode] is [constant SHADOW_PARALLEL_4_SPLITS].
|
|
</member>
|
|
<member name="sky_mode" type="int" setter="set_sky_mode" getter="get_sky_mode" enum="DirectionalLight3D.SkyMode" default="0">
|
|
Set whether this [DirectionalLight3D] is visible in the sky, in the scene, or both in the sky and in the scene. See [enum SkyMode] for options.
|
|
</member>
|
|
</members>
|
|
<constants>
|
|
<constant name="SHADOW_ORTHOGONAL" value="0" enum="ShadowMode">
|
|
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.
|
|
</constant>
|
|
<constant name="SHADOW_PARALLEL_2_SPLITS" value="1" enum="ShadowMode">
|
|
Splits the view frustum in 2 areas, each with its own shadow map. This shadow mode is a compromise between [constant SHADOW_ORTHOGONAL] and [constant SHADOW_PARALLEL_4_SPLITS] in terms of performance.
|
|
</constant>
|
|
<constant name="SHADOW_PARALLEL_4_SPLITS" value="2" enum="ShadowMode">
|
|
Splits the view frustum in 4 areas, each with its own shadow map. This is the slowest directional shadow mode.
|
|
</constant>
|
|
<constant name="SKY_MODE_LIGHT_AND_SKY" value="0" enum="SkyMode">
|
|
Makes the light visible in both scene lighting and sky rendering.
|
|
</constant>
|
|
<constant name="SKY_MODE_LIGHT_ONLY" value="1" enum="SkyMode">
|
|
Makes the light visible in scene lighting only (including direct lighting and global illumination). When using this mode, the light will not be visible from sky shaders.
|
|
</constant>
|
|
<constant name="SKY_MODE_SKY_ONLY" value="2" enum="SkyMode">
|
|
Makes the light visible to sky shaders only. When using this mode the light will not cast light into the scene (either through direct lighting or through global illumination), but can be accessed through sky shaders. This can be useful, for example, when you want to control sky effects without illuminating the scene (during a night cycle, for example).
|
|
</constant>
|
|
</constants>
|
|
</class>
|