[Bf-blender-cvs] [1ad81a67067] curve-nodes-modifier: Make curve data visible on non-curve object types

Hans Goudey noreply at git.blender.org
Tue Jul 13 01:40:46 CEST 2021


Commit: 1ad81a6706739126ef46afa4897c45a1e5b31619
Author: Hans Goudey
Date:   Fri Jul 2 00:15:23 2021 -0500
Branches: curve-nodes-modifier
https://developer.blender.org/rB1ad81a6706739126ef46afa4897c45a1e5b31619

Make curve data visible on non-curve object types

===================================================================

M	source/blender/blenkernel/intern/geometry_component_curve.cc
M	source/blender/draw/intern/draw_cache.c
M	source/blender/draw/intern/draw_cache_impl_curve.cc
M	source/blender/makesdna/DNA_curve_types.h

===================================================================

diff --git a/source/blender/blenkernel/intern/geometry_component_curve.cc b/source/blender/blenkernel/intern/geometry_component_curve.cc
index e177cceb091..b5c49dbb8b2 100644
--- a/source/blender/blenkernel/intern/geometry_component_curve.cc
+++ b/source/blender/blenkernel/intern/geometry_component_curve.cc
@@ -146,6 +146,7 @@ const Curve *CurveComponent::get_curve_for_render() const
   }
 
   curve_for_render_ = (Curve *)BKE_id_new_nomain(ID_CU, nullptr);
+  curve_for_render_->curve_eval = curve_;
 
   return curve_for_render_;
 }
diff --git a/source/blender/draw/intern/draw_cache.c b/source/blender/draw/intern/draw_cache.c
index 6775a281677..10c4c2c4fcc 100644
--- a/source/blender/draw/intern/draw_cache.c
+++ b/source/blender/draw/intern/draw_cache.c
@@ -2931,11 +2931,6 @@ GPUBatch *DRW_cache_curve_edge_wire_get(Object *ob)
   BLI_assert(ob->type == OB_CURVE);
 
   struct Curve *cu = ob->data;
-  struct Mesh *mesh_eval = BKE_object_get_evaluated_mesh(ob);
-  if (mesh_eval != NULL) {
-    return DRW_mesh_batch_cache_get_loose_edges(mesh_eval);
-  }
-
   return DRW_curve_batch_cache_get_wire_edge(cu);
 }
 
diff --git a/source/blender/draw/intern/draw_cache_impl_curve.cc b/source/blender/draw/intern/draw_cache_impl_curve.cc
index fe0eaa219cb..fa59b61248a 100644
--- a/source/blender/draw/intern/draw_cache_impl_curve.cc
+++ b/source/blender/draw/intern/draw_cache_impl_curve.cc
@@ -256,7 +256,7 @@ static CurveRenderData *curve_render_data_create(Curve *cu, Object *ob, const in
 
   rdata->ob_curve_cache = ob->runtime.curve_cache;
 
-  rdata->curve_eval = ob->runtime.geometry_set_eval->get_curve_for_read();
+  rdata->curve_eval = cu->curve_eval;
 
   if (types & CU_DATATYPE_WIRE) {
     if (rdata->curve_eval != nullptr) {
diff --git a/source/blender/makesdna/DNA_curve_types.h b/source/blender/makesdna/DNA_curve_types.h
index 231c7a79f34..06e9953b33c 100644
--- a/source/blender/makesdna/DNA_curve_types.h
+++ b/source/blender/makesdna/DNA_curve_types.h
@@ -300,6 +300,12 @@ typedef struct Curve {
   char _pad2[6];
   float fsize_realtime;
 
+  /**
+   * A pointer to curve data from geometry nodes, currently only set for evaluated
+   * objects by the dependency graph iterator, and owned by #geometry_set_eval.
+   */
+  struct CurveEval *curve_eval;
+
   void *batch_cache;
 } Curve;



More information about the Bf-blender-cvs mailing list