# https://github.com/comfyanonymous/ComfyUI/blob/master/nodes.py import torch import ldm_patched.contrib.external import ldm_patched.modules.utils class SD_4XUpscale_Conditioning: @classmethod def INPUT_TYPES(s): return {"required": { "images": ("IMAGE",), "positive": ("CONDITIONING",), "negative": ("CONDITIONING",), "scale_ratio": ("FLOAT", {"default": 4.0, "min": 0.0, "max": 10.0, "step": 0.01}), "noise_augmentation": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.001}), }} RETURN_TYPES = ("CONDITIONING", "CONDITIONING", "LATENT") RETURN_NAMES = ("positive", "negative", "latent") FUNCTION = "encode" CATEGORY = "conditioning/upscale_diffusion" def encode(self, images, positive, negative, scale_ratio, noise_augmentation): width = max(1, round(images.shape[-2] * scale_ratio)) height = max(1, round(images.shape[-3] * scale_ratio)) pixels = ldm_patched.modules.utils.common_upscale((images.movedim(-1,1) * 2.0) - 1.0, width // 4, height // 4, "bilinear", "center") out_cp = [] out_cn = [] for t in positive: n = [t[0], t[1].copy()] n[1]['concat_image'] = pixels n[1]['noise_augmentation'] = noise_augmentation out_cp.append(n) for t in negative: n = [t[0], t[1].copy()] n[1]['concat_image'] = pixels n[1]['noise_augmentation'] = noise_augmentation out_cn.append(n) latent = torch.zeros([images.shape[0], 4, height // 4, width // 4]) return (out_cp, out_cn, {"samples":latent}) NODE_CLASS_MAPPINGS = { "SD_4XUpscale_Conditioning": SD_4XUpscale_Conditioning, }