Fix GLES3 multimesh rendering when using colors or custom data
(cherry picked from commit 9897f1cfb9
)
This commit is contained in:
parent
3b3f7efadb
commit
8d22e58063
|
@ -1285,13 +1285,17 @@ void MeshStorage::multimesh_allocate_data(RID p_multimesh, int p_instances, RS::
|
||||||
multimesh->data_cache_used_dirty_regions = 0;
|
multimesh->data_cache_used_dirty_regions = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we have either color or custom data, reserve space for both to make data handling logic simpler.
|
||||||
|
// This way we can always treat them both as a single, compressed uvec4.
|
||||||
|
int color_and_custom_strides = (p_use_colors || p_use_custom_data) ? 2 : 0;
|
||||||
|
|
||||||
multimesh->instances = p_instances;
|
multimesh->instances = p_instances;
|
||||||
multimesh->xform_format = p_transform_format;
|
multimesh->xform_format = p_transform_format;
|
||||||
multimesh->uses_colors = p_use_colors;
|
multimesh->uses_colors = p_use_colors;
|
||||||
multimesh->color_offset_cache = p_transform_format == RS::MULTIMESH_TRANSFORM_2D ? 8 : 12;
|
multimesh->color_offset_cache = p_transform_format == RS::MULTIMESH_TRANSFORM_2D ? 8 : 12;
|
||||||
multimesh->uses_custom_data = p_use_custom_data;
|
multimesh->uses_custom_data = p_use_custom_data;
|
||||||
multimesh->custom_data_offset_cache = multimesh->color_offset_cache + (p_use_colors ? 2 : 0);
|
multimesh->custom_data_offset_cache = multimesh->color_offset_cache + color_and_custom_strides;
|
||||||
multimesh->stride_cache = multimesh->custom_data_offset_cache + (p_use_custom_data ? 2 : 0);
|
multimesh->stride_cache = multimesh->custom_data_offset_cache + color_and_custom_strides;
|
||||||
multimesh->buffer_set = false;
|
multimesh->buffer_set = false;
|
||||||
|
|
||||||
multimesh->data_cache = Vector<float>();
|
multimesh->data_cache = Vector<float>();
|
||||||
|
|
Loading…
Reference in New Issue