[Bf-blender-cvs] [7cc23f317ba] lanpr-under-gp: LineArt: Better logic for usage flags.
YimingWu
noreply at git.blender.org
Sun Sep 27 06:58:34 CEST 2020
Commit: 7cc23f317ba891df36013b1f4671bc55d380cefd
Author: YimingWu
Date: Sun Sep 27 11:38:25 2020 +0800
Branches: lanpr-under-gp
https://developer.blender.org/rB7cc23f317ba891df36013b1f4671bc55d380cefd
LineArt: Better logic for usage flags.
===================================================================
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 4455ad88319..60e94787859 100644
--- a/source/blender/editors/lineart/lineart_cpu.c
+++ b/source/blender/editors/lineart/lineart_cpu.c
@@ -1689,30 +1689,14 @@ int ED_lineart_object_collection_usage_check(Collection *c, Object *ob)
return OBJECT_LRT_INHERENT;
}
- int object_is_used = (ob->lineart.usage == OBJECT_LRT_INCLUDE ||
- ob->lineart.usage == OBJECT_LRT_INHERENT ||
- ob->lineart.usage == OBJECT_LRT_INTERSECTION_ONLY ||
- ob->lineart.usage == OBJECT_LRT_NO_INTERSECTION);
-
- if (object_is_used && (c->lineart_usage != COLLECTION_LRT_INCLUDE)) {
- if (BKE_collection_has_object_recursive(c, (Object *)(ob->id.orig_id))) {
- if (c->lineart_usage == COLLECTION_LRT_EXCLUDE) {
- return OBJECT_LRT_EXCLUDE;
- }
- else if (c->lineart_usage == COLLECTION_LRT_OCCLUSION_ONLY) {
- return OBJECT_LRT_OCCLUSION_ONLY;
- }
- else if (c->lineart_usage == COLLECTION_LRT_INTERSECTION_ONLY) {
- return OBJECT_LRT_INTERSECTION_ONLY;
- }
- else if (c->lineart_usage == COLLECTION_LRT_NO_INTERSECTION) {
- return OBJECT_LRT_NO_INTERSECTION;
- }
- }
+ int object_is_used = (ob->lineart.usage != OBJECT_LRT_INHERENT);
+
+ if (object_is_used) {
+ return ob->lineart.usage;
}
if (c->children.first == NULL) {
- if (BKE_collection_has_object(c, ob)) {
+ if (BKE_collection_has_object(c, (Object *)(ob->id.orig_id))) {
if (ob->lineart.usage == OBJECT_LRT_INHERENT) {
if (c->lineart_usage == COLLECTION_LRT_OCCLUSION_ONLY) {
return OBJECT_LRT_OCCLUSION_ONLY;
@@ -2386,9 +2370,13 @@ static void lineart_triangle_intersections_in_bounding_area(LineartRenderBuffer
next_lip = lip->next;
testing_triangle = lip->data;
rtt = (LineartRenderTriangleThread *)testing_triangle;
+
+ /* Note: No self intersect because these triangles doesn't take part in occlusion. */
+
if (testing_triangle == rt || rtt->testing[0] == (LineartRenderLine *)rt ||
- //((rt->flags & LRT_CULL_GENERATED) && (testing_triangle->flags & LRT_CULL_GENERATED)) ||
(testing_triangle->flags & LRT_TRIANGLE_NO_INTERSECTION) ||
+ ((testing_triangle->flags & LRT_TRIANGLE_INTERSECTION_ONLY) &&
+ (rt->flags & LRT_TRIANGLE_INTERSECTION_ONLY)) ||
lineart_triangle_share_edge(rt, testing_triangle)) {
continue;
}
More information about the Bf-blender-cvs
mailing list