From 6b6fde705f92a07275cff4fa89b4acff32709c46 Mon Sep 17 00:00:00 2001 From: blepping Date: Mon, 21 Oct 2024 04:21:59 -0600 Subject: [PATCH] Fix issue where using DisableNoise or disabling add_noise results in non-deterministic generations --- comfy_extras/nodes_custom_sampler.py | 13 ++----------- nodes.py | 6 +++--- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/comfy_extras/nodes_custom_sampler.py b/comfy_extras/nodes_custom_sampler.py index 06238f89222..7c991cde19a 100644 --- a/comfy_extras/nodes_custom_sampler.py +++ b/comfy_extras/nodes_custom_sampler.py @@ -315,15 +315,6 @@ def get_sampler(self, order, rtol, atol, h_init, pcoeff, icoeff, dcoeff, accept_ "s_noise":s_noise }) return (sampler, ) -class Noise_EmptyNoise: - def __init__(self): - self.seed = 0 - - 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") - - class Noise_RandomNoise: def __init__(self, seed): self.seed = seed @@ -360,7 +351,7 @@ def sample(self, model, add_noise, noise_seed, cfg, positive, negative, sampler, latent = latent_image latent_image = latent["samples"] if not add_noise: - noise = Noise_EmptyNoise().generate_noise(latent) + raise ValueError("add_noise must be enabled") else: noise = Noise_RandomNoise(noise_seed).generate_noise(latent) @@ -480,7 +471,7 @@ def INPUT_TYPES(s): CATEGORY = "sampling/custom_sampling/noise" def get_noise(self): - return (Noise_EmptyNoise(),) + raise RuntimeError("DisableNoise cannot be used") class RandomNoise(DisableNoise): diff --git a/nodes.py b/nodes.py index fda073cfc88..9c154556cf9 100644 --- a/nodes.py +++ b/nodes.py @@ -1348,7 +1348,7 @@ class KSamplerAdvanced: def INPUT_TYPES(s): return {"required": {"model": ("MODEL",), - "add_noise": (["enable", "disable"], ), + "add_noise": (["enable"], ), "noise_seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}), "steps": ("INT", {"default": 20, "min": 1, "max": 10000}), "cfg": ("FLOAT", {"default": 8.0, "min": 0.0, "max": 100.0, "step":0.1, "round": 0.01}), @@ -1373,8 +1373,8 @@ def sample(self, model, add_noise, noise_seed, steps, cfg, sampler_name, schedul if return_with_leftover_noise == "enable": force_full_denoise = False disable_noise = False - if add_noise == "disable": - disable_noise = True + if add_noise != "enable": + raise ValueError("add_noise must be enabled") return common_ksampler(model, noise_seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=denoise, disable_noise=disable_noise, start_step=start_at_step, last_step=end_at_step, force_full_denoise=force_full_denoise) class SaveImage: