SwarmComfyCommon / SwarmBlending.py
Goodis's picture
Upload 55 files
ca2a3d8 verified
import torch
class SwarmLatentBlendMasked:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"samples0": ("LATENT",),
"samples1": ("LATENT",),
"mask": ("MASK",),
"blend_factor": ("FLOAT", { "default": 0.5, "min": 0, "max": 1, "step": 0.01, "tooltip": "The blend factor between the two samples. 0 means entirely use sample0, 1 means entirely sample1, 0.5 means 50/50 of each." }),
}
}
RETURN_TYPES = ("LATENT",)
FUNCTION = "blend"
CATEGORY = "SwarmUI/images"
DESCRIPTION = "Blends two latent images together within a masked region."
def blend(self, samples0, samples1, blend_factor, mask):
samples_out = samples0.copy()
samples0 = samples0["samples"]
samples1 = samples1["samples"]
while mask.ndim < 4:
mask = mask.unsqueeze(0)
if samples0.shape != samples1.shape:
samples1 = torch.nn.functional.interpolate(samples1, size=(samples0.shape[2], samples0.shape[3]), mode="bicubic")
if samples0.shape != mask.shape:
mask = torch.nn.functional.interpolate(mask, size=(samples0.shape[2], samples0.shape[3]), mode="bicubic")
samples_blended = samples0 * (1 - mask * blend_factor) + samples1 * (mask * blend_factor)
samples_out["samples"] = samples_blended
return (samples_out,)
NODE_CLASS_MAPPINGS = {
"SwarmLatentBlendMasked": SwarmLatentBlendMasked,
}