diff options
author | YimingWu <xp8110@outlook.com> | 2021-05-19 10:07:19 +0300 |
---|---|---|
committer | YimingWu <xp8110@outlook.com> | 2021-05-19 10:09:40 +0300 |
commit | 5239198f177ad26e25e5f3608cd7e092065e2d8f (patch) | |
tree | c1069ba27a21cbce5ae46b1352408642805c1193 /source/blender/gpencil_modifiers | |
parent | 8dd43ac23ebef30a136e0f7f430a37bdc556e78c (diff) |
Fix T88362: Lineart countour rendering error
This is caused by lacking of consideration of
OB_DUPLICOLLECTION in updateDepsgraph() in the
modifier.
Reviewed by: Antonio Vazquez (antoniov)
https://developer.blender.org/D11292
Diffstat (limited to 'source/blender/gpencil_modifiers')
-rw-r--r-- | source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c index 080a3caa32f..c1a791d460b 100644 --- a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c +++ b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c @@ -194,6 +194,24 @@ static bool isDisabled(GpencilModifierData *md, int UNUSED(userRenderParams)) return isModifierDisabled(md); } +static void add_this_collection(Collection *c, + const ModifierUpdateDepsgraphContext *ctx, + const int mode) +{ + FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_BEGIN (c, ob, mode) { + if (ELEM(ob->type, OB_MESH, OB_MBALL, OB_CURVE, OB_SURF, OB_FONT)) { + if (ob->lineart.usage != OBJECT_LRT_EXCLUDE) { + DEG_add_object_relation(ctx->node, ob, DEG_OB_COMP_GEOMETRY, "Line Art Modifier"); + DEG_add_object_relation(ctx->node, ob, DEG_OB_COMP_TRANSFORM, "Line Art Modifier"); + } + } + if (ob->type == OB_EMPTY && (ob->transflag & OB_DUPLICOLLECTION)) { + add_this_collection(ob->instance_collection, ctx, mode); + } + } + FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_END; +} + static void updateDepsgraph(GpencilModifierData *md, const ModifierUpdateDepsgraphContext *ctx, const int mode) @@ -208,15 +226,7 @@ static void updateDepsgraph(GpencilModifierData *md, ctx->node, lmd->source_object, DEG_OB_COMP_TRANSFORM, "Line Art Modifier"); } else { - FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_BEGIN (ctx->scene->master_collection, ob, mode) { - if (ELEM(ob->type, OB_MESH, OB_MBALL, OB_CURVE, OB_SURF, OB_FONT)) { - if (ob->lineart.usage != OBJECT_LRT_EXCLUDE) { - DEG_add_object_relation(ctx->node, ob, DEG_OB_COMP_GEOMETRY, "Line Art Modifier"); - DEG_add_object_relation(ctx->node, ob, DEG_OB_COMP_TRANSFORM, "Line Art Modifier"); - } - } - } - FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_END; + add_this_collection(ctx->scene->master_collection, ctx, mode); } DEG_add_object_relation( ctx->node, ctx->scene->camera, DEG_OB_COMP_TRANSFORM, "Line Art Modifier"); |