MultiMesh¶
Inherits: Resource < Reference < Object
类别: 核心
简要说明¶
提供高性能网格实例。
属性¶
0 |
||
0 |
||
0 |
||
0 |
||
-1 |
方法¶
get_aabb ( ) const |
|
get_instance_color ( int instance ) const |
|
get_instance_custom_data ( int instance ) const |
|
get_instance_transform ( int instance ) const |
|
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。
属性描述¶
ColorFormat color_format
违约 |
0 |
设定器 |
设置颜色格式(值) |
吸气剂 |
获取颜色格式() |
传递到着色器的颜色数组中的颜色格式。
CustomDataFormat custom_data_format
违约 |
0 |
设定器 |
设置自定义数据格式(值) |
吸气剂 |
获取自定义数据格式()。 |
自定义数据数组中传递给着色器的自定义数据的格式。
int instance_count
违约 |
0 |
设定器 |
设置实例计数(值) |
吸气剂 |
获取实例计数() |
将要绘制的实例数。这将清除和(重新)调整缓冲区的大小。默认情况下,将绘制所有实例,但可以使用 visible_instance_count .
Mesh mesh
设定器 |
设置网格(值) |
吸气剂 |
获取网格() |
要绘制的网格。
TransformFormat transform_format
违约 |
0 |
设定器 |
设置转换格式(值) |
吸气剂 |
获取转换格式() |
用于转换网格(二维或三维)的转换格式。
int visible_instance_count
违约 |
-1 |
设定器 |
设置可见实例计数(值) |
吸气剂 |
获取可见的实例计数()。 |
限制绘制的实例数,-1绘制所有实例。更改此项不会更改缓冲区的大小。
方法说明¶
AABB get_aabb ( ) const
返回可见性轴对齐的边界框。
获取特定实例的颜色。
返回为特定实例设置的自定义数据。
返回 Transform 特定实例的。
Transform2D get_instance_transform_2d ( int instance ) const
返回 Transform2D 特定实例的。
void set_as_bulk_array ( PoolRealArray array )
一次性设置与实例相关的所有数据。这在从磁盘加载数据或从GDNative准备数据时特别有用。
所有数据都打包在一个大的浮点数组中。一个数组可能如下所示:转换实例1、颜色数据实例1、自定义数据实例1、转换实例2、颜色数据实例2等。
Transform 存储为12个浮点数, Transform2D 存储为8个浮点, COLOR_8BIT
/ CUSTOM_DATA_8BIT
存储为1个浮点(按原样存储为4个字节)和 COLOR_FLOAT
/ CUSTOM_DATA_FLOAT
存储为4个浮点数。
设置特定实例的颜色。
要使颜色生效,请确保 color_format 在上不是``null`` MultiMesh
和 SpatialMaterial.vertex_color_use_as_albedo 是 true
在材料上。
为特定实例设置自定义数据。尽管如此 Color 是用来装4个数字的容器。
设置 Transform 对于特定实例。
void set_instance_transform_2d ( int instance, Transform2D transform )
设置 Transform2D 对于特定实例。