Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Parborg <darkdefende@gmail.com>2022-04-29 19:20:54 +0300
committerSebastian Parborg <darkdefende@gmail.com>2022-04-29 19:22:32 +0300
commit074a8558b7b320d7be78d436ab5473fd5b53ff56 (patch)
treebb44834d91255a483282008b26b4dac9eb36b113 /source/blender/draw/intern/draw_cache.c
parent3eb9b4dfbc25c2d1dfbd2c6ff3802fed19b9163b (diff)
Fix rendering of wire curves when used as custom bone objects
In the current code we do not render any curves if they have not been converted to meshes. This change makes the custom bone drawing try to render mesh objects first and then falls back to curve objects if there is no mesh data available. Reviewed By: Clement Differential Revision: http://developer.blender.org/D14804
Diffstat (limited to 'source/blender/draw/intern/draw_cache.c')
-rw-r--r--source/blender/draw/intern/draw_cache.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/draw/intern/draw_cache.c b/source/blender/draw/intern/draw_cache.c
index e606d67df25..19d6557c34a 100644
--- a/source/blender/draw/intern/draw_cache.c
+++ b/source/blender/draw/intern/draw_cache.c
@@ -3357,7 +3357,7 @@ void drw_batch_cache_generate_requested(Object *ob)
}
}
-void drw_batch_cache_generate_requested_evaluated_mesh(Object *ob)
+void drw_batch_cache_generate_requested_evaluated_mesh_or_curve(Object *ob)
{
/* NOTE: Logic here is duplicated from #drw_batch_cache_generate_requested. */
@@ -3374,7 +3374,17 @@ void drw_batch_cache_generate_requested_evaluated_mesh(Object *ob)
((mode == CTX_MODE_EDIT_MESH) && DRW_object_is_in_edit_mode(ob))));
Mesh *mesh = BKE_object_get_evaluated_mesh_no_subsurf(ob);
- DRW_mesh_batch_cache_create_requested(DST.task_graph, ob, mesh, scene, is_paint_mode, use_hide);
+ /* Try getting the mesh first and if that fails, try getting the curve data.
+ * If the curves are surfaces or have certain modifiers applied to them, the will have mesh data
+ * of the final result.
+ */
+ if (mesh != NULL) {
+ DRW_mesh_batch_cache_create_requested(
+ DST.task_graph, ob, mesh, scene, is_paint_mode, use_hide);
+ }
+ else if (ELEM(ob->type, OB_CURVES_LEGACY, OB_FONT, OB_SURF)) {
+ DRW_curve_batch_cache_create_requested(ob, scene);
+ }
}
void drw_batch_cache_generate_requested_delayed(Object *ob)