add scheduler/sampler select helper nodes

This commit is contained in:
cubiq
2024-08-09 15:27:05 +02:00
parent 5d25332f7e
commit bd86a4ae92
+40 -2
View File
@@ -205,6 +205,40 @@ class TextEncodeForSamplerParams:
return (output, ) return (output, )
class SamplerSelectHelper:
@classmethod
def INPUT_TYPES(s):
return {"required": {
**{s: ("BOOLEAN", { "default": False }) for s in comfy.samplers.KSampler.SAMPLERS},
}}
RETURN_TYPES = ("STRING", )
FUNCTION = "execute"
CATEGORY = "essentials/sampling"
def execute(self, **values):
values = [v for v in values if values[v]]
values = ", ".join(values)
return (values, )
class SchedulerSelectHelper:
@classmethod
def INPUT_TYPES(s):
return {"required": {
**{s: ("BOOLEAN", { "default": False }) for s in comfy.samplers.KSampler.SCHEDULERS},
}}
RETURN_TYPES = ("STRING", )
FUNCTION = "execute"
CATEGORY = "essentials/sampling"
def execute(self, **values):
values = [v for v in values if values[v]]
values = ", ".join(values)
return (values, )
class FluxSamplerParams: class FluxSamplerParams:
@classmethod @classmethod
def INPUT_TYPES(s): def INPUT_TYPES(s):
@@ -405,7 +439,7 @@ class PlotParameters:
width = images.shape[2] width = images.shape[2]
out_image = [] out_image = []
font = ImageFont.truetype(os.path.join(FONTS_DIR, 'ShareTechMono-Regular.ttf'), min(48, int(31*(width/1024)))) font = ImageFont.truetype(os.path.join(FONTS_DIR, 'ShareTechMono-Regular.ttf'), min(48, int(32*(width/1024))))
text_padding = 3 text_padding = 3
line_height = font.getmask('Q').getbbox()[3] + font.getmetrics()[1] + text_padding*2 line_height = font.getmask('Q').getbbox()[3] + font.getmetrics()[1] + text_padding*2
char_width = font.getbbox('M')[2]+1 # using monospace font char_width = font.getbbox('M')[2]+1 # using monospace font
@@ -413,7 +447,7 @@ class PlotParameters:
for (image, param) in zip(images, params): for (image, param) in zip(images, params):
image = image.permute(2, 0, 1) image = image.permute(2, 0, 1)
text = f"time: {param['time']:.2f}s, seed: {param['seed']}, steps: {param['steps']}, size: {param['width']}×{param['height']}\ndenoise: {param['denoise']}, sampler: {param['sampler']}, sched: {param['scheduler']}, sigmas: {param['split_sigmas']}\nguidance: {param['guidance']}, max/base shift: {param['max_shift']}/{param['base_shift']}" text = f"time: {param['time']:.2f}s, seed: {param['seed']}, steps: {param['steps']}, size: {param['width']}×{param['height']}\ndenoise: {param['denoise']}, sampler: {param['sampler']}, sched: {param['scheduler']}\nguidance: {param['guidance']}, max/base shift: {param['max_shift']}/{param['base_shift']}, sigmas: {param['split_sigmas']}"
lines = text.split("\n") lines = text.split("\n")
text_height = line_height * len(lines) text_height = line_height * len(lines)
text_image = Image.new('RGB', (width, text_height), color=(0, 0, 0)) text_image = Image.new('RGB', (width, text_height), color=(0, 0, 0))
@@ -501,6 +535,8 @@ SAMPLING_CLASS_MAPPINGS = {
"FluxSamplerParams+": FluxSamplerParams, "FluxSamplerParams+": FluxSamplerParams,
"PlotParameters+": PlotParameters, "PlotParameters+": PlotParameters,
"TextEncodeForSamplerParams+": TextEncodeForSamplerParams, "TextEncodeForSamplerParams+": TextEncodeForSamplerParams,
"SamplerSelectHelper+": SamplerSelectHelper,
"SchedulerSelectHelper+": SchedulerSelectHelper,
} }
SAMPLING_NAME_MAPPINGS = { SAMPLING_NAME_MAPPINGS = {
@@ -510,4 +546,6 @@ SAMPLING_NAME_MAPPINGS = {
"FluxSamplerParams+": "🔧 Flux Sampler Parameters", "FluxSamplerParams+": "🔧 Flux Sampler Parameters",
"PlotParameters+": "🔧 Plot Sampler Parameters", "PlotParameters+": "🔧 Plot Sampler Parameters",
"TextEncodeForSamplerParams+": "🔧Text Encode for Sampler Params", "TextEncodeForSamplerParams+": "🔧Text Encode for Sampler Params",
"SamplerSelectHelper+": "🔧 Sampler Select Helper",
"SchedulerSelectHelper+": "🔧 Scheduler Select Helper",
} }