MultiMesh

Inherits: Resource < Reference < Object

类别: 核心

简要说明

提供高性能网格实例。

方法

AABB

get_aabb ( ) const

Color

get_instance_color ( int instance ) const

Color

get_instance_custom_data ( int instance ) const

Transform

get_instance_transform ( int instance ) const

Transform2D

get_instance_transform_2d ( int instance ) const

无效

set_as_bulk_array ( PoolRealArray array )

无效

set_instance_color ( int instance, Color color )

无效

set_instance_custom_data ( int instance, Color custom_data )

无效

set_instance_transform ( int instance, Transform transform )

无效

set_instance_transform_2d ( int instance, Transform2D transform )

枚举

枚举 TransformFormat

  • TRANSFORM_2D = 0 ---使用二维转换时使用此选项。

  • TRANSFORM_3D = 1 ---使用3D转换时使用此功能。

枚举 ColorFormat

  • COLOR_NONE = 0 ---不使用每个实例时使用 Color S

  • COLOR_8BIT = 1 ---压缩 Color 当传递到明暗器时将数据转换为8位。它使用更少的内存,速度更快,但是 Color 失去精确性。

  • COLOR_FLOAT = 2 --- Color 传入 set_instance_color 将使用4个浮球。用这个达到最高精度 Color .

枚举 CustomDataFormat

  • CUSTOM_DATA_NONE = 0 ---不使用每个实例自定义数据时使用。

  • CUSTOM_DATA_8BIT = 1 ---当传递到着色器时,将自定义数据压缩为8位。这会占用更少的内存,速度更快,但会丢失精度。

  • CUSTOM_DATA_FLOAT = 2 --- Color 传入 set_instance_custom_data 将使用4个浮球。使用此选项可获得最高精度。

描述

多网格提供低级网格实例。画上千张 MeshInstance 节点可能很慢,因为每个对象都提交到GPU,然后单独绘制。

multimesh速度更快,因为它可以用一次draw调用绘制数千个实例,从而减少API开销。

作为一个缺点,如果实例彼此相距太远,性能可能会降低,因为每个实例都将始终呈现(它们在空间上作为一个整体对象索引)。

由于实例可能有任何行为,因此用户必须提供用于可见性的AABB。

属性描述

违约

0

设定器

设置颜色格式(值)

吸气剂

获取颜色格式()

传递到着色器的颜色数组中的颜色格式。

违约

0

设定器

设置自定义数据格式(值)

吸气剂

获取自定义数据格式()。

自定义数据数组中传递给着色器的自定义数据的格式。

  • int instance_count

违约

0

设定器

设置实例计数(值)

吸气剂

获取实例计数()

将要绘制的实例数。这将清除和(重新)调整缓冲区的大小。默认情况下,将绘制所有实例,但可以使用 visible_instance_count .

设定器

设置网格(值)

吸气剂

获取网格()

要绘制的网格。

违约

0

设定器

设置转换格式(值)

吸气剂

获取转换格式()

用于转换网格(二维或三维)的转换格式。

  • int visible_instance_count

违约

-1

设定器

设置可见实例计数(值)

吸气剂

获取可见的实例计数()。

限制绘制的实例数,-1绘制所有实例。更改此项不会更改缓冲区的大小。

方法说明

  • AABB get_aabb ( ) const

返回可见性轴对齐的边界框。

  • Color get_instance_color ( int instance ) const

获取特定实例的颜色。

  • Color get_instance_custom_data ( int instance ) const

返回为特定实例设置的自定义数据。

返回 Transform 特定实例的。

返回 Transform2D 特定实例的。

一次性设置与实例相关的所有数据。这在从磁盘加载数据或从GDNative准备数据时特别有用。

所有数据都打包在一个大的浮点数组中。一个数组可能如下所示:转换实例1、颜色数据实例1、自定义数据实例1、转换实例2、颜色数据实例2等。

Transform 存储为12个浮点数, Transform2D 存储为8个浮点, COLOR_8BIT / CUSTOM_DATA_8BIT 存储为1个浮点(按原样存储为4个字节)和 COLOR_FLOAT / CUSTOM_DATA_FLOAT 存储为4个浮点数。

  • void set_instance_color ( int instance, Color color )

设置特定实例的颜色。

要使颜色生效,请确保 color_format 在上不是``null`` MultiMeshSpatialMaterial.vertex_color_use_as_albedotrue 在材料上。

  • void set_instance_custom_data ( int instance, Color custom_data )

为特定实例设置自定义数据。尽管如此 Color 是用来装4个数字的容器。

  • void set_instance_transform ( int instance, Transform transform )

设置 Transform 对于特定实例。

  • void set_instance_transform_2d ( int instance, Transform2D transform )

设置 Transform2D 对于特定实例。