Unpack blend shape arrays when necessary

Blend shapes need to be unpacked if the vertex array is being unpacked
This commit is contained in:
clayjohn 2022-05-06 10:34:23 -07:00 committed by Relintai
parent f7585bea99
commit e01c60516b

View File

@ -2493,7 +2493,13 @@ void RasterizerStorageGLES2::mesh_add_surface(RID p_mesh, uint32_t p_format, VS:
uint32_t new_format = p_format; uint32_t new_format = p_format;
PoolVector<uint8_t> unpacked_array = _unpack_half_floats(array, new_format, p_vertex_count); PoolVector<uint8_t> unpacked_array = _unpack_half_floats(array, new_format, p_vertex_count);
mesh_add_surface(p_mesh, new_format, p_primitive, unpacked_array, p_vertex_count, p_index_array, p_index_count, p_aabb, p_blend_shapes, p_bone_aabbs); Vector<PoolVector<uint8_t>> unpacked_blend_shapes;
for (int i = 0; i < p_blend_shapes.size(); i++) {
uint32_t temp_format = p_format; // Just throw this away as it will be the same as new_format
unpacked_blend_shapes.push_back(_unpack_half_floats(p_blend_shapes[i], temp_format, p_vertex_count));
}
mesh_add_surface(p_mesh, new_format, p_primitive, unpacked_array, p_vertex_count, p_index_array, p_index_count, p_aabb, unpacked_blend_shapes, p_bone_aabbs);
return; //do not go any further, above function used unpacked stuff will be used instead. return; //do not go any further, above function used unpacked stuff will be used instead.
} }