[Bf-blender-cvs] [fb6010e47ca] temp-lineart-contained: LineArt: Fix light contour when no ref is selected
YimingWu
noreply at git.blender.org
Tue Jun 22 13:57:20 CEST 2021
Commit: fb6010e47ca789dadeabf7bbe8c73aa5acfdbc62
Author: YimingWu
Date: Tue Jun 22 19:57:05 2021 +0800
Branches: temp-lineart-contained
https://developer.blender.org/rBfb6010e47ca789dadeabf7bbe8c73aa5acfdbc62
LineArt: Fix light contour when no ref is selected
===================================================================
M release/datafiles/locale
M release/scripts/addons
M source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
M source/blender/makesdna/DNA_gpencil_modifier_defaults.h
M source/blender/makesdna/DNA_lineart_types.h
===================================================================
diff --git a/release/datafiles/locale b/release/datafiles/locale
index ab283053ab4..4833954c0ac 160000
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit ab283053ab455f76f5620b59b823e73bd9f601ce
+Subproject commit 4833954c0ac85cc407e1d5a153aa11b1d1823ec0
diff --git a/release/scripts/addons b/release/scripts/addons
index ec07ed4c2e0..f86f25e6221 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit ec07ed4c2e0495bea7fbe0b546d25e35211506a9
+Subproject commit f86f25e62217264495d05f116ccb09d575fe9841
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index 9b915041c50..81ce421d2c9 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -1529,33 +1529,38 @@ static uint16_t lineart_identify_feature_line(LineartRenderBuffer *rb,
double result;
uint16_t edge_flag_result = 0;
- if (rb->cam_is_persp) {
- sub_v3_v3v3_db(view_vector, l->gloc, rb->camera_pos);
- }
- else {
- view_vector = rb->view_vector;
- }
+ if (rb->use_contour) {
- dot_1 = dot_v3v3_db(view_vector, tri1->gn);
- dot_2 = dot_v3v3_db(view_vector, tri2->gn);
+ if (rb->cam_is_persp) {
+ sub_v3_v3v3_db(view_vector, l->gloc, rb->camera_pos);
+ }
+ else {
+ view_vector = rb->view_vector;
+ }
- if ((result = dot_1 * dot_2) <= 0 && (dot_1 + dot_2)) {
- edge_flag_result |= LRT_EDGE_FLAG_CONTOUR;
- }
+ dot_1 = dot_v3v3_db(view_vector, tri1->gn);
+ dot_2 = dot_v3v3_db(view_vector, tri2->gn);
- if (rb->light_is_sun) {
- view_vector = rb->light_vector;
- }
- else {
- view_vector = vv;
- sub_v3_v3v3_db(view_vector, l->gloc, rb->light_vector);
+ if ((result = dot_1 * dot_2) <= 0 && (dot_1 + dot_2)) {
+ edge_flag_result |= LRT_EDGE_FLAG_CONTOUR;
+ }
}
- dot_1 = dot_v3v3_db(view_vector, tri1->gn);
- dot_2 = dot_v3v3_db(view_vector, tri2->gn);
+ if (rb->use_light_contour) {
+ if (rb->light_is_sun) {
+ view_vector = rb->light_vector;
+ }
+ else {
+ view_vector = vv;
+ sub_v3_v3v3_db(view_vector, l->gloc, rb->light_vector);
+ }
+
+ dot_1 = dot_v3v3_db(view_vector, tri1->gn);
+ dot_2 = dot_v3v3_db(view_vector, tri2->gn);
- if ((result = dot_1 * dot_2) <= 0 && (dot_1 + dot_2)) {
- edge_flag_result |= LRT_EDGE_FLAG_LIGHT_CONTOUR;
+ if ((result = dot_1 * dot_2) <= 0 && (dot_1 + dot_2)) {
+ edge_flag_result |= LRT_EDGE_FLAG_LIGHT_CONTOUR;
+ }
}
if (rb->use_crease && (dot_v3v3_db(tri1->gn, tri2->gn) < crease_threshold)) {
@@ -3131,7 +3136,8 @@ static LineartRenderBuffer *lineart_create_render_buffer(Scene *scene,
rb->use_edge_marks = (edge_types & LRT_EDGE_FLAG_EDGE_MARK) != 0;
rb->use_intersections = (edge_types & LRT_EDGE_FLAG_INTERSECTION) != 0;
rb->use_floating = (edge_types & LRT_EDGE_FLAG_FLOATING) != 0;
- rb->use_light_contour = (edge_types & LRT_EDGE_FLAG_LIGHT_CONTOUR) != 0;
+ rb->use_light_contour = ((edge_types & LRT_EDGE_FLAG_LIGHT_CONTOUR) != 0 &&
+ (lmd->light_contour_object != NULL));
rb->filter_face_mark_invert = (lmd->calculation_flags & LRT_FILTER_FACE_MARK_INVERT) != 0;
rb->filter_face_mark = (lmd->calculation_flags & LRT_FILTER_FACE_MARK) != 0;
diff --git a/source/blender/makesdna/DNA_gpencil_modifier_defaults.h b/source/blender/makesdna/DNA_gpencil_modifier_defaults.h
index 52a5df3b49a..05f37da56fe 100644
--- a/source/blender/makesdna/DNA_gpencil_modifier_defaults.h
+++ b/source/blender/makesdna/DNA_gpencil_modifier_defaults.h
@@ -289,7 +289,7 @@
#define _DNA_DEFAULT_LineartGpencilModifierData \
{ \
- .edge_types = LRT_EDGE_FLAG_ALL_TYPE, \
+ .edge_types = LRT_EDGE_FLAG_INIT_TYPE, \
.thickness = 25, \
.opacity = 1.0f, \
.flags = LRT_GPENCIL_MATCH_OUTPUT_VGROUP, \
diff --git a/source/blender/makesdna/DNA_lineart_types.h b/source/blender/makesdna/DNA_lineart_types.h
index 576bcc37f3d..3aa61c3c775 100644
--- a/source/blender/makesdna/DNA_lineart_types.h
+++ b/source/blender/makesdna/DNA_lineart_types.h
@@ -77,6 +77,7 @@ typedef enum eLineartEdgeFlag {
} eLineartEdgeFlag;
#define LRT_EDGE_FLAG_ALL_TYPE 0x7f
+#define LRT_EDGE_FLAG_INIT_TYPE 0x37 /* Without material & light contour */
#define LRT_EDGE_FLAG_TYPE_MAX_BITS 7
#endif
More information about the Bf-blender-cvs
mailing list