GeometryInstance3D

Inherits: VisualInstance3D < Node3D < Node < Object

Inherited By: CPUParticles3D, CSGShape3D, GPUParticles3D, Label3D, MeshInstance3D, MultiMeshInstance3D, SpriteBase3D

Base node for geometry-based visual instances.

Description

Base node for geometry-based visual instances. Shares some common functionality like visibility and custom materials.

Properties

ShadowCastingSetting

cast_shadow

float

extra_cull_margin

LightmapScale

gi_lightmap_scale

GIMode

gi_mode

bool

ignore_occlusion_culling

float

lod_bias

Material

material_overlay

Material

material_override

float

transparency

float

visibility_range_begin

float

visibility_range_begin_margin

float

visibility_range_end

float

visibility_range_end_margin

VisibilityRangeFadeMode

visibility_range_fade_mode

Methods

Variant

get_instance_shader_parameter ( StringName name ) const

void

set_custom_aabb ( AABB aabb )

void

set_instance_shader_parameter ( StringName name, Variant value )

Enumerations

enum ShadowCastingSetting:

  • SHADOW_CASTING_SETTING_OFF = 0 --- Will not cast any shadows. Use this to improve performance for small geometry that is unlikely to cast noticeable shadows (such as debris).

  • SHADOW_CASTING_SETTING_ON = 1 --- 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.

  • SHADOW_CASTING_SETTING_DOUBLE_SIDED = 2 --- 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.

  • SHADOW_CASTING_SETTING_SHADOWS_ONLY = 3 --- 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.


enum GIMode:

  • GI_MODE_DISABLED = 0 --- Disabled global illumination mode. Use for dynamic objects that do not contribute to global illumination (such as characters). When using VoxelGI and SDFGI, the geometry will receive indirect lighting and reflections but the geometry will not be considered in GI baking. When using LightmapGI, the object will receive indirect lighting using lightmap probes instead of using the baked lightmap texture.

  • GI_MODE_STATIC = 1 --- Baked global illumination mode. Use for static objects that contribute to global illumination (such as level geometry). This GI mode is effective when using VoxelGI, SDFGI and LightmapGI.

  • GI_MODE_DYNAMIC = 2 --- Dynamic global illumination mode. Use for dynamic objects that contribute to global illumination. This GI mode is only effective when using VoxelGI, but it has a higher performance impact than GI_MODE_STATIC. When using other GI methods, this will act the same as GI_MODE_DISABLED.


enum LightmapScale:

  • LIGHTMAP_SCALE_1X = 0 --- The standard texel density for lightmapping with LightmapGI.

  • LIGHTMAP_SCALE_2X = 1 --- Multiplies texel density by 2× for lightmapping with LightmapGI. To ensure consistency in texel density, use this when scaling a mesh by a factor between 1.5 and 3.0.

  • LIGHTMAP_SCALE_4X = 2 --- Multiplies texel density by 4× for lightmapping with LightmapGI. To ensure consistency in texel density, use this when scaling a mesh by a factor between 3.0 and 6.0.

  • LIGHTMAP_SCALE_8X = 3 --- Multiplies texel density by 8× for lightmapping with LightmapGI. To ensure consistency in texel density, use this when scaling a mesh by a factor greater than 6.0.

  • LIGHTMAP_SCALE_MAX = 4 --- Represents the size of the LightmapScale enum.


enum VisibilityRangeFadeMode:

Property Descriptions

Setter

set_cast_shadows_setting(value)

Getter

get_cast_shadows_setting()

The selected shadow casting flag. See ShadowCastingSetting for possible values.


  • float extra_cull_margin

Setter

set_extra_cull_margin(value)

Getter

get_extra_cull_margin()

The extra distance added to the GeometryInstance3D's bounding box (AABB) to increase its cull box.


Setter

set_lightmap_scale(value)

Getter

get_lightmap_scale()

