79d3e090cd
Negatively scaled objects should be mirrored. This is already implemented, but it breaks when mirrored and non-mirrored instances of the same object are visible together. It turns out that the code that skips-over repeats in `RenderForwardClustered::_render_list_template` also skips the code that accounts for the culling mode of mirrored objects. The solution here is to consider the `mirror` flag when determining repeats. This might result in more draw commands than necessary since a mirrored object can split a group of non-mirrored instances in two. This problem doesn't appear in the mobile renderer because the repeat optimization isn't implemented there yet. The problem still appears in MultiMeshInstance3D in *all* renderers. Fixes #62879 and #58546. |
||
---|---|---|
.. | ||
effects | ||
environment | ||
forward_clustered | ||
forward_mobile | ||
shaders | ||
storage_rd | ||
cluster_builder_rd.cpp | ||
cluster_builder_rd.h | ||
effects_rd.cpp | ||
effects_rd.h | ||
framebuffer_cache_rd.cpp | ||
framebuffer_cache_rd.h | ||
pipeline_cache_rd.cpp | ||
pipeline_cache_rd.h | ||
renderer_canvas_render_rd.cpp | ||
renderer_canvas_render_rd.h | ||
renderer_compositor_rd.cpp | ||
renderer_compositor_rd.h | ||
renderer_scene_render_rd.cpp | ||
renderer_scene_render_rd.h | ||
SCsub | ||
shader_rd.cpp | ||
shader_rd.h | ||
uniform_set_cache_rd.cpp | ||
uniform_set_cache_rd.h |