3a53ae5d9f
This commit adds the following properties to GeometryInstance3D: `visibility_range_begin`, `visibility_range_begin_margin`, `visibility_range_end`, `visibility_range_end_margin`. Together they define a range in which the GeometryInstance3D will be visible from the camera, taking hysteresis into account for state changes. A begin or end value of 0 will be ignored, so the visibility range can be open-ended in both directions. This commit also adds the `visibility_parent` property to 'Node3D'. Which defines the visibility parents of the node and its subtree (until another parent is defined). Visual instances with a visibility parent will only be visible when the parent, and all of its ancestors recursively, are hidden because they are closer to the camera than their respective `visibility_range_begin` thresholds. Combining visibility ranges and visibility parents users can set-up a quick HLOD system that shows high detail meshes when close (i.e buildings, trees) and merged low detail meshes for far away groups (i.e. cities, woods).
105 lines
5.6 KiB
XML
105 lines
5.6 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<class name="GeometryInstance3D" inherits="VisualInstance3D" version="4.0">
|
|
<brief_description>
|
|
Base node for geometry-based visual instances.
|
|
</brief_description>
|
|
<description>
|
|
Base node for geometry-based visual instances. Shares some common functionality like visibility and custom materials.
|
|
</description>
|
|
<tutorials>
|
|
</tutorials>
|
|
<methods>
|
|
<method name="get_shader_instance_uniform" qualifiers="const">
|
|
<return type="Variant">
|
|
</return>
|
|
<argument index="0" name="uniform" type="StringName">
|
|
</argument>
|
|
<description>
|
|
</description>
|
|
</method>
|
|
<method name="set_custom_aabb">
|
|
<return type="void">
|
|
</return>
|
|
<argument index="0" name="aabb" type="AABB">
|
|
</argument>
|
|
<description>
|
|
Overrides the bounding box of this node with a custom one. To remove it, set an [AABB] with all fields set to zero.
|
|
</description>
|
|
</method>
|
|
<method name="set_shader_instance_uniform">
|
|
<return type="void">
|
|
</return>
|
|
<argument index="0" name="uniform" type="StringName">
|
|
</argument>
|
|
<argument index="1" name="value" type="Variant">
|
|
</argument>
|
|
<description>
|
|
</description>
|
|
</method>
|
|
</methods>
|
|
<members>
|
|
<member name="cast_shadow" type="int" setter="set_cast_shadows_setting" getter="get_cast_shadows_setting" enum="GeometryInstance3D.ShadowCastingSetting" default="1">
|
|
The selected shadow casting flag. See [enum ShadowCastingSetting] for possible values.
|
|
</member>
|
|
<member name="extra_cull_margin" type="float" setter="set_extra_cull_margin" getter="get_extra_cull_margin" default="0.0">
|
|
The extra distance added to the GeometryInstance3D's bounding box ([AABB]) to increase its cull box.
|
|
</member>
|
|
<member name="gi_lightmap_scale" type="int" setter="set_lightmap_scale" getter="get_lightmap_scale" enum="GeometryInstance3D.LightmapScale" default="0">
|
|
</member>
|
|
<member name="gi_mode" type="int" setter="set_gi_mode" getter="get_gi_mode" enum="GeometryInstance3D.GIMode" default="0">
|
|
</member>
|
|
<member name="ignore_occlusion_culling" type="bool" setter="set_ignore_occlusion_culling" getter="is_ignoring_occlusion_culling" default="false">
|
|
</member>
|
|
<member name="lod_bias" type="float" setter="set_lod_bias" getter="get_lod_bias" default="1.0">
|
|
</member>
|
|
<member name="material_override" type="Material" setter="set_material_override" getter="get_material_override">
|
|
The material override for the whole geometry.
|
|
If a material is assigned to this property, it will be used instead of any material set in any material slot of the mesh.
|
|
</member>
|
|
<member name="visibility_range_begin" type="float" setter="set_visibility_range_begin" getter="get_visibility_range_begin" default="0.0">
|
|
Starting distance from which the GeometryInstance3D will be visible, taking [member visibility_range_begin_margin] into account as well. The default value of 0 is used to disable the range check.
|
|
</member>
|
|
<member name="visibility_range_begin_margin" type="float" setter="set_visibility_range_begin_margin" getter="get_visibility_range_begin_margin" default="0.0">
|
|
Margin for the [member visibility_range_begin] threshold. The GeometryInstance3D will only change its visibility state when it goes over or under the [member visibility_range_begin] threshold by this amount.
|
|
</member>
|
|
<member name="visibility_range_end" type="float" setter="set_visibility_range_end" getter="get_visibility_range_end" default="0.0">
|
|
Distance from which the GeometryInstance3D will be hidden, taking [member visibility_range_end_margin] into account as well. The default value of 0 is used to disable the range check..
|
|
</member>
|
|
<member name="visibility_range_end_margin" type="float" setter="set_visibility_range_end_margin" getter="get_visibility_range_end_margin" default="0.0">
|
|
Margin for the [member visibility_range_end] threshold. The GeometryInstance3D will only change its visibility state when it goes over or under the [member visibility_range_end] threshold by this amount.
|
|
</member>
|
|
</members>
|
|
<constants>
|
|
<constant name="SHADOW_CASTING_SETTING_OFF" value="0" enum="ShadowCastingSetting">
|
|
Will not cast any shadows.
|
|
</constant>
|
|
<constant name="SHADOW_CASTING_SETTING_ON" value="1" enum="ShadowCastingSetting">
|
|
Will cast shadows from all visible faces in the GeometryInstance3D.
|
|
Will take culling into account, so faces not being rendered will not be taken into account when shadow casting.
|
|
</constant>
|
|
<constant name="SHADOW_CASTING_SETTING_DOUBLE_SIDED" value="2" enum="ShadowCastingSetting">
|
|
Will cast shadows from all visible faces in the GeometryInstance3D.
|
|
Will not take culling into account, so all faces will be taken into account when shadow casting.
|
|
</constant>
|
|
<constant name="SHADOW_CASTING_SETTING_SHADOWS_ONLY" value="3" enum="ShadowCastingSetting">
|
|
Will only show the shadows casted from this object.
|
|
In other words, the actual mesh will not be visible, only the shadows casted from the mesh will be.
|
|
</constant>
|
|
<constant name="GI_MODE_DISABLED" value="0" enum="GIMode">
|
|
</constant>
|
|
<constant name="GI_MODE_BAKED" value="1" enum="GIMode">
|
|
</constant>
|
|
<constant name="GI_MODE_DYNAMIC" value="2" enum="GIMode">
|
|
</constant>
|
|
<constant name="LIGHTMAP_SCALE_1X" value="0" enum="LightmapScale">
|
|
</constant>
|
|
<constant name="LIGHTMAP_SCALE_2X" value="1" enum="LightmapScale">
|
|
</constant>
|
|
<constant name="LIGHTMAP_SCALE_4X" value="2" enum="LightmapScale">
|
|
</constant>
|
|
<constant name="LIGHTMAP_SCALE_8X" value="3" enum="LightmapScale">
|
|
</constant>
|
|
<constant name="LIGHTMAP_SCALE_MAX" value="4" enum="LightmapScale">
|
|
</constant>
|
|
</constants>
|
|
</class>
|