The texel density to use for lightmapping in LightmapGI. Greater scale values provide higher resolution in the lightmap, which can result in sharper shadows for lights that have both direct and indirect light baked. However, greater scale values will also increase the space taken by the mesh in the lightmap texture, which increases the memory, storage, and bake time requirements. When using a single mesh at different scales, consider adjusting this value to keep the lightmap texel density consistent across meshes.


Setter

set_gi_mode(value)

Getter

get_gi_mode()

The global illumination mode to use for the whole geometry. To avoid inconsistent results, use a mode that matches the purpose of the mesh during gameplay (static/dynamic).

Note: Lights' bake mode will also affect the global illumination rendering. See Light3D.light_bake_mode.


  • bool ignore_occlusion_culling

Setter

set_ignore_occlusion_culling(value)

Getter

is_ignoring_occlusion_culling()


Setter

set_lod_bias(value)

Getter

get_lod_bias()


Setter

set_material_overlay(value)

Getter

get_material_overlay()

The material overlay for the whole geometry.

If a material is assigned to this property, it will be rendered on top of any other active material for all the surfaces.


Setter

set_material_override(value)

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.


Setter

set_transparency(value)

Getter

get_transparency()

The transparency applied to the whole geometry (as a multiplier of the materials' existing transparency). 0.0 is fully opaque, while 1.0 is fully transparent. Values greater than 0.0 (exclusive) will force the geometry's materials to go through the transparent pipeline, which is slower to render and can exhibit rendering issues due to incorrect transparency sorting. However, unlike using a transparent material, setting transparency to a value greater than 0.0 (exclusive) will not disable shadow rendering.

In spatial shaders, 1.0 - transparency is set as the default value of the ALPHA built-in.

Note: transparency is clamped between 0.0 and 1.0, so this property cannot be used to make transparent materials more opaque than they originally are.


  • float visibility_range_begin

Setter

set_visibility_range_begin(value)

Getter

get_visibility_range_begin()

Starting distance from which the GeometryInstance3D will be visible, taking visibility_range_begin_margin into account as well. The default value of 0 is used to disable the range check.


  • float visibility_range_begin_margin

Setter

set_visibility_range_begin_margin(value)

Getter

get_visibility_range_begin_margin()

Margin for the visibility_range_begin threshold. The GeometryInstance3D will only change its visibility state when it goes over or under the visibility_range_begin threshold by this amount.

If visibility_range_fade_mode is VISIBILITY_RANGE_FADE_DISABLED, this acts as an hysteresis distance. If visibility_range_fade_mode is VISIBILITY_RANGE_FADE_SELF or VISIBILITY_RANGE_FADE_DEPENDENCIES, this acts as a fade transition distance and must be set to a value greater than 0.0 for the effect to be noticeable.


  • float visibility_range_end

Setter

set_visibility_range_end(value)

Getter

get_visibility_range_end()

Distance from which the GeometryInstance3D will be hidden, taking visibility_range_end_margin into account as well. The default value of 0 is used to disable the range check.


  • float visibility_range_end_margin

Setter

set_visibility_range_end_margin(value)

Getter

get_visibility_range_end_margin()

Margin for the visibility_range_end threshold. The GeometryInstance3D will only change its visibility state when it goes over or under the visibility_range_end threshold by this amount.

If visibility_range_fade_mode is VISIBILITY_RANGE_FADE_DISABLED, this acts as an hysteresis distance. If visibility_range_fade_mode is VISIBILITY_RANGE_FADE_SELF or VISIBILITY_RANGE_FADE_DEPENDENCIES, this acts as a fade transition distance and must be set to a value greater than 0.0 for the effect to be noticeable.


Setter

set_visibility_range_fade_mode(value)

Getter

get_visibility_range_fade_mode()

Controls which instances will be faded when approaching the limits of the visibility range. See VisibilityRangeFadeMode for possible values.

Method Descriptions


  • void set_custom_aabb ( AABB aabb )

Overrides the bounding box of this node with a custom one. To remove it, set an AABB with all fields set to zero.