feat: Concat Conditionings

This commit is contained in:
Dr.Lt.Data
2023-12-11 11:30:39 +09:00
parent b6aaa3994b
commit 3cefd47a32
5 changed files with 41 additions and 2 deletions
+1
View File
@@ -188,6 +188,7 @@ This takes latent as input and outputs latent as the result.
* String Selector - It selects and returns a portion of the string. When `multiline` mode is disabled, it simply returns the string of the line pointed to by the selector. When `multiline` mode is enabled, it divides the string based on lines that start with `#` and returns them. If the `select` value is larger than the number of items, it will start counting from the first line again and return accordingly.
* Combine Conditionings - It takes multiple conditionings as input and combines them into a single conditioning.
* Concat Conditionings - It takes multiple conditionings as input and concat them into a single conditioning.
* Logics (experimental) - These nodes are experimental nodes designed to implement the logic for loops and dynamic switching.
* ImpactCompare, ImpactConditionalBranch, ImpactInt, ImpactValueSender, ImpactValueReceiver, ImpactImageInfo, ImpactMinMax, ImpactNeg, ImpactConditionalStopIteration
+2
View File
@@ -264,6 +264,7 @@ NODE_CLASS_MAPPINGS = {
"RegionalPrompt": RegionalPrompt,
"ImpactCombineConditionings": CombineConditionings,
"ImpactConcatConditionings": ConcatConditionings,
"ImpactSEGSLabelFilter": SEGSLabelFilter,
"ImpactSEGSRangeFilter": SEGSRangeFilter,
@@ -390,6 +391,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
"RemoveNoiseMask": "Remove Noise Mask",
"ImpactCombineConditionings": "Combine Conditionings",
"ImpactConcatConditionings": "Concat Conditionings",
"ImpactQueueTrigger": "Queue Trigger",
"ImpactQueueTriggerCountdown": "Queue Trigger (Countdown)",
+3 -1
View File
@@ -370,7 +370,8 @@ app.registerExtension({
}
if (nodeData.name === 'ImpactMakeImageList' || nodeData.name === 'ImpactMakeImageBatch' ||
nodeData.name === 'CombineRegionalPrompts' || nodeData.name === 'ImpactCombineConditionings' ||
nodeData.name === 'CombineRegionalPrompts' ||
nodeData.name === 'ImpactCombineConditionings' || nodeData.name === 'ImpactConcatConditionings' ||
nodeData.name === 'ImpactSEGSConcat' ||
nodeData.name === 'ImpactSwitch' || nodeData.name === 'LatentSwitch' || nodeData.name == 'SEGSSwitch') {
var input_name = "input";
@@ -390,6 +391,7 @@ app.registerExtension({
break;
case 'ImpactCombineConditionings':
case 'ImpactConcatConditionings':
input_name = "conditioning";
break;
+1 -1
View File
@@ -2,7 +2,7 @@ import configparser
import os
version = "V4.44.7"
version = "V4.45"
dependency_version = 19
+34
View File
@@ -236,8 +236,42 @@ class CombineConditionings:
res += v
return (res, )
class ConcatConditionings:
@classmethod
def INPUT_TYPES(s):
return {"required": {
"conditioning1": ("CONDITIONING", ),
},
}
RETURN_TYPES = ("CONDITIONING", )
FUNCTION = "doit"
CATEGORY = "ImpactPack/__for_testing"
def doit(self, **kwargs):
conditioning_to = kwargs[0].values()[0]
for k, conditioning_from in kwargs.items()[1:]:
out = []
if len(conditioning_from) > 1:
print("Warning: ConcatConditionings {k} contains more than 1 cond, only the first one will actually be applied to conditioning1.")
cond_from = conditioning_from[0][0]
for i in range(len(conditioning_to)):
t1 = conditioning_to[i][0]
tw = torch.cat((t1, cond_from),1)
n = [tw, conditioning_to[i][1].copy()]
out.append(n)
conditioning_to = out
return (out, )
class RegionalSampler:
@classmethod
def INPUT_TYPES(s):