diff --git a/comfy/sample.py b/comfy/sample.py index 98dcaca7..563a8527 100644 --- a/comfy/sample.py +++ b/comfy/sample.py @@ -5,15 +5,18 @@ import comfy.utils import numpy as np import logging -def prepare_noise(latent_image, seed, noise_inds=None): +def prepare_noise(latent_image, seed, noise_inds=None, disable_noise=False): """ creates random noise given a latent image and a seed. optional arg skip can be used to skip and discard x number of noise generations for a given seed """ generator = torch.manual_seed(seed) + if disable_noise: + return torch.zeros(latent_image.size(), dtype=latent_image.dtype, layout=latent_image.layout, device="cpu") + if noise_inds is None: return torch.randn(latent_image.size(), dtype=latent_image.dtype, layout=latent_image.layout, generator=generator, device="cpu") - + unique_inds, inverse = np.unique(noise_inds, return_inverse=True) noises = [] for i in range(unique_inds[-1]+1): diff --git a/comfy_extras/nodes_custom_sampler.py b/comfy_extras/nodes_custom_sampler.py index 219975e2..8907002f 100644 --- a/comfy_extras/nodes_custom_sampler.py +++ b/comfy_extras/nodes_custom_sampler.py @@ -397,7 +397,7 @@ class Noise_EmptyNoise: def generate_noise(self, input_latent): latent_image = input_latent["samples"] - return torch.zeros(latent_image.shape, dtype=latent_image.dtype, layout=latent_image.layout, device="cpu") + return comfy.sample.prepare_noise(latent_image, self.seed, disable_noise=True) class Noise_RandomNoise: diff --git a/nodes.py b/nodes.py index 513cd0c7..16084ad6 100644 --- a/nodes.py +++ b/nodes.py @@ -1381,11 +1381,8 @@ def common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, latent_image = latent["samples"] latent_image = comfy.sample.fix_empty_latent_channels(model, latent_image) - if disable_noise: - noise = torch.zeros(latent_image.size(), dtype=latent_image.dtype, layout=latent_image.layout, device="cpu") - else: - batch_inds = latent["batch_index"] if "batch_index" in latent else None - noise = comfy.sample.prepare_noise(latent_image, seed, batch_inds) + batch_inds = latent["batch_index"] if "batch_index" in latent else None + noise = comfy.sample.prepare_noise(latent_image, seed, batch_inds, disable_noise) noise_mask = None if "noise_mask" in latent: