From 9dafdba0c3444ee3e6cea17dddccfbc6054042b7 Mon Sep 17 00:00:00 2001 From: AIrjen Date: Fri, 18 Aug 2023 15:28:05 +0200 Subject: [PATCH 1/5] adding in fixed styles mode --- OneButtonPromptNodes.py | 2 +- build_dynamic_prompt.py | 23 +++++ csvfiles/special_lists/imagetypemodes.csv | 3 +- csvfiles/templates/styles.csv | 106 ++++++++++++++++++++++ prompttester.py | 2 +- 5 files changed, 133 insertions(+), 3 deletions(-) create mode 100644 csvfiles/templates/styles.csv diff --git a/OneButtonPromptNodes.py b/OneButtonPromptNodes.py index 1ecb308..4fb025e 100644 --- a/OneButtonPromptNodes.py +++ b/OneButtonPromptNodes.py @@ -12,7 +12,7 @@ sys.path.append(onebuttonprompt_path) from build_dynamic_prompt import * artists = ["all", "none", "popular", "greg mode", "3D", "abstract", "angular", "anime" ,"architecture", "art nouveau", "art deco", "baroque", "bauhaus", "cartoon", "character", "children's illustration", "cityscape", "clean", "cloudscape", "collage", "colorful", "comics", "cubism", "dark", "detailed", "digital", "expressionism", "fantasy", "fashion", "fauvism", "figurativism", "gore", "graffiti", "graphic design", "high contrast", "horror", "impressionism", "installation", "landscape", "light", "line drawing", "low contrast", "luminism", "magical realism", "manga", "melanin", "messy", "monochromatic", "nature", "nudity", "photography", "pop art", "portrait", "primitivism", "psychedelic", "realism", "renaissance", "romanticism", "scene", "sci-fi", "sculpture", "seascape", "space", "stained glass", "still life", "storybook realism", "street art", "streetscape", "surrealism", "symbolism", "textile", "ukiyo-e", "vibrant", "watercolor", "whimsical"] -imagetypes = ["all", "all - force multiple", "photograph", "octane render","digital art","concept art", "painting", "portrait", "anime key visual", "only other types", "only templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode"] +imagetypes = ["all", "all - force multiple", "photograph", "octane render","digital art","concept art", "painting", "portrait", "anime key visual", "only other types", "only templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode"] subjects =["all", "object", "animal", "humanoid", "landscape", "concept"] genders = ["all", "male", "female"] diff --git a/build_dynamic_prompt.py b/build_dynamic_prompt.py index f16ae75..3c754a7 100644 --- a/build_dynamic_prompt.py +++ b/build_dynamic_prompt.py @@ -140,6 +140,9 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all minilocationadditionslist = csv_to_list("minilocationadditions", antilist,"./csvfiles/special_lists/") overalladditionlist = csv_to_list("overalladditions", antilist,"./csvfiles/special_lists/") imagetypemodelist = csv_to_list("imagetypemodes", antilist,"./csvfiles/special_lists/") + + styleslist = csv_to_list("styles", antilist,"./csvfiles/templates/") + # subjects @@ -559,6 +562,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all photofantasymode = False massivemadnessmode = False onlysubjectmode = False + stylesmode = False + # determine wether we should go for a template or not. Not hooked up to insanitylevel if(imagetype == "only templates mode"): specialmode = True @@ -601,6 +606,11 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all onlysubjectmode = True print("Running in only subject mode") + if(imagetype == "fixed styles mode"): + specialmode = True + stylesmode = True + print("Running with a randomized style instead of a randomized prompt") + # main stuff generatetype = not specialmode @@ -1055,6 +1065,14 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all completeprompt += " (" + # start styles mode here + if(stylesmode == True): + chosenstyle = random.choice(styleslist) + chosenstyleprefix = chosenstyle.split("-subject-")[0] + chosenstylesuffix= chosenstyle.split("-subject-")[1] + completeprompt += chosenstyleprefix + + # start artist part @@ -1749,6 +1767,11 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(rare_dist(insanitylevel) and bool(cameralist)): completeprompt += "-camera-, " step = step + 1 + + # start styles mode here + if(stylesmode == True): + completeprompt += chosenstylesuffix + # custom style list if(chance_roll(insanitylevel, customstyle1chance) and generatestyle == True): diff --git a/csvfiles/special_lists/imagetypemodes.csv b/csvfiles/special_lists/imagetypemodes.csv index e657d92..621b63d 100644 --- a/csvfiles/special_lists/imagetypemodes.csv +++ b/csvfiles/special_lists/imagetypemodes.csv @@ -5,4 +5,5 @@ color cannon mode unique art mode massive madness mode photo fantasy mode -subject only mode \ No newline at end of file +subject only mode +fixed styles mode \ No newline at end of file diff --git a/csvfiles/templates/styles.csv b/csvfiles/templates/styles.csv new file mode 100644 index 0000000..5f4672a --- /dev/null +++ b/csvfiles/templates/styles.csv @@ -0,0 +1,106 @@ +professional 3d model -subject-, octane render, highly detailed, volumetric, dramatic lighting +analog film photo -subject-, faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage +anime artwork -subject-, anime style, key visual, vibrant, studio anime, highly detailed +cinematic film still -subject-, shallow depth of field, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, film grain, grainy +comic -subject-, graphic illustration, comic art, graphic novel art, vibrant, highly detailed +play-doh style -subject-, sculpture, clay art, centered composition, Claymation +concept art -subject-, digital artwork, illustrative, painterly, matte painting, highly detailed +breathtaking -subject-, award-winning, professional, highly detailed +ethereal fantasy concept art of -subject-, magnificent, celestial, ethereal, painterly, epic, majestic, magical, fantasy art, cover art, dreamy +isometric style -subject-, vibrant, beautiful, crisp, detailed, ultra detailed, intricate +line art drawing -subject-, professional, sleek, modern, minimalist, graphic, line art, vector graphics +low-poly style -subject-, low-poly game art, polygon mesh, jagged, blocky, wireframe edges, centered composition +neonpunk style -subject-, cyberpunk, vaporwave, neon, vibes, vibrant, stunningly beautiful, crisp, detailed, sleek, ultramodern, magenta highlights, dark purple shadows, high contrast, cinematic, ultra detailed, intricate, professional +origami style -subject-, paper art, pleated paper, folded, origami art, pleats, cut and fold, centered composition +cinematic photo -subject-, 35mm photograph, film, bokeh, professional, 4k, highly detailed +pixel-art -subject-, low-res, blocky, pixel art style, 8-bit graphics +texture {prompt} top down close-up +advertising poster style -subject-, Professional, modern, product-focused, commercial, eye-catching, highly detailed +automotive advertisement style -subject-, sleek, dynamic, professional, commercial, vehicle-focused, high-resolution, highly detailed +corporate branding style -subject-, professional, clean, modern, sleek, minimalist, business-oriented, highly detailed +fashion editorial style -subject-, high fashion, trendy, stylish, editorial, magazine style, professional, highly detailed +food photography style -subject-, appetizing, professional, culinary, high-resolution, commercial, highly detailed +gourmet food photo of -subject-, soft natural lighting, macro details, vibrant colors, fresh ingredients, glistening textures, bokeh background, styled plating, wooden tabletop, garnished, tantalizing, editorial quality +luxury product style -subject-, elegant, sophisticated, high-end, luxurious, professional, highly detailed +real estate photography style -subject-, professional, inviting, well-lit, high-resolution, property-focused, commercial, highly detailed +retail packaging style -subject-, vibrant, enticing, commercial, product-focused, eye-catching, professional, highly detailed +abstract style -subject-, non-representational, colors and shapes, expression of feelings, imaginative, highly detailed +abstract expressionist painting -subject-, energetic brushwork, bold colors, abstract forms, expressive, emotional +art deco style -subject-, geometric shapes, bold colors, luxurious, elegant, decorative, symmetrical, ornate, detailed +art nouveau style -subject-, elegant, decorative, curvilinear forms, nature-inspired, ornate, detailed +constructivist style -subject-, geometric shapes, bold colors, dynamic composition, propaganda art style +cubist artwork -subject-, geometric shapes, abstract, innovative, revolutionary +expressionist -subject-, raw, emotional, dynamic, distortion for emotional effect, vibrant, use of unusual colors, detailed +graffiti style -subject-, street art, vibrant, urban, detailed, tag, mural +hyperrealistic art -subject-, extremely high-resolution details, photographic, realism pushed to extreme, fine texture, incredibly lifelike +impressionist painting -subject-, loose brushwork, vibrant color, light and shadow play, captures feeling over form +pointillism style -subject-, composed entirely of small, distinct dots of color, vibrant, highly detailed +pop Art style -subject-, bright colors, bold outlines, popular culture themes, ironic or kitsch +psychedelic style -subject-, vibrant colors, swirling patterns, abstract forms, surreal, trippy +renaissance style -subject-, realistic, perspective, light and shadow, religious or mythological themes, highly detailed +steampunk style -subject-, antique, mechanical, brass and copper tones, gears, intricate, detailed +surrealist art -subject-, dreamlike, mysterious, provocative, symbolic, intricate, detailed +typographic art -subject-, stylized, intricate, detailed, artistic, text-based +watercolor painting -subject-, vibrant, beautiful, painterly, detailed, textural, artistic +biomechanical style -subject-, blend of organic and mechanical elements, futuristic, cybernetic, detailed, intricate +biomechanical cyberpunk -subject-, cybernetics, human-machine fusion, dystopian, organic meets artificial, dark, intricate, highly detailed +cybernetic style -subject-, futuristic, technological, cybernetic enhancements, robotics, artificial intelligence themes +cybernetic robot -subject-, android, AI, machine, metal, wires, tech, futuristic, highly detailed +cyberpunk cityscape -subject-, neon lights, dark alleys, skyscrapers, futuristic, vibrant colors, high contrast, highly detailed +futuristic style -subject-, sleek, modern, ultramodern, high tech, detailed +retro cyberpunk -subject-, 80's inspired, synthwave, neon, vibrant, detailed, retro futurism +retro-futuristic -subject-, vintage sci-fi, 50s and 60s style, atomic age, vibrant, highly detailed +sci-fi style -subject-, futuristic, technological, alien worlds, space themes, advanced civilizations +vaporwave style -subject-, retro aesthetic, cyberpunk, vibrant, neon colors, vintage 80s and 90s style, highly detailed +Bubble Bobble style -subject-, 8-bit, cute, pixelated, fantasy, vibrant, reminiscent of Bubble Bobble game +cyberpunk game style -subject-, neon, dystopian, futuristic, digital, vibrant, detailed, high contrast, reminiscent of cyberpunk genre video games +fighting game style -subject-, dynamic, vibrant, action-packed, detailed character design, reminiscent of fighting video games +GTA-style artwork -subject-, satirical, exaggerated, pop art style, vibrant colors, iconic characters, action-packed +Super Mario style -subject-, vibrant, cute, cartoony, fantasy, playful, reminiscent of Super Mario series +Minecraft style -subject-, blocky, pixelated, vibrant colors, recognizable characters and objects, game assets +Pokémon style -subject-, vibrant, cute, anime, fantasy, reminiscent of Pokémon series +retro arcade style -subject-, 8-bit, pixelated, vibrant, classic video game, old school gaming, reminiscent of 80s and 90s arcade games +retro game art -subject-, 16-bit, vibrant colors, pixelated, nostalgic, charming, fun +role-playing game (RPG) style fantasy -subject-, detailed, vibrant, immersive, reminiscent of high fantasy RPG games +strategy game style -subject-, overhead view, detailed map, units, reminiscent of real-time strategy video games +Street Fighter style -subject-, vibrant, dynamic, arcade, 2D fighting game, highly detailed, reminiscent of Street Fighter series +Legend of Zelda style -subject-, vibrant, fantasy, detailed, epic, heroic, reminiscent of The Legend of Zelda series +architectural style -subject-, clean lines, geometric shapes, minimalist, modern, architectural drawing, highly detailed +disco-themed -subject-, vibrant, groovy, retro 70s style, shiny disco balls, neon lights, dance floor, highly detailed +dreamscape -subject-, surreal, ethereal, dreamy, mysterious, fantasy, highly detailed +dystopian style -subject-, bleak, post-apocalyptic, somber +fairy tale -subject-, magical, fantastical, enchanting, storybook style, highly detailed +gothic style -subject-, dark, mysterious, haunting, dramatic, ornate, detailed +grunge style -subject-, textured, distressed, vintage, edgy, punk rock vibe, dirty, noisy +horror-themed -subject-, eerie, unsettling, dark, spooky, suspenseful, grim, highly detailed +kawaii style -subject-, cute, adorable, brightly colored, cheerful, anime influence, highly detailed +lovecraftian horror -subject-, eldritch, cosmic horror, unknown, mysterious, surreal, highly detailed +macabre style -subject-, dark, gothic, grim, haunting, highly detailed +manga style -subject-, vibrant, high-energy, detailed, iconic, Japanese comic style +metropolis-themed -subject-, urban, cityscape, skyscrapers, modern, futuristic, highly detailed +minimalist style -subject-, simple, clean, uncluttered, modern, elegant +monochrome -subject-, black and white, contrast, tone, texture, detailed +nautical-themed -subject-, sea, ocean, ships, maritime, beach, marine life, highly detailed +space-themed -subject-, cosmic, celestial, stars, galaxies, nebulas, planets, science fiction, highly detailed +stained glass style -subject-, vibrant, beautiful, translucent, intricate, detailed +techwear fashion -subject-, futuristic, cyberpunk, urban, tactical, sleek, dark, highly detailed +tribal style -subject-, indigenous, ethnic, traditional patterns, bold, natural colors, highly detailed +zentangle -subject-, intricate, abstract, monochrome, patterns, meditative, highly detailed +collage style -subject-, mixed media, layered, textural, detailed, artistic +flat papercut style -subject-, silhouette, clean cuts, paper, sharp edges, minimalist, color block +kirigami representation of -subject-, 3D, paper folding, paper cutting, Japanese, intricate, symmetrical, precision, clean lines +paper mache representation of -subject-, 3D, sculptural, textured, handmade, vibrant, fun +paper quilling art of -subject-, intricate, delicate, curling, rolling, shaping, coiling, loops, 3D, dimensional, ornamental +papercut collage of -subject-, mixed media, textured paper, overlapping, asymmetrical, abstract, vibrant +3D papercut shadow box of -subject-, layered, dimensional, depth, silhouette, shadow, papercut, handmade, high contrast +stacked papercut art of -subject-, 3D, layered, dimensional, depth, precision cut, stacked layers, papercut, high contrast +thick layered papercut art of -subject-, deep 3D, volumetric, dimensional, depth, thick paper, high stack, heavy texture, tangible layers +alien-themed -subject-, extraterrestrial, cosmic, otherworldly, mysterious, sci-fi, highly detailed +film noir style -subject-, monochrome, high contrast, dramatic shadows, 1940s style, mysterious, cinematic +glamorous photo -subject-, high fashion, luxurious, extravagant, stylish, sensual, opulent, elegance, stunning beauty, professional, high contrast, detailed +HDR photo of -subject-, High dynamic range, vivid, rich details, clear shadows and highlights, realistic, intense, enhanced contrast, highly detailed +iphone photo -subject-, large depth of field, deep depth of field, highly detailed +long exposure photo of -subject-, Blurred motion, streaks of light, surreal, dreamy, ghosting effect, highly detailed +neon noir -subject-, cyberpunk, dark, rainy streets, neon signs, high contrast, low light, vibrant, highly detailed +silhouette style -subject-, high contrast, minimalistic, black and white, stark, dramatic +tilt-shift photo of -subject-, selective focus, miniature effect, blurred background, highly detailed, vibrant, perspective control \ No newline at end of file diff --git a/prompttester.py b/prompttester.py index 2d3c920..c91077c 100644 --- a/prompttester.py +++ b/prompttester.py @@ -46,4 +46,4 @@ def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", im print("") print("All done!") -generateprompts(10,8,"all","all","all",False,"","","PREFIXPROMPT" ,"SUFFIXPROMPT","",1,"","(hello:1.3)",True,"",100, "all", "all", "all", "all", False) \ No newline at end of file +generateprompts(10,5,"all","all","fixed styles mode",False,"","","PREFIXPROMPT" ,"SUFFIXPROMPT","",1,"","",True,"",100, "all", "all", "all", "all", False) \ No newline at end of file From 0d4fd185a91b1101edb22c9c7c9d2438d65244c8 Mon Sep 17 00:00:00 2001 From: AIrjen Date: Fri, 18 Aug 2023 15:57:49 +0200 Subject: [PATCH 2/5] Adding feature parity for some things for comfyUI Added option to turn off emoji's, that break some stuff on ComfyUI --- OneButtonPromptNodes.py | 159 +++++++++++++++++++++++++++++++++++-- build_dynamic_prompt.py | 4 +- prompttester.py | 6 +- scripts/api.py | 6 +- scripts/onebuttonprompt.py | 4 +- 5 files changed, 166 insertions(+), 13 deletions(-) diff --git a/OneButtonPromptNodes.py b/OneButtonPromptNodes.py index 4fb025e..3bf89ec 100644 --- a/OneButtonPromptNodes.py +++ b/OneButtonPromptNodes.py @@ -10,16 +10,162 @@ onebuttonprompt_path = os.path.join(custom_nodes_path, "OneButtonPrompt") sys.path.append(onebuttonprompt_path) from build_dynamic_prompt import * +from csv_reader import * artists = ["all", "none", "popular", "greg mode", "3D", "abstract", "angular", "anime" ,"architecture", "art nouveau", "art deco", "baroque", "bauhaus", "cartoon", "character", "children's illustration", "cityscape", "clean", "cloudscape", "collage", "colorful", "comics", "cubism", "dark", "detailed", "digital", "expressionism", "fantasy", "fashion", "fauvism", "figurativism", "gore", "graffiti", "graphic design", "high contrast", "horror", "impressionism", "installation", "landscape", "light", "line drawing", "low contrast", "luminism", "magical realism", "manga", "melanin", "messy", "monochromatic", "nature", "nudity", "photography", "pop art", "portrait", "primitivism", "psychedelic", "realism", "renaissance", "romanticism", "scene", "sci-fi", "sculpture", "seascape", "space", "stained glass", "still life", "storybook realism", "street art", "streetscape", "surrealism", "symbolism", "textile", "ukiyo-e", "vibrant", "watercolor", "whimsical"] imagetypes = ["all", "all - force multiple", "photograph", "octane render","digital art","concept art", "painting", "portrait", "anime key visual", "only other types", "only templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode"] subjects =["all", "object", "animal", "humanoid", "landscape", "concept"] genders = ["all", "male", "female"] +emojis = [False, True] -subjectsubtypesobject = ["all", "generic objects", "vehicles", "food", "buildings", "space", "flora"] -subjectsubtypeshumanoid = ["all", "generic humans", "generic human relations", "celebrities e.a.", "fictional characters", "humanoids", "based on job or title", "based on first name"] -subjectsubtypesconcept = ["all", "event", "the X of Y concepts", "lines from poems", "lines from songs"] - +subjects =["all"] +subjectsubtypesobject = ["all"] +subjectsubtypeshumanoid = ["all"] +subjectsubtypesconcept = ["all"] +#subjectsubtypesobject = ["all", "generic objects", "vehicles", "food", "buildings", "space", "flora"] +#subjectsubtypeshumanoid = ["all", "generic humans", "generic human relations", "celebrities e.a.", "fictional characters", "humanoids", "based on job or title", "based on first name"] +#subjectsubtypesconcept = ["all", "event", "the X of Y concepts", "lines from poems", "lines from songs"] + + +# Load up stuff for personal artists list, if any +# find all artist files starting with personal_artits in userfiles +script_dir = os.path.dirname(os.path.abspath(__file__)) # Script directory +userfilesfolder = os.path.join(script_dir, "./userfiles/" ) +for filename in os.listdir(userfilesfolder): + if(filename.endswith(".csv") and filename.startswith("personal_artists") and filename != "personal_artists_sample.csv"): + name = os.path.splitext(filename)[0] + name = name.replace("_"," ",-1).lower() + # directly insert into the artists list + artists.insert(2, name) + +# on startup, check if we have a config file, or else create it +config = load_config_csv() + + +# load subjects stuff from config +generatevehicle = True +generateobject = True +generatefood = True +generatebuilding = True +generatespace = True +generateflora = True +generateanimal = True +generatemanwoman = True +generatemanwomanrelation = True +generatefictionalcharacter = True +generatenonfictionalcharacter = True +generatehumanoids = True +generatejob = True +generatefirstnames = True +generatelandscape = True +generateevent = True +generateconcepts = True +generatepoemline = True +generatesongline = True + + +for item in config: + # objects + if item[0] == 'subject_vehicle' and item[1] != 'on': + generatevehicle = False + if item[0] == 'subject_object' and item[1] != 'on': + generateobject = False + if item[0] == 'subject_food' and item[1] != 'on': + generatefood = False + if item[0] == 'subject_building' and item[1] != 'on': + generatebuilding = False + if item[0] == 'subject_space' and item[1] != 'on': + generatespace = False + if item[0] == 'subject_flora' and item[1] != 'on': + generateflora = False + # animals + if item[0] == 'subject_animal' and item[1] != 'on': + generateanimal = False + # humanoids + if item[0] == 'subject_manwoman' and item[1] != 'on': + generatemanwoman = False + if item[0] == 'subject_manwomanrelation' and item[1] != 'on': + generatemanwomanrelation = False + if item[0] == 'subject_fictional' and item[1] != 'on': + generatefictionalcharacter = False + if item[0] == 'subject_nonfictional' and item[1] != 'on': + generatenonfictionalcharacter = False + if item[0] == 'subject_humanoid' and item[1] != 'on': + generatehumanoids = False + if item[0] == 'subject_job' and item[1] != 'on': + generatejob = False + if item[0] == 'subject_firstnames' and item[1] != 'on': + generatefirstnames = False + # landscape + if item[0] == 'subject_landscape' and item[1] != 'on': + generatelandscape = False + # concept + if item[0] == 'subject_event' and item[1] != 'on': + generateevent = False + if item[0] == 'subject_concept' and item[1] != 'on': + generateconcepts = False + if item[0] == 'poemline' and item[1] != 'on': + generatepoemline = False + if item[0] == 'songline' and item[1] != 'on': + generatesongline = False + +# build up all subjects we can choose based on the loaded config file +if(generatevehicle or generateobject or generatefood or generatebuilding or generatespace): + subjects.append("object") +if(generateanimal): + subjects.append("animal") +if(generatemanwoman or generatemanwomanrelation or generatefictionalcharacter or generatenonfictionalcharacter or generatehumanoids or generatejob): + subjects.append("humanoid") +if(generatelandscape): + subjects.append("landscape") +if(generateevent or generateconcepts or generatepoemline or generatesongline): + subjects.append("concept") + + +# do the same for the subtype subjects +# subjectsubtypesobject = ["all"] +# subjectsubtypeshumanoid = ["all"] +# subjectsubtypesconcept = ["all"] + +# objects first +if(generateobject): + subjectsubtypesobject.append("generic objects") +if(generatevehicle): + subjectsubtypesobject.append("vehicles") +if(generatefood): + subjectsubtypesobject.append("food") +if(generatebuilding): + subjectsubtypesobject.append("buildings") +if(generatespace): + subjectsubtypesobject.append("space") +if(generateflora): + subjectsubtypesobject.append("flora") + +# humanoids (should I review descriptions??) +if(generatemanwoman): + subjectsubtypeshumanoid.append("generic humans") +if(generatemanwomanrelation): + subjectsubtypeshumanoid.append("generic human relations") +if(generatenonfictionalcharacter): + subjectsubtypeshumanoid.append("celebrities e.a.") +if(generatefictionalcharacter): + subjectsubtypeshumanoid.append("fictional characters") +if(generatehumanoids): + subjectsubtypeshumanoid.append("humanoids") +if(generatejob): + subjectsubtypeshumanoid.append("based on job or title") +if(generatefirstnames): + subjectsubtypeshumanoid.append("based on first name") + +# concepts +if(generateevent): + subjectsubtypesconcept.append("event") +if(generateconcepts): + subjectsubtypesconcept.append("the X of Y concepts") +if(generatepoemline): + subjectsubtypesconcept.append("lines from poems") +if(generatesongline): + subjectsubtypesconcept.append("lines from songs") class OneButtonPrompt: @@ -57,6 +203,7 @@ class OneButtonPrompt: "subject_subtypes_humanoids": (subjectsubtypeshumanoid, {"default": "all"}), "humanoids_gender": (genders, {"default": "all"}), "subject_subtypes_concepts": (subjectsubtypesconcept, {"default": "all"}), + "emojis":(emojis, {"default": False}), "seed": ("INT", {"default": 0, "min": 0, "max": 0xFFFFFFFFFFFFFFFF}), }, @@ -71,8 +218,8 @@ class OneButtonPrompt: CATEGORY = "OneButtonPrompt" - def Comfy_OBP(self, insanitylevel, custom_subject,seed, artist,imagetype, subject, imagemodechance, humanoids_gender, subject_subtype_objects, subject_subtypes_humanoids, subject_subtypes_concepts): - generatedprompt = build_dynamic_prompt(insanitylevel,subject,artist,imagetype,False,"","","",1,"",custom_subject,True,"",imagemodechance, humanoids_gender, subject_subtype_objects, subject_subtypes_humanoids, subject_subtypes_concepts, False) + def Comfy_OBP(self, insanitylevel, custom_subject,seed, artist,imagetype, subject, imagemodechance, humanoids_gender, subject_subtype_objects, subject_subtypes_humanoids, subject_subtypes_concepts, emojis): + generatedprompt = build_dynamic_prompt(insanitylevel,subject,artist,imagetype,False,"","","",1,"",custom_subject,True,"",imagemodechance, humanoids_gender, subject_subtype_objects, subject_subtypes_humanoids, subject_subtypes_concepts, False, emojis) #print(generatedprompt) return (generatedprompt,) diff --git a/build_dynamic_prompt.py b/build_dynamic_prompt.py index 3c754a7..3bf6bbf 100644 --- a/build_dynamic_prompt.py +++ b/build_dynamic_prompt.py @@ -10,7 +10,7 @@ from random_functions import * # insanity level controls randomness of propmt 0-10 # forcesubject van be used to force a certain type of subject # Set artistmode to none, to exclude artists -def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all", imagetype = "all", onlyartists = False, antivalues = "", prefixprompt = "", suffixprompt ="",promptcompounderlevel ="1", seperator = "comma", givensubject="",smartsubject = True,giventypeofimage="", imagemodechance = 20, gender = "all", subtypeobject="all", subtypehumanoid="all", subtypeconcept="all", advancedprompting=True): +def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all", imagetype = "all", onlyartists = False, antivalues = "", prefixprompt = "", suffixprompt ="",promptcompounderlevel ="1", seperator = "comma", givensubject="",smartsubject = True,giventypeofimage="", imagemodechance = 20, gender = "all", subtypeobject="all", subtypehumanoid="all", subtypeconcept="all", advancedprompting=True, hardturnoffemojis=False): # load the config file @@ -352,6 +352,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if item[0] == 'emojichance': emojichance = item[1] + if(hardturnoffemojis==True): + emojichance='never' if item[0] == 'joboractivitychance': joboractivitychance = item[1] diff --git a/prompttester.py b/prompttester.py index c91077c..9d4495e 100644 --- a/prompttester.py +++ b/prompttester.py @@ -10,7 +10,7 @@ from build_dynamic_prompt import * -def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", imagetype="all",onlyartists=False, workprompt="", antistring="",prefixprompt="", suffixprompt="", negativeprompt="",promptcompounderlevel = "1", seperator="comma",givensubject="",smartsubject=True,giventypeofimage="",imagemodechance=20, gender = "all", subtypeobject = "all", subtypehumanoid = "all", subtypeconcept = "all", advancedprompting = True): +def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", imagetype="all",onlyartists=False, workprompt="", antistring="",prefixprompt="", suffixprompt="", negativeprompt="",promptcompounderlevel = "1", seperator="comma",givensubject="",smartsubject=True,giventypeofimage="",imagemodechance=20, gender = "all", subtypeobject = "all", subtypehumanoid = "all", subtypeconcept = "all", advancedprompting = True, hardturnoffemojis=False): loops = int(amount) # amount of images to generate steps = 0 @@ -18,7 +18,7 @@ def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", im while steps < loops: # build prompt - result = build_dynamic_prompt(insanitylevel,subject,artist,imagetype, onlyartists,antistring,prefixprompt,suffixprompt,promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage,imagemodechance, gender, subtypeobject, subtypehumanoid, subtypeconcept, advancedprompting) + result = build_dynamic_prompt(insanitylevel,subject,artist,imagetype, onlyartists,antistring,prefixprompt,suffixprompt,promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage,imagemodechance, gender, subtypeobject, subtypehumanoid, subtypeconcept, advancedprompting, hardturnoffemojis) print("") print("loop " + str(steps)) @@ -46,4 +46,4 @@ def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", im print("") print("All done!") -generateprompts(10,5,"all","all","fixed styles mode",False,"","","PREFIXPROMPT" ,"SUFFIXPROMPT","",1,"","",True,"",100, "all", "all", "all", "all", False) \ No newline at end of file +generateprompts(10,9,"humanoid","all","all",False,"","","PREFIXPROMPT" ,"SUFFIXPROMPT","",1,"","",True,"",100, "all", "all", "all", "all", False, True) \ No newline at end of file diff --git a/scripts/api.py b/scripts/api.py index 34def4d..9289ffc 100644 --- a/scripts/api.py +++ b/scripts/api.py @@ -38,13 +38,15 @@ def one_button_prompt_api(_: gr.Blocks, app: FastAPI): gender: str = Body('all',title='gender'), subtypeobject: str = Body('all',title='subtypeobject'), subtypehumanoid: str = Body('all', title='subtypehumanoid'), - subtypeconcept: str = Body('all', title='subtypeconcept') + subtypeconcept: str = Body('all', title='subtypeconcept'), + advancedprompting:bool = Body(True,title='advancedprompting'), + hardturnoffemojis:bool = Body(False,title='hardturnoffemojis') ): keys = ['insanitylevel', 'forcesubject', 'artists', 'imagetype', 'onlyartists', 'antivalues', 'prefixprompt', 'suffixprompt', 'promptcompounderlevel', 'seperator', 'givensubject', 'smartsubject', 'giventypeofimage', - 'imagemodechance', 'gender', 'subtypeobject','subtypehumanoid','subtypeconcept'] + 'imagemodechance', 'gender', 'subtypeobject','subtypehumanoid','subtypeconcept','advancedprompting','hardturnoffemojis'] payload = {} for key in keys: payload[key] = locals()[key] diff --git a/scripts/onebuttonprompt.py b/scripts/onebuttonprompt.py index e579346..593af76 100644 --- a/scripts/onebuttonprompt.py +++ b/scripts/onebuttonprompt.py @@ -22,7 +22,7 @@ subjectsubtypesobject = ["all"] subjectsubtypeshumanoid = ["all"] subjectsubtypesconcept = ["all"] artists = ["all", "none", "popular", "greg mode", "3D", "abstract", "angular", "anime" ,"architecture", "art nouveau", "art deco", "baroque", "bauhaus", "cartoon", "character", "children's illustration", "cityscape", "clean", "cloudscape", "collage", "colorful", "comics", "cubism", "dark", "detailed", "digital", "expressionism", "fantasy", "fashion", "fauvism", "figurativism", "gore", "graffiti", "graphic design", "high contrast", "horror", "impressionism", "installation", "landscape", "light", "line drawing", "low contrast", "luminism", "magical realism", "manga", "melanin", "messy", "monochromatic", "nature", "nudity", "photography", "pop art", "portrait", "primitivism", "psychedelic", "realism", "renaissance", "romanticism", "scene", "sci-fi", "sculpture", "seascape", "space", "stained glass", "still life", "storybook realism", "street art", "streetscape", "surrealism", "symbolism", "textile", "ukiyo-e", "vibrant", "watercolor", "whimsical"] -imagetypes = ["all", "all - force multiple", "photograph", "octane render","digital art","concept art", "painting", "portrait", "anime key visual", "only other types", "only templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode"] +imagetypes = ["all", "all - force multiple", "photograph", "octane render","digital art","concept art", "painting", "portrait", "anime key visual", "only other types", "only templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode"] promptmode = ["at the back", "in the front"] promptcompounder = ["1", "2", "3", "4", "5"] ANDtogglemode = ["none", "automatic", "prefix AND prompt + suffix", "prefix + prefix + prompt + suffix"] @@ -456,6 +456,8 @@ class Script(scripts.Script): 16. subject only mode --> Will only generate a subject, with no additional frills. + 17. fixed styles mode --> Generate a subject on top of a fixed style. Credits to Triple Headed Monkey. Go check his stuff out! + ### One in X chance to use special image type mode From 707a5a53f405ca283c5d8fcc7f29a57f3ef5ce13 Mon Sep 17 00:00:00 2001 From: AIrjen Date: Sat, 19 Aug 2023 08:59:03 +0200 Subject: [PATCH 3/5] Adding in filename prefix --- OneButtonPromptNodes.py | 83 ++++++++++++++++++++++++++++++----- csvfiles/templates/styles.csv | 4 +- main.py | 1 + 3 files changed, 76 insertions(+), 12 deletions(-) diff --git a/OneButtonPromptNodes.py b/OneButtonPromptNodes.py index 3bf89ec..95f50e6 100644 --- a/OneButtonPromptNodes.py +++ b/OneButtonPromptNodes.py @@ -3,6 +3,7 @@ import os import folder_paths from datetime import datetime import uuid +import platform custom_nodes_path = os.path.join(folder_paths.base_path, "custom_nodes") onebuttonprompt_path = os.path.join(custom_nodes_path, "OneButtonPrompt") @@ -267,12 +268,15 @@ class CreatePromptVariant: # Let us create our own prompt saver. Not everyone has WAS installed class SavePromptToFile: def __init__(self): - pass + self.output_dir = folder_paths.get_output_directory() + self.type = "output" + self.prefix_append = "" @classmethod def INPUT_TYPES(s): return { "required": { + "filename_prefix": ("STRING", {"default": "Prompt"}), "positive_prompt": ("STRING",{"multiline": True}), "negative_prompt": ("STRING",{"multiline": True}), }, @@ -284,8 +288,61 @@ class SavePromptToFile: CATEGORY = "OneButtonPrompt" - def saveprompttofile(self, positive_prompt, negative_prompt): - + def saveprompttofile(self, positive_prompt, negative_prompt, filename_prefix): + # Some stuff for the prefix + filename_prefix += self.prefix_append + + # turns out there is some hardcoded stuff on saveimage we have to kind of repeat here + # Find the %date:yyyy-M-d% pattern using regular expression + pattern = r'%date:([^\%]+)%' + match = re.search(pattern, filename_prefix) + + if match: + # Extract the date format from the match + date_format = match.group(1) + + # Get the current date + current_date = datetime.now() + + # convert the ComfyUI standard into Python standard format. + # What a crazy way of doing this + # first lol, I got to make sure it doesn't overlap things + date_format = date_format.replace('M', 'X') + date_format = date_format.replace('m', 'Z') + + # This is so bad + + # lets make it even worse, it work differently on windows than in Linux + if(platform.system() == 'Windows'): + + date_format = date_format.replace('yyyy', '%Y') + date_format = date_format.replace('yy', '%#y') + date_format = date_format.replace('X', '%#m') + date_format = date_format.replace('d', '%#d') + date_format = date_format.replace('h', '%#H') + date_format = date_format.replace('Z', '%#M') + date_format = date_format.replace('s', '%#S') + else: + date_format = date_format.replace('yyyy', '%Y') + date_format = date_format.replace('yy', '%-y') + date_format = date_format.replace('X', '%-m') + date_format = date_format.replace('d', '%-d') + date_format = date_format.replace('h', '%-H') + date_format = date_format.replace('Z', '%-M') + date_format = date_format.replace('s', '%-S') + + + # Format the date using the extracted format + formatted_date = current_date.strftime(date_format) + + # Replace the matched pattern with the formatted date + filename_prefix = re.sub(pattern, formatted_date, filename_prefix) + + + + + full_output_folder, filename_short, counter, subfolder, filename_prefix = folder_paths.get_save_image_path(filename_prefix, self.output_dir) + # make the filename, from from a to the first comma # find the index of the first comma after "of a" or end of the prompt if(positive_prompt.find("of a ") != -1): @@ -297,8 +354,6 @@ class SavePromptToFile: start_index = 0 end_index = 128 - - # extract the desired substring using slicing filename = positive_prompt[start_index:end_index] @@ -310,6 +365,7 @@ class SavePromptToFile: filename = filename.replace("<", "") filename = filename.replace(">", "") filename = filename.replace(":", "_") + filename = filename.replace(".", "") filename = re.sub(r'[0-9]+', '', filename) safe_characters = set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.") @@ -321,15 +377,20 @@ class SavePromptToFile: if(filename==""): filename = str(uuid.uuid4()) + if(filename_prefix == ""): # create a datetime object for the current date and time - now = datetime.now() - filenamecomplete = now.strftime("%Y%m%d%H%M%S") + "_" + filename.replace(" ", "_").strip() + ".txt" - + # if there is no prefix + now = datetime.now() + filenamecomplete = now.strftime("%Y%m%d%H%M%S") + "_" + filename.replace(" ", "_").strip() + ".txt" - # Get the output folder from comfy - output_directory = folder_paths.output_directory + else: + # lol since we insert a file, the counter of the image goes up by 1. + # So we add 1 here, so the prompt file matches the image file + formatted_counter = str(counter + 1).zfill(5) + filenamecomplete = filename_short + "_" + formatted_counter + "_" + filename.replace(" ", "_").strip() + ".txt" + - directoryandfilename = os.path.abspath(os.path.join(output_directory, filenamecomplete)) + directoryandfilename = os.path.abspath(os.path.join(full_output_folder, filenamecomplete)) with open(directoryandfilename, 'w', encoding="utf-8") as file: diff --git a/csvfiles/templates/styles.csv b/csvfiles/templates/styles.csv index 5f4672a..b5dbd42 100644 --- a/csvfiles/templates/styles.csv +++ b/csvfiles/templates/styles.csv @@ -103,4 +103,6 @@ iphone photo -subject-, large depth of field, deep depth of field, highly detai long exposure photo of -subject-, Blurred motion, streaks of light, surreal, dreamy, ghosting effect, highly detailed neon noir -subject-, cyberpunk, dark, rainy streets, neon signs, high contrast, low light, vibrant, highly detailed silhouette style -subject-, high contrast, minimalistic, black and white, stark, dramatic -tilt-shift photo of -subject-, selective focus, miniature effect, blurred background, highly detailed, vibrant, perspective control \ No newline at end of file +tilt-shift photo of -subject-, selective focus, miniature effect, blurred background, highly detailed, vibrant, perspective control +Vintage tattoo flash style of -subject-, Traditional motifs, bright colors, bold outlines, roses, snakes, nautical, old school tattoo artwork +Vintage tattoo flash print of -subject-, Sailor Jerry style, nautical themes, retro pin-up, aquatint \ No newline at end of file diff --git a/main.py b/main.py index c40ccbc..799284a 100644 --- a/main.py +++ b/main.py @@ -159,6 +159,7 @@ def generateimages(amount = 1, size = "all",model = "currently selected model",s filename = filename.replace("<", "") filename = filename.replace(">", "") filename = filename.replace(":", "_") + filename = filename.replace(".", "") filename = re.sub(r'[0-9]+', '', filename) safe_characters = set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.") From b89a5eeb7ea1549eecb20c5683649fc11e4bf811 Mon Sep 17 00:00:00 2001 From: AIrjen Date: Sat, 19 Aug 2023 09:01:52 +0200 Subject: [PATCH 4/5] Update onebuttonprompt.py --- scripts/onebuttonprompt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/onebuttonprompt.py b/scripts/onebuttonprompt.py index 593af76..d2663f3 100644 --- a/scripts/onebuttonprompt.py +++ b/scripts/onebuttonprompt.py @@ -456,7 +456,7 @@ class Script(scripts.Script): 16. subject only mode --> Will only generate a subject, with no additional frills. - 17. fixed styles mode --> Generate a subject on top of a fixed style. Credits to Triple Headed Monkey. Go check his stuff out! + 17. fixed styles mode --> Generate a subject on top of a fixed style. ### One in X chance to use special image type mode From bf6ec3720c4deb9118990d089df9ce8daa42266c Mon Sep 17 00:00:00 2001 From: AIrjen Date: Sat, 19 Aug 2023 09:19:48 +0200 Subject: [PATCH 5/5] Added comfyUI workflow examples --- .../SDXL_Insanity_Variants.json | 2909 +++++++++++++++++ .../SDXL_OBP_Refiner.json | 1768 ++++++++++ .../SDX_OBP_NoRefiner.json | 1183 +++++++ 3 files changed, 5860 insertions(+) create mode 100644 comfyui_workflow_examples/SDXL_Insanity_Variants.json create mode 100644 comfyui_workflow_examples/SDXL_OBP_Refiner.json create mode 100644 comfyui_workflow_examples/SDX_OBP_NoRefiner.json diff --git a/comfyui_workflow_examples/SDXL_Insanity_Variants.json b/comfyui_workflow_examples/SDXL_Insanity_Variants.json new file mode 100644 index 0000000..a6116ea --- /dev/null +++ b/comfyui_workflow_examples/SDXL_Insanity_Variants.json @@ -0,0 +1,2909 @@ +{ + "last_node_id": 249, + "last_link_id": 391, + "nodes": [ + { + "id": 226, + "type": "CLIPTextEncodeSDXL", + "pos": [ + 647, + 1163 + ], + "size": { + "0": 210, + "1": 241.0738983154297 + }, + "flags": { + "collapsed": false + }, + "order": 25, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 338 + }, + { + "name": "text_g", + "type": "STRING", + "link": 333, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + }, + "slot_index": 1 + }, + { + "name": "text_l", + "type": "STRING", + "link": 334, + "widget": { + "name": "text_l", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_L" + } + ] + }, + "slot_index": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 343 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXL POS", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXL" + }, + "widgets_values": [ + 4096, + 4096, + 0, + 0, + 4096, + 4096, + "xxx ", + "xxx " + ] + }, + { + "id": 225, + "type": "CLIPTextEncodeSDXL", + "pos": [ + 647, + 871 + ], + "size": { + "0": 210, + "1": 241.0738983154297 + }, + "flags": { + "collapsed": false + }, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 337 + }, + { + "name": "text_g", + "type": "STRING", + "link": 331, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + }, + "slot_index": 1 + }, + { + "name": "text_l", + "type": "STRING", + "link": 332, + "widget": { + "name": "text_l", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_L" + } + ] + }, + "slot_index": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 344 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXL POS", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXL" + }, + "widgets_values": [ + 4096, + 4096, + 0, + 0, + 4096, + 4096, + "xxx ", + "xxx " + ] + }, + { + "id": 224, + "type": "CLIPTextEncodeSDXL", + "pos": [ + 655, + 584 + ], + "size": { + "0": 210, + "1": 241.0738983154297 + }, + "flags": { + "collapsed": false + }, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 336 + }, + { + "name": "text_g", + "type": "STRING", + "link": 329, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + }, + "slot_index": 1 + }, + { + "name": "text_l", + "type": "STRING", + "link": 330, + "widget": { + "name": "text_l", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_L" + } + ] + }, + "slot_index": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 347 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXL POS", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXL" + }, + "widgets_values": [ + 4096, + 4096, + 0, + 0, + 4096, + 4096, + "xxx ", + "xxx " + ] + }, + { + "id": 237, + "type": "SaveImage", + "pos": [ + 2108, + 666 + ], + "size": [ + 565.774658203125, + 596.3757934570312 + ], + "flags": {}, + "order": 40, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 373 + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 387, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "ComfyUI" + } + ] + } + } + ], + "properties": {}, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI" + ], + "color": "#222", + "bgcolor": "#000" + }, + { + "id": 236, + "type": "SaveImage", + "pos": [ + 2102, + 47 + ], + "size": [ + 565.774658203125, + 596.3757934570312 + ], + "flags": {}, + "order": 39, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 372 + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 386, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "ComfyUI" + } + ] + } + } + ], + "properties": {}, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI" + ], + "color": "#222", + "bgcolor": "#000" + }, + { + "id": 235, + "type": "SaveImage", + "pos": [ + 2113, + -608 + ], + "size": [ + 565.774658203125, + 596.3757934570312 + ], + "flags": {}, + "order": 38, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 371 + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 385, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "ComfyUI" + } + ] + } + } + ], + "properties": {}, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI" + ], + "color": "#222", + "bgcolor": "#000" + }, + { + "id": 238, + "type": "SaveImage", + "pos": [ + 2114, + 1328 + ], + "size": [ + 565.774658203125, + 596.3757934570312 + ], + "flags": {}, + "order": 41, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 374 + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 388, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "ComfyUI" + } + ] + } + } + ], + "properties": {}, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI" + ], + "color": "#222", + "bgcolor": "#000" + }, + { + "id": 200, + "type": "Note", + "pos": [ + -543, + -281 + ], + "size": { + "0": 260, + "1": 210 + }, + "flags": {}, + "order": 0, + "mode": 0, + "title": "Note - Empty Latent Image", + "properties": { + "text": "" + }, + "widgets_values": [ + "This node sets the image's resolution in Width and Height.\n\nNOTE: For SDXL, it is recommended to use trained values listed below:\n - 1024 x 1024\n - 1152 x 896\n - 896 x 1152\n - 1216 x 832\n - 832 x 1216\n - 1344 x 768\n - 768 x 1344\n - 1536 x 640\n - 640 x 1536" + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 65, + "type": "CLIPTextEncodeSDXL", + "pos": [ + 647, + -17 + ], + "size": { + "0": 212.1192169189453, + "1": 240.16322326660156 + }, + "flags": { + "collapsed": false + }, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 284 + }, + { + "name": "text_g", + "type": "STRING", + "link": 139, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + } + }, + { + "name": "text_l", + "type": "STRING", + "link": 308, + "widget": { + "name": "text_l", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_L" + } + ] + }, + "slot_index": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 200, + 339, + 341, + 342, + 349 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXL NEG", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXL" + }, + "widgets_values": [ + 4096, + 4096, + 0, + 0, + 4096, + 4096, + "text, watermark", + "text, watermark" + ] + }, + { + "id": 227, + "type": "KSamplerAdvanced", + "pos": [ + 1112, + -149 + ], + "size": { + "0": 318.23089599609375, + "1": 316.8831481933594 + }, + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 350 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 348 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 339 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 354 + }, + { + "name": "noise_seed", + "type": "INT", + "link": 355, + "widget": { + "name": "noise_seed", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 18446744073709552000 + } + ] + }, + "slot_index": 6 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 367 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "KSampler BASE (Advanced)", + "properties": { + "Node name for S&R": "KSamplerAdvanced" + }, + "widgets_values": [ + "enable", + 849260613831394, + "fixed", + 30, + 8, + "dpmpp_2m", + "karras", + 0, + 30, + "enable" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 228, + "type": "KSamplerAdvanced", + "pos": [ + 1087, + 302 + ], + "size": { + "0": 318.23089599609375, + "1": 316.8831481933594 + }, + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 351 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 347 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 349 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 359 + }, + { + "name": "noise_seed", + "type": "INT", + "link": 356, + "widget": { + "name": "noise_seed", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 18446744073709552000 + } + ] + }, + "slot_index": 6 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 368 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "KSampler BASE (Advanced)", + "properties": { + "Node name for S&R": "KSamplerAdvanced" + }, + "widgets_values": [ + "enable", + 849260613831394, + "fixed", + 30, + 8, + "dpmpp_2m", + "karras", + 0, + 30, + "enable" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 223, + "type": "CLIPTextEncodeSDXL", + "pos": [ + 651, + 289 + ], + "size": { + "0": 210, + "1": 241.0738983154297 + }, + "flags": { + "collapsed": false + }, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 335 + }, + { + "name": "text_g", + "type": "STRING", + "link": 326, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + }, + "slot_index": 1 + }, + { + "name": "text_l", + "type": "STRING", + "link": 327, + "widget": { + "name": "text_l", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_L" + } + ] + }, + "slot_index": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 348 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXL POS", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXL" + }, + "widgets_values": [ + 4096, + 4096, + 0, + 0, + 4096, + 4096, + "xxx ", + "xxx " + ] + }, + { + "id": 50, + "type": "CLIPTextEncodeSDXL", + "pos": [ + 647, + -315 + ], + "size": { + "0": 210, + "1": 241.0738983154297 + }, + "flags": { + "collapsed": false + }, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 283 + }, + { + "name": "text_g", + "type": "STRING", + "link": 320, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + }, + "slot_index": 1 + }, + { + "name": "text_l", + "type": "STRING", + "link": 321, + "widget": { + "name": "text_l", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_L" + } + ] + }, + "slot_index": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 199 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXL POS", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXL" + }, + "widgets_values": [ + 4096, + 4096, + 0, + 0, + 4096, + 4096, + "(masterpiece), (extremely intricate:1.3),, (realistic), portrait of a girl, the most beautiful in the world, (medieval armor), metal reflections, upper body, outdoors, intense sunlight, far away castle, professional photograph of a stunning woman detailed, sharp focus, dramatic, award winning, cinematic lighting, octane render, unreal engine, volumetrics dtx, (film grain, bokeh, blurry foreground, blurry background), crest on chest", + "(masterpiece), (extremely intricate:1.3),, (realistic), portrait of a girl, the most beautiful in the world, (medieval armor), metal reflections, upper body, outdoors, intense sunlight, far away castle, professional photograph of a stunning woman detailed, sharp focus, dramatic, award winning, cinematic lighting, octane render, unreal engine, volumetrics dtx, (film grain, bokeh, blurry foreground, blurry background), crest on chest" + ] + }, + { + "id": 220, + "type": "CreatePromptVariant", + "pos": [ + -52, + 539 + ], + "size": { + "0": 400, + "1": 200 + }, + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "prompt_input", + "type": "STRING", + "link": 322, + "widget": { + "name": "prompt_input", + "config": [ + "STRING", + { + "default": "", + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "prompt", + "type": "STRING", + "links": [ + 329, + 330, + 378 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CreatePromptVariant" + }, + "widgets_values": [ + "(masterpiece), (extremely intricate:1.3),, (realistic), portrait of a girl, the most beautiful in the world, (medieval armor), metal reflections, upper body, outdoors, intense sunlight, far away castle, professional photograph of a stunning woman detailed, sharp focus, dramatic, award winning, cinematic lighting, octane render, unreal engine, volumetrics dtx, (film grain, bokeh, blurry foreground, blurry background), crest on chest", + 6, + 803093632424444, + "randomize" + ] + }, + { + "id": 229, + "type": "KSamplerAdvanced", + "pos": [ + 1070, + 775 + ], + "size": { + "0": 318.23089599609375, + "1": 316.8831481933594 + }, + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 352 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 344 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 341 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 360 + }, + { + "name": "noise_seed", + "type": "INT", + "link": 357, + "widget": { + "name": "noise_seed", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 18446744073709552000 + } + ] + }, + "slot_index": 6 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 369 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "KSampler BASE (Advanced)", + "properties": { + "Node name for S&R": "KSamplerAdvanced" + }, + "widgets_values": [ + "enable", + 849260613831394, + "fixed", + 30, + 8, + "dpmpp_2m", + "karras", + 0, + 30, + "enable" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 139, + "type": "KSamplerAdvanced", + "pos": [ + 1129, + -587 + ], + "size": { + "0": 318.23089599609375, + "1": 316.8831481933594 + }, + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 281 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 199 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 200 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 279 + }, + { + "name": "noise_seed", + "type": "INT", + "link": 235, + "widget": { + "name": "noise_seed", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 18446744073709552000 + } + ] + }, + "slot_index": 6 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 362 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "KSampler BASE (Advanced)", + "properties": { + "Node name for S&R": "KSamplerAdvanced" + }, + "widgets_values": [ + "enable", + 849260613831394, + "fixed", + 30, + 8, + "dpmpp_2m", + "karras", + 0, + 30, + "enable" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 230, + "type": "KSamplerAdvanced", + "pos": [ + 1070, + 1192 + ], + "size": { + "0": 318.23089599609375, + "1": 316.8831481933594 + }, + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 353 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 343 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 342 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 361 + }, + { + "name": "noise_seed", + "type": "INT", + "link": 358, + "widget": { + "name": "noise_seed", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 18446744073709552000 + } + ] + }, + "slot_index": 6 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 370 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "KSampler BASE (Advanced)", + "properties": { + "Node name for S&R": "KSamplerAdvanced" + }, + "widgets_values": [ + "enable", + 849260613831394, + "fixed", + 30, + 8, + "dpmpp_2m", + "karras", + 0, + 30, + "enable" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 234, + "type": "VAEDecode", + "pos": [ + 1673, + 1390 + ], + "size": { + "0": 148.75479125976562, + "1": 102.28533172607422 + }, + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 370 + }, + { + "name": "vae", + "type": "VAE", + "link": 366 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 374 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "VAE Dec. Final", + "properties": { + "Node name for S&R": "VAEDecode" + } + }, + { + "id": 233, + "type": "VAEDecode", + "pos": [ + 1675, + 925 + ], + "size": { + "0": 148.75479125976562, + "1": 102.28533172607422 + }, + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 369 + }, + { + "name": "vae", + "type": "VAE", + "link": 365 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 373 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "VAE Dec. Final", + "properties": { + "Node name for S&R": "VAEDecode" + } + }, + { + "id": 232, + "type": "VAEDecode", + "pos": [ + 1682, + 404 + ], + "size": { + "0": 148.75479125976562, + "1": 102.28533172607422 + }, + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 368 + }, + { + "name": "vae", + "type": "VAE", + "link": 364 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 372 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "VAE Dec. Final", + "properties": { + "Node name for S&R": "VAEDecode" + } + }, + { + "id": 231, + "type": "VAEDecode", + "pos": [ + 1685, + -61 + ], + "size": { + "0": 148.75479125976562, + "1": 102.28533172607422 + }, + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 367 + }, + { + "name": "vae", + "type": "VAE", + "link": 363 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 371 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "VAE Dec. Final", + "properties": { + "Node name for S&R": "VAEDecode" + } + }, + { + "id": 146, + "type": "VAEDecode", + "pos": [ + 1696, + -629 + ], + "size": { + "0": 148.75479125976562, + "1": 102.28533172607422 + }, + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 362 + }, + { + "name": "vae", + "type": "VAE", + "link": 316 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 286 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "VAE Dec. Final", + "properties": { + "Node name for S&R": "VAEDecode" + } + }, + { + "id": 240, + "type": "SavePromptToFile", + "pos": [ + -546, + 803 + ], + "size": [ + 434.79107666015625, + 78 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "positive_prompt", + "type": "STRING", + "link": 378, + "widget": { + "name": "positive_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + }, + { + "name": "negative_prompt", + "type": "STRING", + "link": 380, + "widget": { + "name": "negative_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 391, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "Prompt" + } + ] + } + } + ], + "properties": { + "Node name for S&R": "SavePromptToFile" + }, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI", + "", + "text, watermark" + ] + }, + { + "id": 241, + "type": "SavePromptToFile", + "pos": [ + -542, + 1057 + ], + "size": [ + 427.570068359375, + 78 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "positive_prompt", + "type": "STRING", + "link": 377, + "widget": { + "name": "positive_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + }, + { + "name": "negative_prompt", + "type": "STRING", + "link": 381, + "widget": { + "name": "negative_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 390, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "Prompt" + } + ] + } + } + ], + "properties": { + "Node name for S&R": "SavePromptToFile" + }, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI", + "", + "text, watermark" + ] + }, + { + "id": 242, + "type": "SavePromptToFile", + "pos": [ + -538, + 1256 + ], + "size": [ + 426.79107666015625, + 78 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "positive_prompt", + "type": "STRING", + "link": 376, + "widget": { + "name": "positive_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + }, + { + "name": "negative_prompt", + "type": "STRING", + "link": 382, + "widget": { + "name": "negative_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 389, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "Prompt" + } + ] + } + } + ], + "properties": { + "Node name for S&R": "SavePromptToFile" + }, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI", + "", + "text, watermark" + ] + }, + { + "id": 16, + "type": "PrimitiveNode", + "pos": [ + -552, + 270 + ], + "size": { + "0": 434.15277099609375, + "1": 152.36099243164062 + }, + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 139, + 308, + 379, + 380, + 381, + 382 + ], + "slot_index": 0, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + } + } + ], + "title": "Negative Prompt", + "properties": {}, + "widgets_values": [ + "text, watermark" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 5, + "type": "EmptyLatentImage", + "pos": [ + -38, + -53 + ], + "size": { + "0": 210, + "1": 106 + }, + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 279, + 354, + 359, + 360, + 361 + ], + "slot_index": 0 + } + ], + "title": "Image and batch size", + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [ + 1024, + 1024, + 1 + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 159, + "type": "PrimitiveNode", + "pos": [ + -29, + -204 + ], + "size": { + "0": 210, + "1": 82 + }, + "flags": {}, + "order": 3, + "mode": 0, + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 235, + 355, + 356, + 357, + 358 + ], + "widget": { + "name": "noise_seed", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 18446744073709552000 + } + ] + }, + "slot_index": 0 + } + ], + "title": "Seed", + "properties": {}, + "widgets_values": [ + 499433161649464, + "randomize" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 218, + "type": "PrimitiveNode", + "pos": [ + -546, + 2 + ], + "size": { + "0": 430, + "1": 190 + }, + "flags": {}, + "order": 4, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 319, + 320, + 321, + 322, + 323, + 324 + ], + "widget": { + "name": "prompt_input", + "config": [ + "STRING", + { + "default": "", + "multiline": true + } + ] + }, + "slot_index": 0 + } + ], + "title": "Positive Prompt", + "properties": {}, + "widgets_values": [ + "(masterpiece), (extremely intricate:1.3),, (realistic), portrait of a girl, the most beautiful in the world, (medieval armor), metal reflections, upper body, outdoors, intense sunlight, far away castle, professional photograph of a stunning woman detailed, sharp focus, dramatic, award winning, cinematic lighting, octane render, unreal engine, volumetrics dtx, (film grain, bokeh, blurry foreground, blurry background), crest on chest" + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 4, + "type": "CheckpointLoaderSimple", + "pos": [ + -44, + 121 + ], + "size": { + "0": 320.0830383300781, + "1": 101.19705200195312 + }, + "flags": {}, + "order": 5, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 281, + 350, + 351, + 352, + 353 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 283, + 284, + 335, + 336, + 337, + 338 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 316, + 363, + 364, + 365, + 366 + ], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "sd_xl_base_1.0.safetensors" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 239, + "type": "SavePromptToFile", + "pos": [ + -546, + 546 + ], + "size": [ + 420.2964782714844, + 78 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "positive_prompt", + "type": "STRING", + "link": 375, + "widget": { + "name": "positive_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + }, + { + "name": "negative_prompt", + "type": "STRING", + "link": 379, + "widget": { + "name": "negative_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 383, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "Prompt" + } + ] + }, + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "SavePromptToFile" + }, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI", + "", + "text, watermark" + ] + }, + { + "id": 199, + "type": "SaveImage", + "pos": [ + 2117, + -1258 + ], + "size": [ + 565.774658203125, + 596.3757934570312 + ], + "flags": {}, + "order": 37, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 286 + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 384, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "ComfyUI" + } + ] + } + } + ], + "properties": {}, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI" + ], + "color": "#222", + "bgcolor": "#000" + }, + { + "id": 244, + "type": "Note", + "pos": [ + -547, + -434 + ], + "size": [ + 220, + 64.23999328613286 + ], + "flags": {}, + "order": 6, + "mode": 0, + "properties": { + "text": "" + }, + "widgets_values": [ + "Original workflow made by Blitzk241\n\nThank you!" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 243, + "type": "PrimitiveNode", + "pos": [ + -952, + 712 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 7, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391 + ], + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "Prompt" + } + ] + }, + "slot_index": 0 + } + ], + "title": "File Location", + "properties": {}, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 219, + "type": "CreatePromptVariant", + "pos": [ + -49, + 289 + ], + "size": { + "0": 400, + "1": 200 + }, + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "prompt_input", + "type": "STRING", + "link": 319, + "widget": { + "name": "prompt_input", + "config": [ + "STRING", + { + "default": "", + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "prompt", + "type": "STRING", + "links": [ + 326, + 327, + 375 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CreatePromptVariant" + }, + "widgets_values": [ + "(masterpiece), (extremely intricate:1.3),, (realistic), portrait of a girl, the most beautiful in the world, (medieval armor), metal reflections, upper body, outdoors, intense sunlight, far away castle, professional photograph of a stunning woman detailed, sharp focus, dramatic, award winning, cinematic lighting, octane render, unreal engine, volumetrics dtx, (film grain, bokeh, blurry foreground, blurry background), crest on chest", + 5, + 853062649844337, + "randomize" + ] + }, + { + "id": 245, + "type": "Note", + "pos": [ + 2763, + -1003 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 8, + "mode": 0, + "properties": { + "text": "" + }, + "widgets_values": [ + "Original" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 246, + "type": "Note", + "pos": [ + 2753, + -328 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 9, + "mode": 0, + "properties": { + "text": "" + }, + "widgets_values": [ + "Mid adjusted prompt variant (5)" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 247, + "type": "Note", + "pos": [ + 2727, + 300 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 10, + "mode": 0, + "properties": { + "text": "" + }, + "widgets_values": [ + "Mid adjusted prompt variant (6)" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 248, + "type": "Note", + "pos": [ + 2717, + 990 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 11, + "mode": 0, + "properties": { + "text": "" + }, + "widgets_values": [ + "Moderate adjusted prompt variant (8)" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 249, + "type": "Note", + "pos": [ + 2729, + 1545 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 12, + "mode": 0, + "properties": { + "text": "" + }, + "widgets_values": [ + "Heavy adjusted prompt variant (10)" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 222, + "type": "CreatePromptVariant", + "pos": [ + -47, + 1075 + ], + "size": { + "0": 400, + "1": 200 + }, + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "prompt_input", + "type": "STRING", + "link": 324, + "widget": { + "name": "prompt_input", + "config": [ + "STRING", + { + "default": "", + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "prompt", + "type": "STRING", + "links": [ + 333, + 334, + 376 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CreatePromptVariant" + }, + "widgets_values": [ + "(masterpiece), (extremely intricate:1.3),, (realistic), portrait of a girl, the most beautiful in the world, (medieval armor), metal reflections, upper body, outdoors, intense sunlight, far away castle, professional photograph of a stunning woman detailed, sharp focus, dramatic, award winning, cinematic lighting, octane render, unreal engine, volumetrics dtx, (film grain, bokeh, blurry foreground, blurry background), crest on chest", + 10, + 118819554845594, + "randomize" + ] + }, + { + "id": 221, + "type": "CreatePromptVariant", + "pos": [ + -49, + 796 + ], + "size": { + "0": 400, + "1": 200 + }, + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "prompt_input", + "type": "STRING", + "link": 323, + "widget": { + "name": "prompt_input", + "config": [ + "STRING", + { + "default": "", + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "prompt", + "type": "STRING", + "links": [ + 331, + 332, + 377 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CreatePromptVariant" + }, + "widgets_values": [ + "(masterpiece), (extremely intricate:1.3),, (realistic), portrait of a girl, the most beautiful in the world, (medieval armor), metal reflections, upper body, outdoors, intense sunlight, far away castle, professional photograph of a stunning woman detailed, sharp focus, dramatic, award winning, cinematic lighting, octane render, unreal engine, volumetrics dtx, (film grain, bokeh, blurry foreground, blurry background), crest on chest", + 8, + 813559333277591, + "randomize" + ] + } + ], + "links": [ + [ + 139, + 16, + 0, + 65, + 1, + "STRING" + ], + [ + 199, + 50, + 0, + 139, + 1, + "CONDITIONING" + ], + [ + 200, + 65, + 0, + 139, + 2, + "CONDITIONING" + ], + [ + 235, + 159, + 0, + 139, + 4, + "INT" + ], + [ + 279, + 5, + 0, + 139, + 3, + "LATENT" + ], + [ + 281, + 4, + 0, + 139, + 0, + "MODEL" + ], + [ + 283, + 4, + 1, + 50, + 0, + "CLIP" + ], + [ + 284, + 4, + 1, + 65, + 0, + "CLIP" + ], + [ + 286, + 146, + 0, + 199, + 0, + "IMAGE" + ], + [ + 308, + 16, + 0, + 65, + 2, + "STRING" + ], + [ + 316, + 4, + 2, + 146, + 1, + "VAE" + ], + [ + 319, + 218, + 0, + 219, + 0, + "STRING" + ], + [ + 320, + 218, + 0, + 50, + 1, + "STRING" + ], + [ + 321, + 218, + 0, + 50, + 2, + "STRING" + ], + [ + 322, + 218, + 0, + 220, + 0, + "STRING" + ], + [ + 323, + 218, + 0, + 221, + 0, + "STRING" + ], + [ + 324, + 218, + 0, + 222, + 0, + "STRING" + ], + [ + 326, + 219, + 0, + 223, + 1, + "STRING" + ], + [ + 327, + 219, + 0, + 223, + 2, + "STRING" + ], + [ + 329, + 220, + 0, + 224, + 1, + "STRING" + ], + [ + 330, + 220, + 0, + 224, + 2, + "STRING" + ], + [ + 331, + 221, + 0, + 225, + 1, + "STRING" + ], + [ + 332, + 221, + 0, + 225, + 2, + "STRING" + ], + [ + 333, + 222, + 0, + 226, + 1, + "STRING" + ], + [ + 334, + 222, + 0, + 226, + 2, + "STRING" + ], + [ + 335, + 4, + 1, + 223, + 0, + "CLIP" + ], + [ + 336, + 4, + 1, + 224, + 0, + "CLIP" + ], + [ + 337, + 4, + 1, + 225, + 0, + "CLIP" + ], + [ + 338, + 4, + 1, + 226, + 0, + "CLIP" + ], + [ + 339, + 65, + 0, + 227, + 2, + "CONDITIONING" + ], + [ + 341, + 65, + 0, + 229, + 2, + "CONDITIONING" + ], + [ + 342, + 65, + 0, + 230, + 2, + "CONDITIONING" + ], + [ + 343, + 226, + 0, + 230, + 1, + "CONDITIONING" + ], + [ + 344, + 225, + 0, + 229, + 1, + "CONDITIONING" + ], + [ + 347, + 224, + 0, + 228, + 1, + "CONDITIONING" + ], + [ + 348, + 223, + 0, + 227, + 1, + "CONDITIONING" + ], + [ + 349, + 65, + 0, + 228, + 2, + "CONDITIONING" + ], + [ + 350, + 4, + 0, + 227, + 0, + "MODEL" + ], + [ + 351, + 4, + 0, + 228, + 0, + "MODEL" + ], + [ + 352, + 4, + 0, + 229, + 0, + "MODEL" + ], + [ + 353, + 4, + 0, + 230, + 0, + "MODEL" + ], + [ + 354, + 5, + 0, + 227, + 3, + "LATENT" + ], + [ + 355, + 159, + 0, + 227, + 4, + "INT" + ], + [ + 356, + 159, + 0, + 228, + 4, + "INT" + ], + [ + 357, + 159, + 0, + 229, + 4, + "INT" + ], + [ + 358, + 159, + 0, + 230, + 4, + "INT" + ], + [ + 359, + 5, + 0, + 228, + 3, + "LATENT" + ], + [ + 360, + 5, + 0, + 229, + 3, + "LATENT" + ], + [ + 361, + 5, + 0, + 230, + 3, + "LATENT" + ], + [ + 362, + 139, + 0, + 146, + 0, + "LATENT" + ], + [ + 363, + 4, + 2, + 231, + 1, + "VAE" + ], + [ + 364, + 4, + 2, + 232, + 1, + "VAE" + ], + [ + 365, + 4, + 2, + 233, + 1, + "VAE" + ], + [ + 366, + 4, + 2, + 234, + 1, + "VAE" + ], + [ + 367, + 227, + 0, + 231, + 0, + "LATENT" + ], + [ + 368, + 228, + 0, + 232, + 0, + "LATENT" + ], + [ + 369, + 229, + 0, + 233, + 0, + "LATENT" + ], + [ + 370, + 230, + 0, + 234, + 0, + "LATENT" + ], + [ + 371, + 231, + 0, + 235, + 0, + "IMAGE" + ], + [ + 372, + 232, + 0, + 236, + 0, + "IMAGE" + ], + [ + 373, + 233, + 0, + 237, + 0, + "IMAGE" + ], + [ + 374, + 234, + 0, + 238, + 0, + "IMAGE" + ], + [ + 375, + 219, + 0, + 239, + 0, + "STRING" + ], + [ + 376, + 222, + 0, + 242, + 0, + "STRING" + ], + [ + 377, + 221, + 0, + 241, + 0, + "STRING" + ], + [ + 378, + 220, + 0, + 240, + 0, + "STRING" + ], + [ + 379, + 16, + 0, + 239, + 1, + "STRING" + ], + [ + 380, + 16, + 0, + 240, + 1, + "STRING" + ], + [ + 381, + 16, + 0, + 241, + 1, + "STRING" + ], + [ + 382, + 16, + 0, + 242, + 1, + "STRING" + ], + [ + 383, + 243, + 0, + 239, + 2, + "STRING" + ], + [ + 384, + 243, + 0, + 199, + 1, + "STRING" + ], + [ + 385, + 243, + 0, + 235, + 1, + "STRING" + ], + [ + 386, + 243, + 0, + 236, + 1, + "STRING" + ], + [ + 387, + 243, + 0, + 237, + 1, + "STRING" + ], + [ + 388, + 243, + 0, + 238, + 1, + "STRING" + ], + [ + 389, + 243, + 0, + 242, + 2, + "STRING" + ], + [ + 390, + 243, + 0, + 241, + 2, + "STRING" + ], + [ + 391, + 243, + 0, + 240, + 2, + "STRING" + ] + ], + "groups": [], + "config": {}, + "extra": {}, + "version": 0.4 +} \ No newline at end of file diff --git a/comfyui_workflow_examples/SDXL_OBP_Refiner.json b/comfyui_workflow_examples/SDXL_OBP_Refiner.json new file mode 100644 index 0000000..753bfd4 --- /dev/null +++ b/comfyui_workflow_examples/SDXL_OBP_Refiner.json @@ -0,0 +1,1768 @@ +{ + "last_node_id": 221, + "last_link_id": 319, + "nodes": [ + { + "id": 39, + "type": "Reroute", + "pos": [ + 110, + 474.09573998280234 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 65 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 130 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 41, + "type": "Reroute", + "pos": [ + 110, + 466.09573998280246 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 234 + } + ], + "outputs": [ + { + "name": "", + "type": "LATENT", + "links": [ + 224 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 40, + "type": "Reroute", + "pos": [ + 274.07408706902226, + 491.0957399828021 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 130, + "slot_index": 0 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 38, + "type": "Reroute", + "pos": [ + 257.0740870690228, + 324.0957399828027 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 61 + } + ], + "outputs": [ + { + "name": "", + "type": "MODEL", + "links": [ + 207 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 73, + "type": "Reroute", + "pos": [ + 260.0740870690228, + 371.09573998280234 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 129 + } + ], + "outputs": [ + { + "name": "", + "type": "CLIP", + "links": [ + 127, + 128 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 65, + "type": "CLIPTextEncodeSDXL", + "pos": [ + 0, + 172 + ], + "size": { + "0": 212.1192169189453, + "1": 240.16322326660156 + }, + "flags": { + "collapsed": false + }, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 284 + }, + { + "name": "text_g", + "type": "STRING", + "link": 139, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + } + }, + { + "name": "text_l", + "type": "STRING", + "link": 308, + "widget": { + "name": "text_l", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_L" + } + ] + }, + "slot_index": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 200 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXL NEG", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXL" + }, + "widgets_values": [ + 4096, + 4096, + 0, + 0, + 4096, + 4096, + "text, watermark", + "text, watermark" + ] + }, + { + "id": 50, + "type": "CLIPTextEncodeSDXL", + "pos": [ + -229, + 172 + ], + "size": { + "0": 210, + "1": 241.0738983154297 + }, + "flags": { + "collapsed": false + }, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 283 + }, + { + "name": "text_g", + "type": "STRING", + "link": 305, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + }, + "slot_index": 1 + }, + { + "name": "text_l", + "type": "STRING", + "link": 306, + "widget": { + "name": "text_l", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_L" + } + ] + }, + "slot_index": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 199 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXL POS", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXL" + }, + "widgets_values": [ + 4096, + 4096, + 0, + 0, + 4096, + 4096, + "xxx ", + "xxx " + ] + }, + { + "id": 139, + "type": "KSamplerAdvanced", + "pos": [ + -558, + 468 + ], + "size": { + "0": 318.23089599609375, + "1": 316.8831481933594 + }, + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 281 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 199 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 200 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 279 + }, + { + "name": "steps", + "type": "INT", + "link": 225, + "widget": { + "name": "steps", + "config": [ + "INT", + { + "default": 20, + "min": 1, + "max": 10000 + } + ] + } + }, + { + "name": "end_at_step", + "type": "INT", + "link": 228, + "widget": { + "name": "end_at_step", + "config": [ + "INT", + { + "default": 10000, + "min": 0, + "max": 10000 + } + ] + } + }, + { + "name": "noise_seed", + "type": "INT", + "link": 235, + "widget": { + "name": "noise_seed", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 18446744073709552000 + } + ] + }, + "slot_index": 6 + }, + { + "name": "cfg", + "type": "FLOAT", + "link": 237, + "widget": { + "name": "cfg", + "config": [ + "FLOAT", + { + "default": 8, + "min": 0, + "max": 100 + } + ] + }, + "slot_index": 7 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 234 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "KSampler BASE (Advanced)", + "properties": { + "Node name for S&R": "KSamplerAdvanced" + }, + "widgets_values": [ + "enable", + 186488958305883, + "fixed", + 30, + 8, + "dpmpp_2m", + "karras", + 0, + 24, + "enable" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 160, + "type": "PrimitiveNode", + "pos": [ + -794.9259129309752, + 569.0957399828028 + ], + "size": { + "0": 210, + "1": 82 + }, + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 237 + ], + "widget": { + "name": "cfg", + "config": [ + "FLOAT", + { + "default": 8, + "min": 0, + "max": 100 + } + ] + } + } + ], + "title": "CFG Scale", + "properties": {}, + "widgets_values": [ + 8, + "fixed" + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 71, + "type": "CLIPTextEncodeSDXLRefiner", + "pos": [ + 110, + 630 + ], + "size": { + "0": 266.3204040527344, + "1": 152.06405639648438 + }, + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 128 + }, + { + "name": "text", + "type": "STRING", + "link": 309, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + }, + "slot_index": 1 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 209 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXLRefiner NEG", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXLRefiner" + }, + "widgets_values": [ + 2.5, + 4096, + 4096, + "text, watermark" + ] + }, + { + "id": 5, + "type": "EmptyLatentImage", + "pos": [ + -794.9259129309752, + 422 + ], + "size": { + "0": 210, + "1": 106 + }, + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 279 + ], + "slot_index": 0 + } + ], + "title": "Image and batch size", + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [ + 1024, + 1024, + 1 + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 211, + "type": "VAELoader", + "pos": [ + -212, + -50 + ], + "size": { + "0": 315, + "1": 58 + }, + "flags": {}, + "order": 2, + "mode": 0, + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 303 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "sdxl_vae.safetensors" + ] + }, + { + "id": 142, + "type": "KSamplerAdvanced", + "pos": [ + -230, + 464.09161376953125 + ], + "size": { + "0": 323.92498779296875, + "1": 317.9724426269531 + }, + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 207 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 208 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 209 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 224 + }, + { + "name": "steps", + "type": "INT", + "link": 226, + "widget": { + "name": "steps", + "config": [ + "INT", + { + "default": 20, + "min": 1, + "max": 10000 + } + ] + } + }, + { + "name": "start_at_step", + "type": "INT", + "link": 229, + "widget": { + "name": "start_at_step", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 10000 + } + ] + } + }, + { + "name": "noise_seed", + "type": "INT", + "link": 236, + "widget": { + "name": "noise_seed", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 18446744073709552000 + } + ] + } + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 217 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "KSampler REFINER (Advanced)", + "properties": { + "Node name for S&R": "KSamplerAdvanced" + }, + "widgets_values": [ + "disable", + 186488958305883, + "fixed", + 30, + 8, + "dpmpp_2m", + "karras", + 24, + 1000, + "disable" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 152, + "type": "PrimitiveNode", + "pos": [ + -795, + 297 + ], + "size": { + "0": 210, + "1": 82 + }, + "flags": {}, + "order": 3, + "mode": 0, + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 225, + 226 + ], + "slot_index": 0, + "widget": { + "name": "steps", + "config": [ + "INT", + { + "default": 20, + "min": 1, + "max": 10000 + } + ] + } + } + ], + "title": "Total Steps (Base + Ref.)", + "properties": {}, + "widgets_values": [ + 30, + "fixed" + ], + "color": "#233", + "bgcolor": "#355" + }, + { + "id": 155, + "type": "PrimitiveNode", + "pos": [ + -795, + 172 + ], + "size": { + "0": 210, + "1": 82 + }, + "flags": {}, + "order": 4, + "mode": 0, + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 228, + 229 + ], + "slot_index": 0, + "widget": { + "name": "end_at_step", + "config": [ + "INT", + { + "default": 10000, + "min": 0, + "max": 10000 + } + ] + } + } + ], + "title": "Steps On Base Model", + "properties": {}, + "widgets_values": [ + 24, + "fixed" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 159, + "type": "PrimitiveNode", + "pos": [ + -794.9259129309752, + 700.0640563964844 + ], + "size": { + "0": 210, + "1": 82 + }, + "flags": {}, + "order": 5, + "mode": 0, + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 235, + 236 + ], + "widget": { + "name": "noise_seed", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 18446744073709552000 + } + ] + }, + "slot_index": 0 + } + ], + "title": "Seed", + "properties": {}, + "widgets_values": [ + 982453438627869, + "randomize" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 70, + "type": "CLIPTextEncodeSDXLRefiner", + "pos": [ + 104, + 458 + ], + "size": { + "0": 272.86651611328125, + "1": 126 + }, + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 127 + }, + { + "name": "text", + "type": "STRING", + "link": 307, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + }, + "slot_index": 1 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 208 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXLRefiner POS", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXLRefiner" + }, + "widgets_values": [ + 6, + 4096, + 4096, + "xxx " + ] + }, + { + "id": 146, + "type": "VAEDecode", + "pos": [ + 206, + 31 + ], + "size": { + "0": 148.75479125976562, + "1": 102.28533172607422 + }, + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 217 + }, + { + "name": "vae", + "type": "VAE", + "link": 303 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 286 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "VAE Dec. Final", + "properties": { + "Node name for S&R": "VAEDecode" + } + }, + { + "id": 215, + "type": "PrimitiveNode", + "pos": [ + -1081, + -244 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": { + "collapsed": false + }, + "order": 7, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 311 + ], + "slot_index": 0, + "widget": { + "name": "custom_subject", + "config": [ + "STRING", + { + "multiline": false, + "default": "" + } + ] + } + } + ], + "title": "Overwrite Subject", + "properties": {}, + "widgets_values": [ + "" + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 200, + "type": "Note", + "pos": [ + -1080, + 437 + ], + "size": { + "0": 260, + "1": 210 + }, + "flags": {}, + "order": 8, + "mode": 0, + "title": "Note - Empty Latent Image", + "properties": { + "text": "" + }, + "widgets_values": [ + "This node sets the image's resolution in Width and Height.\n\nNOTE: For SDXL, it is recommended to use trained values listed below:\n - 1024 x 1024\n - 1152 x 896\n - 896 x 1152\n - 1216 x 832\n - 832 x 1216\n - 1344 x 768\n - 768 x 1344\n - 1536 x 640\n - 640 x 1536" + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 199, + "type": "SaveImage", + "pos": [ + 404, + 202 + ], + "size": [ + 565.774658203125, + 596.3757934570312 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 286 + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 319, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "ComfyUI" + } + ] + } + } + ], + "properties": {}, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI" + ], + "color": "#222", + "bgcolor": "#000" + }, + { + "id": 11, + "type": "CheckpointLoaderSimple", + "pos": [ + -570, + 320 + ], + "size": { + "0": 320, + "1": 100 + }, + "flags": { + "collapsed": false + }, + "order": 10, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 61 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 129 + ], + "shape": 3, + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 65 + ], + "shape": 3, + "slot_index": 2 + } + ], + "title": "Load Checkpoint (refiner)", + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "sd_xl_refiner_1.0.safetensors" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 4, + "type": "CheckpointLoaderSimple", + "pos": [ + -570, + 175 + ], + "size": { + "0": 320.0830383300781, + "1": 101.19705200195312 + }, + "flags": {}, + "order": 11, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 281 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 283, + 284 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [], + "slot_index": 2 + } + ], + "title": "Load Checkpoint (base)", + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "sd_xl_base_1.0.safetensors" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 213, + "type": "OneButtonPrompt", + "pos": [ + -778, + -250 + ], + "size": { + "0": 315, + "1": 322 + }, + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "custom_subject", + "type": "STRING", + "link": 311, + "widget": { + "name": "custom_subject", + "config": [ + "STRING", + { + "multiline": false, + "default": "" + } + ] + } + } + ], + "outputs": [ + { + "name": "prompt", + "type": "STRING", + "links": [ + 305, + 306, + 307, + 316 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "OneButtonPrompt" + }, + "widgets_values": [ + 5, + "all", + "all", + 20, + "all", + "", + "all", + "all", + "all", + "all", + false, + 547016836023746, + "randomize" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 221, + "type": "Note", + "pos": [ + -1097, + -380 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 12, + "mode": 0, + "properties": { + "text": "" + }, + "widgets_values": [ + "Originally made by blitzk241\nThank you!" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 16, + "type": "PrimitiveNode", + "pos": [ + -1318, + -101 + ], + "size": { + "0": 434.15277099609375, + "1": 152.36099243164062 + }, + "flags": {}, + "order": 6, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 139, + 308, + 309, + 317 + ], + "slot_index": 0, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + } + } + ], + "title": "Negative Prompt", + "properties": {}, + "widgets_values": [ + "text, watermark" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 220, + "type": "PrimitiveNode", + "pos": [ + 631, + -216 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 9, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 318, + 319 + ], + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "Prompt" + } + ] + }, + "slot_index": 0 + } + ], + "title": "Filename", + "properties": {}, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 219, + "type": "SavePromptToFile", + "pos": [ + 164, + -219 + ], + "size": [ + 216.3093705610795, + 94.55757002397013 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "filename_prefix", + "type": "STRING", + "link": 318, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "Prompt" + } + ] + }, + "slot_index": 0 + }, + { + "name": "positive_prompt", + "type": "STRING", + "link": 316, + "widget": { + "name": "positive_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + }, + { + "name": "negative_prompt", + "type": "STRING", + "link": 317, + "widget": { + "name": "negative_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "properties": { + "Node name for S&R": "SavePromptToFile" + }, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI", + "", + "text, watermark" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + } + ], + "links": [ + [ + 61, + 11, + 0, + 38, + 0, + "*" + ], + [ + 65, + 11, + 2, + 39, + 0, + "*" + ], + [ + 127, + 73, + 0, + 70, + 0, + "CLIP" + ], + [ + 128, + 73, + 0, + 71, + 0, + "CLIP" + ], + [ + 129, + 11, + 1, + 73, + 0, + "*" + ], + [ + 130, + 39, + 0, + 40, + 0, + "*" + ], + [ + 139, + 16, + 0, + 65, + 1, + "STRING" + ], + [ + 199, + 50, + 0, + 139, + 1, + "CONDITIONING" + ], + [ + 200, + 65, + 0, + 139, + 2, + "CONDITIONING" + ], + [ + 207, + 38, + 0, + 142, + 0, + "MODEL" + ], + [ + 208, + 70, + 0, + 142, + 1, + "CONDITIONING" + ], + [ + 209, + 71, + 0, + 142, + 2, + "CONDITIONING" + ], + [ + 217, + 142, + 0, + 146, + 0, + "LATENT" + ], + [ + 224, + 41, + 0, + 142, + 3, + "LATENT" + ], + [ + 225, + 152, + 0, + 139, + 4, + "INT" + ], + [ + 226, + 152, + 0, + 142, + 4, + "INT" + ], + [ + 228, + 155, + 0, + 139, + 5, + "INT" + ], + [ + 229, + 155, + 0, + 142, + 5, + "INT" + ], + [ + 234, + 139, + 0, + 41, + 0, + "*" + ], + [ + 235, + 159, + 0, + 139, + 6, + "INT" + ], + [ + 236, + 159, + 0, + 142, + 6, + "INT" + ], + [ + 237, + 160, + 0, + 139, + 7, + "FLOAT" + ], + [ + 279, + 5, + 0, + 139, + 3, + "LATENT" + ], + [ + 281, + 4, + 0, + 139, + 0, + "MODEL" + ], + [ + 283, + 4, + 1, + 50, + 0, + "CLIP" + ], + [ + 284, + 4, + 1, + 65, + 0, + "CLIP" + ], + [ + 286, + 146, + 0, + 199, + 0, + "IMAGE" + ], + [ + 303, + 211, + 0, + 146, + 1, + "VAE" + ], + [ + 305, + 213, + 0, + 50, + 1, + "STRING" + ], + [ + 306, + 213, + 0, + 50, + 2, + "STRING" + ], + [ + 307, + 213, + 0, + 70, + 1, + "STRING" + ], + [ + 308, + 16, + 0, + 65, + 2, + "STRING" + ], + [ + 309, + 16, + 0, + 71, + 1, + "STRING" + ], + [ + 311, + 215, + 0, + 213, + 0, + "STRING" + ], + [ + 316, + 213, + 0, + 219, + 1, + "STRING" + ], + [ + 317, + 16, + 0, + 219, + 2, + "STRING" + ], + [ + 318, + 220, + 0, + 219, + 0, + "STRING" + ], + [ + 319, + 220, + 0, + 199, + 1, + "STRING" + ] + ], + "groups": [], + "config": {}, + "extra": {}, + "version": 0.4 +} \ No newline at end of file diff --git a/comfyui_workflow_examples/SDX_OBP_NoRefiner.json b/comfyui_workflow_examples/SDX_OBP_NoRefiner.json new file mode 100644 index 0000000..5633fe3 --- /dev/null +++ b/comfyui_workflow_examples/SDX_OBP_NoRefiner.json @@ -0,0 +1,1183 @@ +{ + "last_node_id": 220, + "last_link_id": 323, + "nodes": [ + { + "id": 160, + "type": "PrimitiveNode", + "pos": [ + -794.9259129309752, + 569.0957399828028 + ], + "size": { + "0": 210, + "1": 82 + }, + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 237 + ], + "widget": { + "name": "cfg", + "config": [ + "FLOAT", + { + "default": 8, + "min": 0, + "max": 100 + } + ] + } + } + ], + "title": "CFG Scale", + "properties": {}, + "widgets_values": [ + 8, + "fixed" + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 5, + "type": "EmptyLatentImage", + "pos": [ + -794.9259129309752, + 422 + ], + "size": { + "0": 210, + "1": 106 + }, + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 279 + ], + "slot_index": 0 + } + ], + "title": "Image and batch size", + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [ + 1024, + 1024, + 1 + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 152, + "type": "PrimitiveNode", + "pos": [ + -795, + 297 + ], + "size": { + "0": 210, + "1": 82 + }, + "flags": {}, + "order": 2, + "mode": 0, + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 225 + ], + "slot_index": 0, + "widget": { + "name": "steps", + "config": [ + "INT", + { + "default": 20, + "min": 1, + "max": 10000 + } + ] + } + } + ], + "title": "Total Steps (Base + Ref.)", + "properties": {}, + "widgets_values": [ + 30, + "fixed" + ], + "color": "#233", + "bgcolor": "#355" + }, + { + "id": 159, + "type": "PrimitiveNode", + "pos": [ + -794.9259129309752, + 700.0640563964844 + ], + "size": { + "0": 210, + "1": 82 + }, + "flags": {}, + "order": 3, + "mode": 0, + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 235 + ], + "widget": { + "name": "noise_seed", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 18446744073709552000 + } + ] + }, + "slot_index": 0 + } + ], + "title": "Seed", + "properties": {}, + "widgets_values": [ + 1111747466290750, + "randomize" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 50, + "type": "CLIPTextEncodeSDXL", + "pos": [ + -137, + 171 + ], + "size": { + "0": 210, + "1": 241.0738983154297 + }, + "flags": { + "collapsed": false + }, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 283 + }, + { + "name": "text_g", + "type": "STRING", + "link": 305, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + }, + "slot_index": 1 + }, + { + "name": "text_l", + "type": "STRING", + "link": 306, + "widget": { + "name": "text_l", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_L" + } + ] + }, + "slot_index": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 199 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXL POS", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXL" + }, + "widgets_values": [ + 4096, + 4096, + 0, + 0, + 4096, + 4096, + "xxx ", + "xxx " + ] + }, + { + "id": 139, + "type": "KSamplerAdvanced", + "pos": [ + -505, + 397 + ], + "size": { + "0": 318.23089599609375, + "1": 316.8831481933594 + }, + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 281 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 199 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 200 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 279 + }, + { + "name": "steps", + "type": "INT", + "link": 225, + "widget": { + "name": "steps", + "config": [ + "INT", + { + "default": 20, + "min": 1, + "max": 10000 + } + ] + } + }, + { + "name": "end_at_step", + "type": "INT", + "link": 228, + "widget": { + "name": "end_at_step", + "config": [ + "INT", + { + "default": 10000, + "min": 0, + "max": 10000 + } + ] + } + }, + { + "name": "noise_seed", + "type": "INT", + "link": 235, + "widget": { + "name": "noise_seed", + "config": [ + "INT", + { + "default": 0, + "min": 0, + "max": 18446744073709552000 + } + ] + }, + "slot_index": 6 + }, + { + "name": "cfg", + "type": "FLOAT", + "link": 237, + "widget": { + "name": "cfg", + "config": [ + "FLOAT", + { + "default": 8, + "min": 0, + "max": 100 + } + ] + }, + "slot_index": 7 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 317 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "KSampler BASE (Advanced)", + "properties": { + "Node name for S&R": "KSamplerAdvanced" + }, + "widgets_values": [ + "enable", + 604260618514801, + "fixed", + 30, + 8, + "dpmpp_2m", + "karras", + 0, + 30, + "enable" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 155, + "type": "PrimitiveNode", + "pos": [ + -795, + 172 + ], + "size": { + "0": 210, + "1": 82 + }, + "flags": {}, + "order": 4, + "mode": 0, + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 228 + ], + "slot_index": 0, + "widget": { + "name": "end_at_step", + "config": [ + "INT", + { + "default": 10000, + "min": 0, + "max": 10000 + } + ] + } + } + ], + "title": "Steps On Base Model", + "properties": {}, + "widgets_values": [ + 30, + "fixed" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 41, + "type": "Reroute", + "pos": [ + -38, + 508 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 317 + } + ], + "outputs": [ + { + "name": "", + "type": "LATENT", + "links": [ + 315 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 146, + "type": "VAEDecode", + "pos": [ + 142, + 499 + ], + "size": { + "0": 148.75479125976562, + "1": 102.28533172607422 + }, + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 315 + }, + { + "name": "vae", + "type": "VAE", + "link": 316 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 286 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "VAE Dec. Final", + "properties": { + "Node name for S&R": "VAEDecode" + } + }, + { + "id": 199, + "type": "SaveImage", + "pos": [ + 393, + 148 + ], + "size": [ + 565.774658203125, + 596.3757934570312 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 286 + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 323, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "ComfyUI" + } + ] + } + } + ], + "properties": {}, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI" + ], + "color": "#222", + "bgcolor": "#000" + }, + { + "id": 218, + "type": "SavePromptToFile", + "pos": [ + -83, + -88 + ], + "size": [ + 210, + 84.49069064331059 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "positive_prompt", + "type": "STRING", + "link": 320, + "widget": { + "name": "positive_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + }, + { + "name": "negative_prompt", + "type": "STRING", + "link": 321, + "widget": { + "name": "negative_prompt", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + }, + { + "name": "filename_prefix", + "type": "STRING", + "link": 322, + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "Prompt" + } + ] + }, + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "SavePromptToFile" + }, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI", + "", + "text, watermark\n" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 4, + "type": "CheckpointLoaderSimple", + "pos": [ + -570, + 175 + ], + "size": { + "0": 320.0830383300781, + "1": 101.19705200195312 + }, + "flags": {}, + "order": 5, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 281 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 283, + 284 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 316 + ], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "sd_xl_base_1.0.safetensors" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 219, + "type": "PrimitiveNode", + "pos": [ + 163, + -68 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 6, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 322, + 323 + ], + "widget": { + "name": "filename_prefix", + "config": [ + "STRING", + { + "default": "Prompt" + } + ] + }, + "slot_index": 0 + } + ], + "title": "File Location", + "properties": {}, + "widgets_values": [ + "%date:yyyy-M-d%/ComfyUI" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 213, + "type": "OneButtonPrompt", + "pos": [ + -746, + -306 + ], + "size": { + "0": 315, + "1": 322 + }, + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "custom_subject", + "type": "STRING", + "link": 311, + "widget": { + "name": "custom_subject", + "config": [ + "STRING", + { + "multiline": false, + "default": "" + } + ] + } + } + ], + "outputs": [ + { + "name": "prompt", + "type": "STRING", + "links": [ + 305, + 306, + 320 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "OneButtonPrompt" + }, + "widgets_values": [ + 5, + "all", + "all", + 20, + "all", + "", + "all", + "all", + "all", + "all", + false, + 727091149492509, + "randomize" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 215, + "type": "PrimitiveNode", + "pos": [ + -1027, + -303 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": { + "collapsed": false + }, + "order": 7, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 311 + ], + "slot_index": 0, + "widget": { + "name": "custom_subject", + "config": [ + "STRING", + { + "multiline": false, + "default": "" + } + ] + } + } + ], + "title": "Overwrite Subject", + "properties": {}, + "widgets_values": [ + "" + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 200, + "type": "Note", + "pos": [ + -1082, + 421 + ], + "size": { + "0": 260, + "1": 210 + }, + "flags": {}, + "order": 8, + "mode": 0, + "title": "Note - Empty Latent Image", + "properties": { + "text": "" + }, + "widgets_values": [ + "This node sets the image's resolution in Width and Height.\n\nNOTE: For SDXL, it is recommended to use trained values listed below:\n - 1024 x 1024\n - 1152 x 896\n - 896 x 1152\n - 1216 x 832\n - 832 x 1216\n - 1344 x 768\n - 768 x 1344\n - 1536 x 640\n - 640 x 1536" + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 220, + "type": "Note", + "pos": [ + -1021, + -420 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 9, + "mode": 0, + "properties": { + "text": "" + }, + "widgets_values": [ + "Made by blitzk241\nThank you!" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 16, + "type": "PrimitiveNode", + "pos": [ + -1259, + -176 + ], + "size": { + "0": 434.15277099609375, + "1": 152.36099243164062 + }, + "flags": {}, + "order": 10, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 139, + 308, + 321 + ], + "slot_index": 0, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + } + } + ], + "title": "Negative Prompt", + "properties": {}, + "widgets_values": [ + "text, watermark\n" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 65, + "type": "CLIPTextEncodeSDXL", + "pos": [ + 105, + 165 + ], + "size": { + "0": 212.1192169189453, + "1": 240.16322326660156 + }, + "flags": { + "collapsed": false + }, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 284 + }, + { + "name": "text_g", + "type": "STRING", + "link": 139, + "widget": { + "name": "text_g", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_G" + } + ] + } + }, + { + "name": "text_l", + "type": "STRING", + "link": 308, + "widget": { + "name": "text_l", + "config": [ + "STRING", + { + "multiline": true, + "default": "CLIP_L" + } + ] + }, + "slot_index": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 200 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "CLIPTextEncodeSDXL NEG", + "properties": { + "Node name for S&R": "CLIPTextEncodeSDXL" + }, + "widgets_values": [ + 4096, + 4096, + 0, + 0, + 4096, + 4096, + "text, watermark\n", + "text, watermark\n" + ] + } + ], + "links": [ + [ + 139, + 16, + 0, + 65, + 1, + "STRING" + ], + [ + 199, + 50, + 0, + 139, + 1, + "CONDITIONING" + ], + [ + 200, + 65, + 0, + 139, + 2, + "CONDITIONING" + ], + [ + 225, + 152, + 0, + 139, + 4, + "INT" + ], + [ + 228, + 155, + 0, + 139, + 5, + "INT" + ], + [ + 235, + 159, + 0, + 139, + 6, + "INT" + ], + [ + 237, + 160, + 0, + 139, + 7, + "FLOAT" + ], + [ + 279, + 5, + 0, + 139, + 3, + "LATENT" + ], + [ + 281, + 4, + 0, + 139, + 0, + "MODEL" + ], + [ + 283, + 4, + 1, + 50, + 0, + "CLIP" + ], + [ + 284, + 4, + 1, + 65, + 0, + "CLIP" + ], + [ + 286, + 146, + 0, + 199, + 0, + "IMAGE" + ], + [ + 305, + 213, + 0, + 50, + 1, + "STRING" + ], + [ + 306, + 213, + 0, + 50, + 2, + "STRING" + ], + [ + 308, + 16, + 0, + 65, + 2, + "STRING" + ], + [ + 311, + 215, + 0, + 213, + 0, + "STRING" + ], + [ + 315, + 41, + 0, + 146, + 0, + "LATENT" + ], + [ + 316, + 4, + 2, + 146, + 1, + "VAE" + ], + [ + 317, + 139, + 0, + 41, + 0, + "*" + ], + [ + 320, + 213, + 0, + 218, + 0, + "STRING" + ], + [ + 321, + 16, + 0, + 218, + 1, + "STRING" + ], + [ + 322, + 219, + 0, + 218, + 2, + "STRING" + ], + [ + 323, + 219, + 0, + 199, + 1, + "STRING" + ] + ], + "groups": [], + "config": {}, + "extra": {}, + "version": 0.4 +} \ No newline at end of file