From ef819dfce3a730123ae06521cd79be41cd545cf8 Mon Sep 17 00:00:00 2001 From: Alexopus Date: Thu, 24 Apr 2025 14:53:17 +0200 Subject: [PATCH] Add InputParameters node --- __init__.py | 3 ++- nodes_selectors.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/__init__.py b/__init__.py index 278ffb6..cda2631 100644 --- a/__init__.py +++ b/__init__.py @@ -1,7 +1,7 @@ from .nodes import ImageSaver from .nodes_literals import SeedGenerator, StringLiteral, SizeLiteral, IntLiteral, FloatLiteral, CfgLiteral from .nodes_loaders import CheckpointLoaderWithName, UNETLoaderWithName -from .nodes_selectors import SamplerSelector, SchedulerSelector, SchedulerSelectorComfy, SchedulerToString, SamplerToString, SchedulerComfyToString +from .nodes_selectors import SamplerSelector, SchedulerSelector, SchedulerSelectorComfy, SchedulerToString, SamplerToString, SchedulerComfyToString, InputParameters from .civitai_nodes import CivitaiHashFetcher NODE_CLASS_MAPPINGS = { @@ -11,6 +11,7 @@ NODE_CLASS_MAPPINGS = { "Sampler Selector (Image Saver)": SamplerSelector, "Scheduler Selector (Image Saver)": SchedulerSelector, "Scheduler Selector (Comfy) (Image Saver)": SchedulerSelectorComfy, + "Input Parameters (Image Saver)": InputParameters, "Seed Generator (Image Saver)": SeedGenerator, "String Literal (Image Saver)": StringLiteral, "Width/Height Literal (Image Saver)": SizeLiteral, diff --git a/nodes_selectors.py b/nodes_selectors.py index 0fc277b..4bc3739 100644 --- a/nodes_selectors.py +++ b/nodes_selectors.py @@ -119,3 +119,37 @@ class SamplerToString: def get_name(self, sampler): return (sampler,) + +class InputParameters: + RETURN_TYPES = ("INT", "INT", "FLOAT", comfy.samplers.KSampler.SAMPLERS, "STRING", comfy.samplers.KSampler.SCHEDULERS, "STRING", "FLOAT") + RETURN_NAMES = ("seed", "steps", "cfg", "sampler", "sampler_name", "scheduler", "scheduler_name", "denoise") + OUTPUT_TOOLTIPS = ( + "seed (INT)", + "steps (INT)", + "cfg (FLOAT)", + "sampler (SAMPLERS)", + "sampler name (STRING)", + "scheduler (SCHEDULERS)", + "scheduler name (STRING)", + "denoise (FLOAT)", + ) + FUNCTION = "get_values" + + CATEGORY = "ImageSaver/utils" + DESCRIPTION = "Combined node for seed, steps, cfg, sampler, scheduler and denoise." + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff, "control_after_generate": True, "tooltip": "The random seed used for creating the noise."}), + "steps": ("INT", {"default": 20, "min": 1, "max": 10000, "tooltip": "The number of steps used in the denoising process."}), + "cfg": ("FLOAT", {"default": 8.0, "min": 0.0, "max": 100.0, "step":0.1, "round": 0.01, "tooltip": "The Classifier-Free Guidance scale balances creativity and adherence to the prompt. Higher values result in images more closely matching the prompt however too high values will negatively impact quality."}), + "sampler": (comfy.samplers.KSampler.SAMPLERS, {"tooltip": "The algorithm used when sampling, this can affect the quality, speed, and style of the generated output."}), + "scheduler": (comfy.samplers.KSampler.SCHEDULERS, {"tooltip": "The scheduler controls how noise is gradually removed to form the image."}), + "denoise": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01, "tooltip": "The amount of denoising applied, lower values will maintain the structure of the initial image allowing for image to image sampling."}), + } + } + + def get_values(self, seed, steps, cfg, sampler, scheduler, denoise): + return (seed, steps, cfg, sampler, sampler, scheduler, scheduler, denoise)