From 8757a21a1a9a5b65b458191096680272f5d95e91 Mon Sep 17 00:00:00 2001 From: YimingWu Date: Fri, 17 Mar 2023 20:13:35 +0800 Subject: [PATCH 1/2] Fix #105640: LineArt: versioning for LRT_GPENCIL_MATCH_OUTPUT_VGROUP flag. This flag is moved to a different variable but the default value and the versioning isn't correctly handled. Now fixed. --- .../blender/blenloader/intern/versioning_300.cc | 16 ++++++++++++++++ .../makesdna/DNA_gpencil_modifier_defaults.h | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/source/blender/blenloader/intern/versioning_300.cc b/source/blender/blenloader/intern/versioning_300.cc index e1b3053dbd8..e7309203051 100644 --- a/source/blender/blenloader/intern/versioning_300.cc +++ b/source/blender/blenloader/intern/versioning_300.cc @@ -3698,6 +3698,22 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain) } } } + LISTBASE_FOREACH (Object *, ob, &bmain->objects) { + LISTBASE_FOREACH (GpencilModifierData *, gpd, &ob->greasepencil_modifiers) { + if (gpd->type == eGpencilModifierType_Lineart) { + LineartGpencilModifierData *lmd = (LineartGpencilModifierData *)gpd; + /* Relocate calculation flags due to moved flag bits. */ + if (lmd->flags & LRT_GPENCIL_MATCH_OUTPUT_VGROUP) { + lmd->flags &= (~LRT_GPENCIL_MATCH_OUTPUT_VGROUP); + lmd->calculation_flags |= LRT_GPENCIL_MATCH_OUTPUT_VGROUP; + } + if (lmd->flags & LRT_GPENCIL_INVERT_SOURCE_VGROUP) { + lmd->flags &= (~LRT_GPENCIL_INVERT_SOURCE_VGROUP); + lmd->calculation_flags |= LRT_GPENCIL_INVERT_SOURCE_VGROUP; + } + } + } + } } if (!MAIN_VERSION_ATLEAST(bmain, 304, 2)) { diff --git a/source/blender/makesdna/DNA_gpencil_modifier_defaults.h b/source/blender/makesdna/DNA_gpencil_modifier_defaults.h index 00543b9df9a..ce714dc9879 100644 --- a/source/blender/makesdna/DNA_gpencil_modifier_defaults.h +++ b/source/blender/makesdna/DNA_gpencil_modifier_defaults.h @@ -330,10 +330,10 @@ .edge_types = LRT_EDGE_FLAG_INIT_TYPE, \ .thickness = 25, \ .opacity = 1.0f, \ - .flags = LRT_GPENCIL_MATCH_OUTPUT_VGROUP, \ .crease_threshold = DEG2RAD(140.0f), \ .calculation_flags = LRT_ALLOW_DUPLI_OBJECTS | LRT_ALLOW_CLIPPING_BOUNDARIES | \ - LRT_USE_CREASE_ON_SHARP_EDGES | LRT_FILTER_FACE_MARK_KEEP_CONTOUR, \ + LRT_USE_CREASE_ON_SHARP_EDGES | LRT_FILTER_FACE_MARK_KEEP_CONTOUR | \ + LRT_GPENCIL_MATCH_OUTPUT_VGROUP, \ /* Do not split by default, this is for better chaining quality. */ \ .angle_splitting_threshold = 0.0f, \ .chaining_image_threshold = 0.001f, \ -- 2.30.2 From 3ecd6959a9876e4e8621c3b7c1ccfc7602eca03c Mon Sep 17 00:00:00 2001 From: YimingWu Date: Fri, 17 Mar 2023 23:07:00 +0800 Subject: [PATCH 2/2] Cleanup: LineArt: Don't touch versioning code due to occupied flag bits. --- .../blender/blenloader/intern/versioning_300.cc | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/source/blender/blenloader/intern/versioning_300.cc b/source/blender/blenloader/intern/versioning_300.cc index e7309203051..e1b3053dbd8 100644 --- a/source/blender/blenloader/intern/versioning_300.cc +++ b/source/blender/blenloader/intern/versioning_300.cc @@ -3698,22 +3698,6 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain) } } } - LISTBASE_FOREACH (Object *, ob, &bmain->objects) { - LISTBASE_FOREACH (GpencilModifierData *, gpd, &ob->greasepencil_modifiers) { - if (gpd->type == eGpencilModifierType_Lineart) { - LineartGpencilModifierData *lmd = (LineartGpencilModifierData *)gpd; - /* Relocate calculation flags due to moved flag bits. */ - if (lmd->flags & LRT_GPENCIL_MATCH_OUTPUT_VGROUP) { - lmd->flags &= (~LRT_GPENCIL_MATCH_OUTPUT_VGROUP); - lmd->calculation_flags |= LRT_GPENCIL_MATCH_OUTPUT_VGROUP; - } - if (lmd->flags & LRT_GPENCIL_INVERT_SOURCE_VGROUP) { - lmd->flags &= (~LRT_GPENCIL_INVERT_SOURCE_VGROUP); - lmd->calculation_flags |= LRT_GPENCIL_INVERT_SOURCE_VGROUP; - } - } - } - } } if (!MAIN_VERSION_ATLEAST(bmain, 304, 2)) { -- 2.30.2