Table of Contents

Class GeometryInstance3D

Base node for geometry-based visual instances.

Inheritance
GeometryInstance3D
Derived

Remarks

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

See Also

Properties

cast_shadow

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

var cast_shadow : int = 1

Property Value

int

Remarks

  • void set_cast_shadows_setting(int value)
  • int get_cast_shadows_setting

custom_aabb

Overrides the bounding box of this node with a custom one. This can be used to avoid the expensive AABB recalculation that happens when a skeleton is used with a MeshInstance3D or to have precise control over the MeshInstance3D's bounding box. To use the default AABB, set value to an AABB with all fields set to 0.0. To avoid frustum culling, set custom_aabb to a very large AABB that covers your entire game world such as AABB(-10000, -10000, -10000, 20000, 20000, 20000). To disable all forms of culling (including occlusion culling), call RenderingServer.instance_set_ignore_culling on the GeometryInstance3D's RID.

var custom_aabb : AABB = AABB(0, 0, 0, 0, 0, 0)

Property Value

AABB

Remarks

  • void set_custom_aabb(AABB value)
  • AABB get_custom_aabb

extra_cull_margin

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

var extra_cull_margin : float = 0.0

Property Value

float

Remarks

  • void set_extra_cull_margin(float value)
  • float get_extra_cull_margin

gi_lightmap_scale

The texel density to use for lightmapping in LightmapGI.

var gi_lightmap_scale : int = 0

Property Value

int

Remarks

  • void set_lightmap_scale(int value)
  • int get_lightmap_scale

gi_lightmap_texel_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.

For example, doubling gi_lightmap_texel_scale doubles the lightmap texture resolution for this object on each axis, so it will quadruple the texel count.

var gi_lightmap_texel_scale : float = 1.0

Property Value

float

Remarks

  • void set_lightmap_texel_scale(float value)
  • float get_lightmap_texel_scale

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 light_bake_mode.

var gi_mode : int = 1

Property Value

int

Remarks

  • void set_gi_mode(int value)
  • int get_gi_mode

ignore_occlusion_culling

If true, disables occlusion culling for this instance. Useful for gizmos that must be rendered even when occlusion culling is in use.

Note: ignore_occlusion_culling does not affect frustum culling (which is what happens when an object is not visible given the camera's angle). To avoid frustum culling, set custom_aabb to a very large AABB that covers your entire game world such as AABB(-10000, -10000, -10000, 20000, 20000, 20000).

var ignore_occlusion_culling : bool = false

Property Value

bool

Remarks

  • void set_ignore_occlusion_culling(bool value)
  • bool is_ignoring_occlusion_culling

lod_bias

Changes how quickly the mesh transitions to a lower level of detail. A value of 0 will force the mesh to its lowest level of detail, a value of 1 will use the default settings, and larger values will keep the mesh in a higher level of detail at farther distances.

Useful for testing level of detail transitions in the editor.

var lod_bias : float = 1.0

Property Value

float

Remarks

  • void set_lod_bias(float value)
  • float get_lod_bias

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.

var material_overlay : Material

Property Value

Material

Remarks

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.

var material_override : Material

Property Value

Material

Remarks

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.

Note: Only supported when using the Forward+ rendering method. When using the Mobile or Compatibility rendering method, transparency is ignored and is considered as always being 0.0.

var transparency : float = 0.0

Property Value

float

Remarks

  • void set_transparency(float value)
  • float get_transparency

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.

var visibility_range_begin : float = 0.0

Property Value

float

Remarks

  • void set_visibility_range_begin(float value)
  • float get_visibility_range_begin

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 GeometryInstance3D.VISIBILITY_RANGE_FADE_DISABLED, this acts as a hysteresis distance. If visibility_range_fade_mode is GeometryInstance3D.VISIBILITY_RANGE_FADE_SELF or GeometryInstance3D.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.

var visibility_range_begin_margin : float = 0.0

Property Value

float

Remarks

  • void set_visibility_range_begin_margin(float value)
  • float get_visibility_range_begin_margin

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.

var visibility_range_end : float = 0.0

Property Value

float

Remarks

  • void set_visibility_range_end(float value)
  • float get_visibility_range_end

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 GeometryInstance3D.VISIBILITY_RANGE_FADE_DISABLED, this acts as a hysteresis distance. If visibility_range_fade_mode is GeometryInstance3D.VISIBILITY_RANGE_FADE_SELF or GeometryInstance3D.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.

var visibility_range_end_margin : float = 0.0

Property Value

float

Remarks

  • void set_visibility_range_end_margin(float value)
  • float get_visibility_range_end_margin

visibility_range_fade_mode

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

var visibility_range_fade_mode : int = 0

Property Value

int

Remarks

  • void set_visibility_range_fade_mode(int value)
  • int get_visibility_range_fade_mode

Methods

get_instance_shader_parameter(StringName)

Qualifiers: const

Get the value of a shader parameter as set on this instance.

Variant get_instance_shader_parameter(StringName name)

Parameters

name StringName

set_instance_shader_parameter(StringName, Variant)

Set the value of a shader uniform for this instance only (per-instance uniform). See also ShaderMaterial.set_shader_parameter to assign a uniform on all instances using the same ShaderMaterial.

Note: For a shader uniform to be assignable on a per-instance basis, it must be defined with instance uniform ... rather than uniform ... in the shader code.

Note: name is case-sensitive and must match the name of the uniform in the code exactly (not the capitalized name in the inspector).

Note: Per-instance shader uniforms are only available in Spatial and CanvasItem shaders, but not for Fog, Sky, or Particles shaders.

void set_instance_shader_parameter(StringName name, Variant value)

Parameters

name StringName
value Variant