[Bf-blender-cvs] [dc96fdda019] lanpr-under-gp: LineArt: Support line preview in edit mode.
YimingWu
noreply at git.blender.org
Mon Nov 2 02:46:21 CET 2020
Commit: dc96fdda019fc55d1cec4eaf34997a28832f6370
Author: YimingWu
Date: Mon Nov 2 09:46:04 2020 +0800
Branches: lanpr-under-gp
https://developer.blender.org/rBdc96fdda019fc55d1cec4eaf34997a28832f6370
LineArt: Support line preview in edit mode.
===================================================================
M source/blender/editors/lineart/lineart_cpu.c
===================================================================
diff --git a/source/blender/editors/lineart/lineart_cpu.c b/source/blender/editors/lineart/lineart_cpu.c
index 41373a0f6c9..fad73283400 100644
--- a/source/blender/editors/lineart/lineart_cpu.c
+++ b/source/blender/editors/lineart/lineart_cpu.c
@@ -1425,14 +1425,13 @@ static void lineart_geometry_object_load(Depsgraph *dg,
BMLoop *loop;
LineartRenderLine *rl;
LineartRenderTriangle *rt;
- LineartRenderTriangleAdjacent *orta, *rta;
+ LineartRenderTriangleAdjacent *orta;
double new_mvp[4][4], new_mv[4][4], normal[4][4];
float imat[4][4];
LineartRenderElementLinkNode *reln;
LineartRenderVert *orv;
LineartRenderLine *orl;
LineartRenderTriangle *ort;
- FreestyleEdge *fe;
Object *orig_ob;
int CanFindFreestyle = 0;
int i, global_i = (*global_vindex);
@@ -1441,6 +1440,13 @@ static void lineart_geometry_object_load(Depsgraph *dg,
int usage = override_usage ? override_usage : ob->lineart.usage;
+#define LRT_MESH_FINISH \
+ BM_mesh_free(bm); \
+ if (ob->type != OB_MESH) { \
+ BKE_mesh_free(use_mesh); \
+ MEM_freeN(use_mesh); \
+ }
+
if (usage == OBJECT_LRT_EXCLUDE) {
return;
}
@@ -1450,6 +1456,7 @@ static void lineart_geometry_object_load(Depsgraph *dg,
if (ob->type == OB_MESH) {
use_mesh = DEG_get_evaluated_object(dg, ob)->data;
+ use_mesh->edit_mesh->bm;
}
else {
use_mesh = BKE_mesh_new_from_object(NULL, ob, false);
@@ -1467,16 +1474,21 @@ static void lineart_geometry_object_load(Depsgraph *dg,
transpose_m4(imat);
copy_m4d_m4(normal, imat);
- const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(((Mesh *)(use_mesh)));
- bm = BM_mesh_create(&allocsize,
- &((struct BMeshCreateParams){
- .use_toolflags = true,
- }));
- BM_mesh_bm_from_me(bm,
- use_mesh,
- &((struct BMeshFromMeshParams){
- .calc_face_normal = true,
- }));
+ if (use_mesh->edit_mesh) {
+ bm = BM_mesh_copy(use_mesh->edit_mesh->bm);
+ }
+ else {
+ const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(((Mesh *)(use_mesh)));
+ bm = BM_mesh_create(&allocsize,
+ &((struct BMeshCreateParams){
+ .use_toolflags = true,
+ }));
+ BM_mesh_bm_from_me(bm,
+ use_mesh,
+ &((struct BMeshFromMeshParams){
+ .calc_face_normal = true,
+ }));
+ }
if (rb->remove_doubles) {
BMEditMesh *em = BKE_editmesh_create(bm, false);
@@ -1513,11 +1525,7 @@ static void lineart_geometry_object_load(Depsgraph *dg,
}
if (ED_lineart_calculation_flag_check(LRT_RENDER_CANCELING)) {
- BM_mesh_free(bm);
- if (ob->type != OB_MESH) {
- BKE_mesh_free(use_mesh);
- MEM_freeN(use_mesh);
- }
+ LRT_MESH_FINISH
return;
}
@@ -1659,13 +1667,10 @@ static void lineart_geometry_object_load(Depsgraph *dg,
rl++;
}
- BM_mesh_free(bm);
-
- if (ob->type != OB_MESH) {
- BKE_mesh_free(use_mesh);
- MEM_freeN(use_mesh);
- }
+ LRT_MESH_FINISH
}
+
+#undef LRT_MESH_FINISH
}
int ED_lineart_object_collection_usage_check(Collection *c, Object *ob)
@@ -2451,7 +2456,6 @@ static void lineart_main_get_view_vector(LineartRenderBuffer *rb)
float trans[3];
float inv[4][4];
float obmat_no_scale[4][4];
- float scale[3];
BLI_spin_lock(&lineart_share.lock_render_status);
if (lineart_share.viewport_camera_override) {
More information about the Bf-blender-cvs
mailing list