124 lines
6 KiB
XML
124 lines
6 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<class name="MultiMesh" inherits="Resource" version="4.0">
|
|
<brief_description>
|
|
Provides high-performance mesh instancing.
|
|
</brief_description>
|
|
<description>
|
|
MultiMesh provides low-level mesh instancing. Drawing thousands of [MeshInstance3D] nodes can be slow, since each object is submitted to the GPU then drawn individually.
|
|
MultiMesh is much faster as it can draw thousands of instances with a single draw call, resulting in less API overhead.
|
|
As a drawback, if the instances are too far away from each other, performance may be reduced as every single instance will always render (they are spatially indexed as one, for the whole object).
|
|
Since instances may have any behavior, the AABB used for visibility must be provided by the user.
|
|
</description>
|
|
<tutorials>
|
|
<link title="Animating thousands of fish with MultiMeshInstance">$DOCS_URL/tutorials/performance/vertex_animation/animating_thousands_of_fish.html</link>
|
|
<link title="Optimization using MultiMeshes">$DOCS_URL/tutorials/performance/using_multimesh.html</link>
|
|
</tutorials>
|
|
<methods>
|
|
<method name="get_aabb" qualifiers="const">
|
|
<return type="AABB" />
|
|
<description>
|
|
Returns the visibility axis-aligned bounding box in local space. See also [method VisualInstance3D.get_transformed_aabb].
|
|
</description>
|
|
</method>
|
|
<method name="get_instance_color" qualifiers="const">
|
|
<return type="Color" />
|
|
<argument index="0" name="instance" type="int" />
|
|
<description>
|
|
Gets a specific instance's color.
|
|
</description>
|
|
</method>
|
|
<method name="get_instance_custom_data" qualifiers="const">
|
|
<return type="Color" />
|
|
<argument index="0" name="instance" type="int" />
|
|
<description>
|
|
Returns the custom data that has been set for a specific instance.
|
|
</description>
|
|
</method>
|
|
<method name="get_instance_transform" qualifiers="const">
|
|
<return type="Transform3D" />
|
|
<argument index="0" name="instance" type="int" />
|
|
<description>
|
|
Returns the [Transform3D] of a specific instance.
|
|
</description>
|
|
</method>
|
|
<method name="get_instance_transform_2d" qualifiers="const">
|
|
<return type="Transform2D" />
|
|
<argument index="0" name="instance" type="int" />
|
|
<description>
|
|
Returns the [Transform2D] of a specific instance.
|
|
</description>
|
|
</method>
|
|
<method name="set_instance_color">
|
|
<return type="void" />
|
|
<argument index="0" name="instance" type="int" />
|
|
<argument index="1" name="color" type="Color" />
|
|
<description>
|
|
Sets the color of a specific instance by [i]multiplying[/i] the mesh's existing vertex colors.
|
|
For the color to take effect, ensure that [member use_colors] is [code]true[/code] on the [MultiMesh] and [member BaseMaterial3D.vertex_color_use_as_albedo] is [code]true[/code] on the material.
|
|
</description>
|
|
</method>
|
|
<method name="set_instance_custom_data">
|
|
<return type="void" />
|
|
<argument index="0" name="instance" type="int" />
|
|
<argument index="1" name="custom_data" type="Color" />
|
|
<description>
|
|
Sets custom data for a specific instance. Although [Color] is used, it is just a container for 4 floating point numbers.
|
|
For the custom data to be used, ensure that [member use_custom_data] is [code]true[/code].
|
|
</description>
|
|
</method>
|
|
<method name="set_instance_transform">
|
|
<return type="void" />
|
|
<argument index="0" name="instance" type="int" />
|
|
<argument index="1" name="transform" type="Transform3D" />
|
|
<description>
|
|
Sets the [Transform3D] for a specific instance.
|
|
</description>
|
|
</method>
|
|
<method name="set_instance_transform_2d">
|
|
<return type="void" />
|
|
<argument index="0" name="instance" type="int" />
|
|
<argument index="1" name="transform" type="Transform2D" />
|
|
<description>
|
|
Sets the [Transform2D] for a specific instance.
|
|
</description>
|
|
</method>
|
|
</methods>
|
|
<members>
|
|
<member name="buffer" type="PackedFloat32Array" setter="set_buffer" getter="get_buffer" default="PackedFloat32Array()">
|
|
</member>
|
|
<member name="color_array" type="PackedColorArray" setter="_set_color_array" getter="_get_color_array">
|
|
</member>
|
|
<member name="custom_data_array" type="PackedColorArray" setter="_set_custom_data_array" getter="_get_custom_data_array">
|
|
</member>
|
|
<member name="instance_count" type="int" setter="set_instance_count" getter="get_instance_count" default="0">
|
|
Number of instances that will get drawn. This clears and (re)sizes the buffers. By default, all instances are drawn but you can limit this with [member visible_instance_count].
|
|
</member>
|
|
<member name="mesh" type="Mesh" setter="set_mesh" getter="get_mesh">
|
|
Mesh to be drawn.
|
|
</member>
|
|
<member name="transform_2d_array" type="PackedVector2Array" setter="_set_transform_2d_array" getter="_get_transform_2d_array">
|
|
</member>
|
|
<member name="transform_array" type="PackedVector3Array" setter="_set_transform_array" getter="_get_transform_array">
|
|
</member>
|
|
<member name="transform_format" type="int" setter="set_transform_format" getter="get_transform_format" enum="MultiMesh.TransformFormat" default="0">
|
|
Format of transform used to transform mesh, either 2D or 3D.
|
|
</member>
|
|
<member name="use_colors" type="bool" setter="set_use_colors" getter="is_using_colors" default="false">
|
|
If [code]true[/code], the [MultiMesh] will use color data (see [member color_array]).
|
|
</member>
|
|
<member name="use_custom_data" type="bool" setter="set_use_custom_data" getter="is_using_custom_data" default="false">
|
|
If [code]true[/code], the [MultiMesh] will use custom data (see [member custom_data_array]).
|
|
</member>
|
|
<member name="visible_instance_count" type="int" setter="set_visible_instance_count" getter="get_visible_instance_count" default="-1">
|
|
Limits the number of instances drawn, -1 draws all instances. Changing this does not change the sizes of the buffers.
|
|
</member>
|
|
</members>
|
|
<constants>
|
|
<constant name="TRANSFORM_2D" value="0" enum="TransformFormat">
|
|
Use this when using 2D transforms.
|
|
</constant>
|
|
<constant name="TRANSFORM_3D" value="1" enum="TransformFormat">
|
|
Use this when using 3D transforms.
|
|
</constant>
|
|
</constants>
|
|
</class>
|