Files
lilly1987-ComfyUI_node_Lilly/SimpleSampler.py
T
2023-03-21 21:35:41 +09:00

86 lines
2.8 KiB
Python

import comfy.samplers
import comfy.sd
import comfy.utils
import comfy_extras.clip_vision
import model_management
import importlib
import folder_paths
import torch
import os
import sys
import json
import hashlib
import copy
import traceback
from PIL import Image
from PIL.PngImagePlugin import PngInfo
import numpy as np
from .Colors import cprint, Colors as Colors
import os
py_name=os.path.basename(__file__)
cprint(py_name, Colors.BLUE)
#----------------------------
# wildcards support check
wildcardsOn=False
try:
from .wildcards import *
wildcardsOn=True
#wildcards.card_path=os.path.dirname(__file__)+"\\..\\wildcards\\**\\*.txt"
cprint(f"{py_name} : import wildcards succ", Colors.GREEN )
except:
cprint(f"{py_name} : import wildcards fail", Colors.RED)
wildcardsOn=False
#----------------------------
class SimpleSampler:
@classmethod
def INPUT_TYPES(s):
return {"required":
{
"model": ("MODEL",),
#"positive": ("CONDITIONING", ),
"positive": ("STRING", {"multiline": True}), "clip": ("CLIP", ),
#"negative": ("CONDITIONING", ),
"negative": ("STRING", {"multiline": True}), "clip": ("CLIP", ),
"width": ("INT", {"default": 512, "min": 64, "max": 4096, "step": 64}),
"height": ("INT", {"default": 512, "min": 64, "max": 4096, "step": 64}),
"batch_size": ("INT", {"default": 1, "min": 1, "max": 64}),
"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}),
"sampler_name": (comfy.samplers.KSampler.SAMPLERS, ),
"scheduler": (comfy.samplers.KSampler.SCHEDULERS, ),
"latent_image": ("LATENT", ),
"denoise": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
}}
RETURN_TYPES = ("LATENT",)
FUNCTION = "sample"
CATEGORY = "sampling"
def encode(self, clip, text):
if wildcardsOn:
text=wildcards.run(text)
return ([[clip.encode(text), {}]], )
def generate(self, width, height, batch_size=1):
latent = torch.zeros([batch_size, 4, height // 8, width // 8])
return ({"samples":latent}, )
def sample(self,
model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image,
width, height, denoise=1.0, batch_size=1
):
return common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, self.encode(clip, positive), elf.encode(clip, negative), self.generate( width, height, batch_size=1), denoise=denoise)