You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-05 12:10:55 +00:00
Fix multimesh still drawing when visible instances is zero
This commit is contained in:
@@ -334,6 +334,10 @@ void RenderForwardClustered::_render_list_template(RenderingDevice::DrawListID p
|
|||||||
const GeometryInstanceSurfaceDataCache *surf = p_params->elements[i];
|
const GeometryInstanceSurfaceDataCache *surf = p_params->elements[i];
|
||||||
const RenderElementInfo &element_info = p_params->element_info[i];
|
const RenderElementInfo &element_info = p_params->element_info[i];
|
||||||
|
|
||||||
|
if (surf->owner->instance_count == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
push_constant.base_index = i + p_params->element_offset;
|
push_constant.base_index = i + p_params->element_offset;
|
||||||
|
|
||||||
RID material_uniform_set;
|
RID material_uniform_set;
|
||||||
|
|||||||
@@ -1821,6 +1821,10 @@ void RenderForwardMobile::_render_list_template(RenderingDevice::DrawListID p_dr
|
|||||||
const RenderElementInfo &element_info = p_params->element_info[i];
|
const RenderElementInfo &element_info = p_params->element_info[i];
|
||||||
const GeometryInstanceForwardMobile *inst = surf->owner;
|
const GeometryInstanceForwardMobile *inst = surf->owner;
|
||||||
|
|
||||||
|
if (inst->instance_count == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t base_spec_constants = p_params->spec_constant_base_flags;
|
uint32_t base_spec_constants = p_params->spec_constant_base_flags;
|
||||||
|
|
||||||
// GeometryInstanceForwardMobile::PushConstant push_constant = inst->push_constant;
|
// GeometryInstanceForwardMobile::PushConstant push_constant = inst->push_constant;
|
||||||
|
|||||||
@@ -758,6 +758,10 @@ void RendererCanvasRenderRD::_render_item(RD::DrawListID p_draw_list, RID p_rend
|
|||||||
|
|
||||||
instance_count = storage->multimesh_get_instances_to_draw(multimesh);
|
instance_count = storage->multimesh_get_instances_to_draw(multimesh);
|
||||||
|
|
||||||
|
if (instance_count == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
RID uniform_set = storage->multimesh_get_2d_uniform_set(multimesh, shader.default_version_rd_shader, TRANSFORMS_UNIFORM_SET);
|
RID uniform_set = storage->multimesh_get_2d_uniform_set(multimesh, shader.default_version_rd_shader, TRANSFORMS_UNIFORM_SET);
|
||||||
RD::get_singleton()->draw_list_bind_uniform_set(p_draw_list, uniform_set, TRANSFORMS_UNIFORM_SET);
|
RD::get_singleton()->draw_list_bind_uniform_set(p_draw_list, uniform_set, TRANSFORMS_UNIFORM_SET);
|
||||||
push_constant.flags |= 1; //multimesh, trails disabled
|
push_constant.flags |= 1; //multimesh, trails disabled
|
||||||
|
|||||||
Reference in New Issue
Block a user