[Bf-blender-cvs] [d13040a268d] lineart-fn-thread-loading: Lineart: working loader
YimingWu
noreply at git.blender.org
Tue Jun 1 15:32:27 CEST 2021
Commit: d13040a268da520c637cf97b6e12f71447edbf24
Author: YimingWu
Date: Tue Jun 1 21:16:58 2021 +0800
Branches: lineart-fn-thread-loading
https://developer.blender.org/rBd13040a268da520c637cf97b6e12f71447edbf24
Lineart: working loader
===================================================================
M source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
M source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
===================================================================
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
index 2345ffc6d94..249683202d8 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
@@ -77,7 +77,7 @@ static LineartEdgeChain *lineart_chain_create(LineartRenderBuffer *rb)
ec = lineart_mem_acquire(&rb->render_data_pool, sizeof(LineartEdgeChain));
BLI_addtail(&rb->chains, ec);
- printf("chain%d\n", ec);
+ // printf("chain%d\n", ec);
return ec;
}
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index d8cb1523a71..463fb1348a2 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -444,7 +444,8 @@ static void lineart_occlusion_worker(TaskPool *__restrict UNUSED(pool), LineartR
while (lineart_occlusion_make_task_info(rb, rti)) {
for (eip = rti->contour.first; eip && eip != rti->contour.last; eip = eip->next) {
- printf("eip l %d r %d t1 %d t2 %d fl %d\n", eip->v1, eip->v2, eip->t1, eip->t2, eip->flags);
+ // printf("eip l %d r %d t1 %d t2 %d fl %d\n", eip->v1, eip->v2, eip->t1, eip->t2,
+ // eip->flags);
lineart_occlusion_single_line(rb, eip, rti->thread_id);
}
@@ -1425,12 +1426,12 @@ static char lineart_identify_feature_line_me(LineartRenderBuffer *rb,
bool count_freestyle,
Mesh *me)
{
- return LRT_EDGE_FLAG_CONTOUR;
+ // return LRT_EDGE_FLAG_CONTOUR;
if (!la_me->managed) {
return 0;
}
- if (la_me->t1 && !la_me->t2) {
+ if (la_me->t1 == la_me->t2 || !la_me->t2) {
return LRT_EDGE_FLAG_CONTOUR;
}
@@ -1657,21 +1658,21 @@ static int lineart_mesh_edge_get_or_insert_from_vpair(LineartMeshEdge *table,
if (!e->t1) {
e->t1 = from;
e->poly1 = poly;
- printf("old edge %d %d f %d\n", v1, v2, from);
+ // printf("old edge %d %d f %d\n", v1, v2, from);
}
else {
e->t2 = from;
e->poly2 = poly;
- printf("old_edge %d %d f %d\n", v1, v2, from);
+ // printf("old_edge %d %d f %d\n", v1, v2, from);
}
return real_edge;
}
else {
- printf("new_edge %d %d f %d\n", v1, v2, from);
for (int i = orig_edge_count; i < max_edge_count; i++) {
LineartMeshEdge *e = &table[i];
if (e->managed) {
if ((e->v1 == v1 && e->v2 == v2) || (e->v1 == v2 && e->v2 == v1)) {
+ // printf("ext_edge %d %d f %d\n", v1, v2, from);
if (!e->t1) {
e->t1 = from;
e->poly1 = poly;
@@ -1684,6 +1685,7 @@ static int lineart_mesh_edge_get_or_insert_from_vpair(LineartMeshEdge *table,
}
}
else {
+ // printf("new_edge %d %d f %d\n", v1, v2, from);
e->managed = true;
e->v1 = v1;
e->v2 = v2;
@@ -1795,6 +1797,7 @@ static void lineart_geometry_object_load_mesh(LineartObjectInfo *obi, LineartRen
}
tri = ort;
+ loop = me->mloop;
int real_edges[3];
for (i = 0; i < tri_count; i++) {
@@ -1803,13 +1806,13 @@ static void lineart_geometry_object_load_mesh(LineartObjectInfo *obi, LineartRen
BKE_mesh_looptri_get_real_edges(me, &me->runtime.looptris.array[i], real_edges);
for (int j = 0; j < 3; j++) {
- tri->v[j] = &orv[looptri->tri[j]];
+ tri->v[j] = &orv[loop[looptri->tri[j]].v];
lineart_mesh_edge_get_or_insert_from_vpair(table,
real_edges[j],
mesh_edge_count,
max_edge_count,
- looptri->tri[j],
- looptri->tri[(j > 1) ? 0 : (j + 1)],
+ loop[looptri->tri[j]].v,
+ loop[looptri->tri[(j > 1) ? 0 : (j + 1)]].v,
tri,
looptri->poly);
}
@@ -1888,6 +1891,8 @@ static void lineart_geometry_object_load_mesh(LineartObjectInfo *obi, LineartRen
continue;
}
+ // printf("la_me %d %d %d\n", la_me, la_me->v1, la_me->v2);
+
la_e->v1 = &orv[la_me->v1];
la_e->v2 = &orv[la_me->v2];
la_e->v1_obindex = la_e->v1->index;
@@ -2325,7 +2330,6 @@ static void lineart_main_load_geometries(
* who doesn't have instances or just simply have transformation channel set. */
Object *use_ob = DEG_get_evaluated_object(depsgraph, ob);
Mesh *use_mesh;
- BMesh *bm;
if (obi->override_usage == OBJECT_LRT_EXCLUDE) {
continue;
@@ -2347,23 +2351,6 @@ static void lineart_main_load_geometries(
continue;
}
- if (use_mesh->edit_mesh) {
- /* Do not use edit_mesh directly because we will modify it, so create a copy. */
- 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,
- }));
- }
-
obi->me = use_mesh;
/* Prepare the matrix used for transforming this specific object (instance). */
@@ -2374,9 +2361,8 @@ static void lineart_main_load_geometries(
transpose_m4(imat);
copy_m4d_m4(obi->normal, imat);
- obi->original_bm = bm;
obi->original_ob = (ob->id.orig_id ? (Object *)ob->id.orig_id : (Object *)ob);
- lineart_geometry_load_assign_thread(olti, obi, thread_count, bm->totface);
+ lineart_geometry_load_assign_thread(olti, obi, thread_count, use_mesh->totface);
}
DEG_OBJECT_ITER_END;
More information about the Bf-blender-cvs
mailing list