From ddaedfe836687d48c84e990c7c966474fb2aa3ab Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Sat, 30 Dec 2023 00:58:08 +0900 Subject: [PATCH] feat: ImpactWildcardEncode - support BREAK syntax --- modules/impact/config.py | 2 +- modules/impact/wildcards.py | 27 ++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/modules/impact/config.py b/modules/impact/config.py index 7d9917f..70d4277 100644 --- a/modules/impact/config.py +++ b/modules/impact/config.py @@ -2,7 +2,7 @@ import configparser import os -version = "V4.55" +version = "V4.56" dependency_version = 20 diff --git a/modules/impact/wildcards.py b/modules/impact/wildcards.py index c82569a..6eae85a 100644 --- a/modules/impact/wildcards.py +++ b/modules/impact/wildcards.py @@ -328,12 +328,29 @@ def process_with_loras(wildcard_opt, model, clip, clip_encoder=None): else: print(f"LORA NOT FOUND: {orig_lora_name}") - print(f"CLIP: {pass2}") + pass3 = [x.strip() for x in pass2.split("BREAK")] + pass3 = [x for x in pass3 if x != ''] - if clip_encoder is None: - return model, clip, nodes.CLIPTextEncode().encode(clip, pass2)[0] - else: - return model, clip, clip_encoder.encode(clip, pass2)[0] + if len(pass3) == 0: + pass3 = [''] + + pass3_str = [f'[{x}]' for x in pass3] + print(f"CLIP: {str.join(' + ', pass3_str)}") + + result = None + + for prompt in pass3: + if clip_encoder is None: + cur = nodes.CLIPTextEncode().encode(clip, prompt)[0] + else: + cur = clip_encoder.encode(clip, prompt)[0] + + if result is not None: + result = nodes.ConditioningConcat().concat(result, cur)[0] + else: + result = cur + + return model, clip, result def starts_with_regex(pattern, text):