diff --git a/README.md b/README.md index 7424dec..81a0701 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,40 @@ # ComfyUI custom nodes -![](./nodes.png) +![cover](./examples/workflow_xyz.png) -## Latent nodes +## Examples + +### X/Y/Z-plot + +seeds, steps, cfg scales and others + +[workflow link](./examples/workflow_xyz.json) + +![xyz plot 1](./examples/workflow_xyz.png) + +models + +[workflow link](./examples/workflow_xyz_model_clip.json) + +![xyz plot 2](./examples/workflow_xyz_model_clip.png) + +VAEs + +[workflow link](./examples/workflow_xyz_vae.json) + +![xyz plot 3](./examples/workflow_xyz_vae.png) + +### Merge + +simple merge and [merge block weighted](https://github.com/bbc-mc/sdweb-merge-block-weighted-gui) (thanks for @bbc-mc) + +[workflow link](./examples/workflow_mbw.json) + +![merge block weighted](./examples/workflow_mbw.png) + +## Node List + +### Latent nodes |category|node name|input type|output type|desc.| | --- | --- | --- | --- | --- | @@ -10,7 +42,7 @@ |latent|VAEDecodeBatched|`LATENT`, `VAE`, `INT`|`IMAGE`|VAE decoding with specified batch size| |latent|VAEEncodeBatched|`IMAGE`, `VAE`, `INT`|`LATENT`|VAE encoding with specified batch size| -## Sampling nodes +### Sampling nodes |category|node name|input type|output type|desc.| | --- | --- | --- | --- | --- | @@ -18,7 +50,7 @@ |sampling|KSamplerOverrided|various|`LATENT`|override sampler's setting defined by `KSamplerSetting`| |sampling|KSamplerXYZ|various|`LATENT`|generate latents with values| -## Model nodes and Loader nodes +### Model nodes and Loader nodes |category|node name|input type|output type|desc.| | --- | --- | --- | --- | --- | @@ -30,8 +62,8 @@ |model|CLIPlIter|`CLIP`, `CLIP`|`CLIP`|iterate CLIPs| |model|VAElIter|`VAE`, `VAE`|`VAE`|iterate VAEs| -## Output nodes +### Output nodes |category|node name|input type|output type|desc.| | --- | --- | --- | --- | --- | -|image|GridImage|||generate single image with specific columns| +|image|GridImage|||generate single image with specific number of columns| diff --git a/examples/workflow_mbw.json b/examples/workflow_mbw.json new file mode 100644 index 0000000..dc19cfe --- /dev/null +++ b/examples/workflow_mbw.json @@ -0,0 +1,937 @@ +{ + "last_node_id": 20, + "last_link_id": 22, + "nodes": [ + { + "id": 9, + "type": "PrimitiveNode", + "pos": [ + 363.7100000000006, + 232.63 + ], + "size": [ + 350.6500073242189, + 189.78998657226566 + ], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 5 + ], + "slot_index": 0, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "title": "Prompt", + "properties": {}, + "widgets_values": [ + "a cute girl in flower garden, \nclear face, \ninsanely frilled white dress, \nabsurdly long brown hair, \nsmile slightly, \nsmall tiara, \nlong sleeves highneck dress" + ] + }, + { + "id": 11, + "type": "PrimitiveNode", + "pos": [ + 368, + 469 + ], + "size": { + "0": 350.6499938964844, + "1": 189.7899932861328 + }, + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 7 + ], + "slot_index": 0, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "title": "Negative prompt", + "properties": {}, + "widgets_values": [ + "(low quality, worst quality:1.4), \nnsfw, \ndutch angle, \nmoles, \ntan skin, \nopened mouth, \ndetached sleeves" + ] + }, + { + "id": 8, + "type": "CLIPTextEncode", + "pos": [ + 767.1699999999993, + 104.96999999999997 + ], + "size": [ + 210, + 54 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 6 + }, + { + "name": "text", + "type": "STRING", + "link": 5, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 10 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "a cute girl in flower garden, \nclear face, \ninsanely frilled white dress, \nabsurdly long brown hair, \nsmile slightly, \nsmall tiara, \nlong sleeves highneck dress" + ] + }, + { + "id": 10, + "type": "CLIPTextEncode", + "pos": [ + 768.1699999999993, + 213.96999999999989 + ], + "size": { + "0": 210, + "1": 54 + }, + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 8 + }, + { + "name": "text", + "type": "STRING", + "link": 7, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 11 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "(low quality, worst quality:1.4), \nnsfw, \ndutch angle, \nmoles, \ntan skin, \nopened mouth, \ndetached sleeves" + ] + }, + { + "id": 13, + "type": "EmptyLatentImage", + "pos": [ + 780, + 320 + ], + "size": [ + 210, + 106 + ], + "flags": {}, + "order": 2, + "mode": 0, + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 12 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [ + 512, + 512, + 1 + ] + }, + { + "id": 14, + "type": "KSamplerXYZ", + "pos": [ + 1259, + 43 + ], + "size": [ + 210, + 154 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "setting", + "type": "DICT", + "link": 13 + }, + { + "name": "model", + "type": "MODEL", + "link": null + }, + { + "name": "seed", + "type": "STRING", + "link": 14, + "widget": { + "name": "seed", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + }, + { + "name": "steps", + "type": "STRING", + "link": null, + "widget": { + "name": "steps", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + }, + { + "name": "cfg", + "type": "STRING", + "link": null, + "widget": { + "name": "cfg", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + }, + { + "name": "sampler_name", + "type": "STRING", + "link": null, + "widget": { + "name": "sampler_name", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + }, + { + "name": "scheduler", + "type": "STRING", + "link": null, + "widget": { + "name": "scheduler", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 15 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSamplerXYZ" + }, + "widgets_values": [ + "1,2,3,4,5", + "", + "", + "", + "" + ] + }, + { + "id": 15, + "type": "PrimitiveNode", + "pos": [ + 1016, + 341 + ], + "size": { + "0": 210, + "1": 75.99998474121094 + }, + "flags": {}, + "order": 3, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 14 + ], + "slot_index": 0, + "widget": { + "name": "seed", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "title": "Seeds", + "properties": {}, + "widgets_values": [ + "1,2,3,4,5" + ] + }, + { + "id": 16, + "type": "VAELoader", + "pos": [ + 1261, + 240 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 16 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "kl-f8-anime2.ckpt" + ] + }, + { + "id": 18, + "type": "VAEDecodeBatched", + "pos": [ + 1494, + 43 + ], + "size": [ + 210, + 78 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 15 + }, + { + "name": "vae", + "type": "VAE", + "link": 16 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 17, + 18 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecodeBatched" + }, + "widgets_values": [ + 4 + ] + }, + { + "id": 6, + "type": "Dict2Model", + "pos": [ + 521, + 43 + ], + "size": { + "0": 210, + "1": 98 + }, + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "weights", + "type": "DICT", + "link": 4 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 9 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 6, + 8 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": null + } + ], + "properties": { + "Node name for S&R": "Dict2Model" + }, + "widgets_values": [ + "v1-inference_fp16.yaml" + ] + }, + { + "id": 1, + "type": "StateDictLoader", + "pos": [ + 20, + 43 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 5, + "mode": 0, + "outputs": [ + { + "name": "DICT", + "type": "DICT", + "links": [ + 21 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "StateDictLoader" + }, + "widgets_values": [ + "7th_anime_v3_A-fp16.safetensors" + ] + }, + { + "id": 3, + "type": "StateDictMergerBlockWeighted", + "pos": [ + 261, + 42 + ], + "size": { + "0": 235.1999969482422, + "1": 146 + }, + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "model_A", + "type": "DICT", + "link": 21 + }, + { + "name": "model_B", + "type": "DICT", + "link": 22 + }, + { + "name": "alphas", + "type": "STRING", + "link": 1, + "widget": { + "name": "alphas", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "outputs": [ + { + "name": "DICT", + "type": "DICT", + "links": [ + 4 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "StateDictMergerBlockWeighted" + }, + "widgets_values": [ + "A", + "True", + 0, + ".0, .1, .3, .5,\n.7, .9, 1., 1.,\n1., 1., 1., 1.,\n1.,\n1., 1., 1., 1.,\n1., 1., .9, .7,\n.5, .3, .1, .0" + ] + }, + { + "id": 12, + "type": "KSamplerSetting", + "pos": [ + 1014, + 43 + ], + "size": [ + 210, + 262 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 9 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 10 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 11 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 12 + } + ], + "outputs": [ + { + "name": "DICT", + "type": "DICT", + "links": [ + 13 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSamplerSetting" + }, + "widgets_values": [ + 0, + false, + 15, + 7, + "dpmpp_2m", + "karras", + 1 + ] + }, + { + "id": 19, + "type": "PreviewImage", + "pos": [ + 1754, + 42 + ], + "size": [ + 389.2582039184572, + 259.1168508300782 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 17 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + } + }, + { + "id": 20, + "type": "GridImage", + "pos": [ + 1748, + 344 + ], + "size": [ + 905.318966186524, + 349.043979980469 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 18 + } + ], + "properties": { + "Node name for S&R": "GridImage" + }, + "widgets_values": [ + "ComfyUI-Grid", + 5, + 0 + ] + }, + { + "id": 5, + "type": "PrimitiveNode", + "pos": [ + 12, + 242 + ], + "size": [ + 225.5886754882813, + 215.2402165527344 + ], + "flags": {}, + "order": 7, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 1 + ], + "slot_index": 0, + "widget": { + "name": "alphas", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "title": "alpha", + "properties": {}, + "widgets_values": [ + ".0, .1, .3, .5,\n.7, .9, 1., 1.,\n1., 1., 1., 1.,\n1.,\n1., 1., 1., 1.,\n1., 1., .9, .7,\n.5, .3, .1, .0" + ] + }, + { + "id": 2, + "type": "StateDictLoader", + "pos": [ + 20, + 141 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 6, + "mode": 0, + "outputs": [ + { + "name": "DICT", + "type": "DICT", + "links": [ + 22 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "StateDictLoader" + }, + "widgets_values": [ + "Basil_mix_fixed.safetensors" + ] + } + ], + "links": [ + [ + 1, + 5, + 0, + 3, + 2, + "STRING" + ], + [ + 4, + 3, + 0, + 6, + 0, + "DICT" + ], + [ + 5, + 9, + 0, + 8, + 1, + "STRING" + ], + [ + 6, + 6, + 1, + 8, + 0, + "CLIP" + ], + [ + 7, + 11, + 0, + 10, + 1, + "STRING" + ], + [ + 8, + 6, + 1, + 10, + 0, + "CLIP" + ], + [ + 9, + 6, + 0, + 12, + 0, + "MODEL" + ], + [ + 10, + 8, + 0, + 12, + 1, + "CONDITIONING" + ], + [ + 11, + 10, + 0, + 12, + 2, + "CONDITIONING" + ], + [ + 12, + 13, + 0, + 12, + 3, + "LATENT" + ], + [ + 13, + 12, + 0, + 14, + 0, + "DICT" + ], + [ + 14, + 15, + 0, + 14, + 2, + "STRING" + ], + [ + 15, + 14, + 0, + 18, + 0, + "LATENT" + ], + [ + 16, + 16, + 0, + 18, + 1, + "VAE" + ], + [ + 17, + 18, + 0, + 19, + 0, + "IMAGE" + ], + [ + 18, + 18, + 0, + 20, + 0, + "IMAGE" + ], + [ + 21, + 1, + 0, + 3, + 0, + "DICT" + ], + [ + 22, + 2, + 0, + 3, + 1, + "DICT" + ] + ], + "groups": [], + "config": {}, + "extra": {}, + "version": 0.4 +} \ No newline at end of file diff --git a/examples/workflow_mbw.png b/examples/workflow_mbw.png new file mode 100644 index 0000000..7d478b9 Binary files /dev/null and b/examples/workflow_mbw.png differ diff --git a/examples/workflow_xyz.json b/examples/workflow_xyz.json new file mode 100644 index 0000000..1c62255 --- /dev/null +++ b/examples/workflow_xyz.json @@ -0,0 +1,832 @@ +{ + "last_node_id": 23, + "last_link_id": 27, + "nodes": [ + { + "id": 9, + "type": "PrimitiveNode", + "pos": [ + 17.008300000000062, + 221.28719999999998 + ], + "size": [ + 350.6500073242189, + 189.78998657226566 + ], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 5 + ], + "slot_index": 0, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "title": "Prompt", + "properties": {}, + "widgets_values": [ + "a cute girl in flower garden, \nclear face, \ninsanely frilled white dress, \nabsurdly long brown hair, \nsmile slightly, \nsmall tiara, \nlong sleeves highneck dress" + ] + }, + { + "id": 11, + "type": "PrimitiveNode", + "pos": [ + 21.008300000000077, + 457.2872000000003 + ], + "size": { + "0": 350.6499938964844, + "1": 189.7899932861328 + }, + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 7 + ], + "slot_index": 0, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "title": "Negative prompt", + "properties": {}, + "widgets_values": [ + "(low quality, worst quality:1.4), \nnsfw, \ndutch angle, \nmoles, \ntan skin, \nopened mouth, \ndetached sleeves" + ] + }, + { + "id": 8, + "type": "CLIPTextEncode", + "pos": [ + 423.07180000000005, + 124.21020000000004 + ], + "size": [ + 210, + 54 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 23 + }, + { + "name": "text", + "type": "STRING", + "link": 5, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 10 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "a cute girl in flower garden, \nclear face, \ninsanely frilled white dress, \nabsurdly long brown hair, \nsmile slightly, \nsmall tiara, \nlong sleeves highneck dress" + ] + }, + { + "id": 10, + "type": "CLIPTextEncode", + "pos": [ + 424, + 232 + ], + "size": { + "0": 210, + "1": 54 + }, + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 24 + }, + { + "name": "text", + "type": "STRING", + "link": 7, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 11 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "(low quality, worst quality:1.4), \nnsfw, \ndutch angle, \nmoles, \ntan skin, \nopened mouth, \ndetached sleeves" + ] + }, + { + "id": 13, + "type": "EmptyLatentImage", + "pos": [ + 425, + 348 + ], + "size": [ + 210, + 106 + ], + "flags": {}, + "order": 2, + "mode": 0, + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 12 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [ + 512, + 512, + 1 + ] + }, + { + "id": 16, + "type": "VAELoader", + "pos": [ + 1009, + 249 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 3, + "mode": 0, + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 16 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "kl-f8-anime2.ckpt" + ] + }, + { + "id": 22, + "type": "PrimitiveNode", + "pos": [ + 699, + 466 + ], + "size": { + "0": 210, + "1": 76 + }, + "flags": {}, + "order": 4, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 26 + ], + "slot_index": 0, + "widget": { + "name": "steps", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "title": "Steps", + "properties": {}, + "widgets_values": [ + "15, 20, 25" + ] + }, + { + "id": 23, + "type": "PrimitiveNode", + "pos": [ + 700, + 582 + ], + "size": { + "0": 210, + "1": 76.0000228881836 + }, + "flags": {}, + "order": 5, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 27 + ], + "slot_index": 0, + "widget": { + "name": "cfg", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "title": "CFGs", + "properties": {}, + "widgets_values": [ + "5, 7, 9" + ] + }, + { + "id": 15, + "type": "PrimitiveNode", + "pos": [ + 701, + 350 + ], + "size": { + "0": 210, + "1": 75.99998474121094 + }, + "flags": {}, + "order": 6, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 14 + ], + "slot_index": 0, + "widget": { + "name": "seed", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "title": "Seeds", + "properties": {}, + "widgets_values": [ + "1,2,3,4,5" + ] + }, + { + "id": 21, + "type": "CheckpointLoader", + "pos": [ + 17, + 37 + ], + "size": [ + 352.3577620727539, + 122 + ], + "flags": {}, + "order": 7, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 25 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 23, + 24 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": null + } + ], + "properties": { + "Node name for S&R": "CheckpointLoader" + }, + "widgets_values": [ + "v1-inference_fp16.yaml", + "7th_anime_v3_A-fp16.safetensors" + ] + }, + { + "id": 12, + "type": "KSamplerSetting", + "pos": [ + 693, + 37 + ], + "size": [ + 210, + 262 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 25 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 10 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 11 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 12 + } + ], + "outputs": [ + { + "name": "DICT", + "type": "DICT", + "links": [ + 13 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSamplerSetting" + }, + "widgets_values": [ + 0, + false, + 15, + 7, + "dpmpp_2m", + "karras", + 1 + ] + }, + { + "id": 14, + "type": "KSamplerXYZ", + "pos": [ + 1010, + 36 + ], + "size": [ + 210, + 154 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "setting", + "type": "DICT", + "link": 13 + }, + { + "name": "model", + "type": "MODEL", + "link": null + }, + { + "name": "seed", + "type": "STRING", + "link": 14, + "widget": { + "name": "seed", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + }, + { + "name": "steps", + "type": "STRING", + "link": 26, + "widget": { + "name": "steps", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + }, + { + "name": "cfg", + "type": "STRING", + "link": 27, + "widget": { + "name": "cfg", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + }, + { + "name": "sampler_name", + "type": "STRING", + "link": null, + "widget": { + "name": "sampler_name", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + }, + { + "name": "scheduler", + "type": "STRING", + "link": null, + "widget": { + "name": "scheduler", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 15 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSamplerXYZ" + }, + "widgets_values": [ + "1,2,3,4,5", + "15, 20, 25", + "5, 7, 9", + "", + "" + ] + }, + { + "id": 18, + "type": "VAEDecodeBatched", + "pos": [ + 1272, + 36 + ], + "size": [ + 210, + 78 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 15 + }, + { + "name": "vae", + "type": "VAE", + "link": 16 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 17, + 18 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecodeBatched" + }, + "widgets_values": [ + 4 + ] + }, + { + "id": 19, + "type": "PreviewImage", + "pos": [ + 1542, + -281 + ], + "size": [ + 389.2582039184572, + 259.1168508300782 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 17 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + } + }, + { + "id": 20, + "type": "GridImage", + "pos": [ + 1527, + 36 + ], + "size": [ + 625.559762072754, + 1166.9311354003908 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 18 + } + ], + "properties": { + "Node name for S&R": "GridImage" + }, + "widgets_values": [ + "ComfyUI-Grid", + 5, + 1 + ] + } + ], + "links": [ + [ + 5, + 9, + 0, + 8, + 1, + "STRING" + ], + [ + 7, + 11, + 0, + 10, + 1, + "STRING" + ], + [ + 10, + 8, + 0, + 12, + 1, + "CONDITIONING" + ], + [ + 11, + 10, + 0, + 12, + 2, + "CONDITIONING" + ], + [ + 12, + 13, + 0, + 12, + 3, + "LATENT" + ], + [ + 13, + 12, + 0, + 14, + 0, + "DICT" + ], + [ + 14, + 15, + 0, + 14, + 2, + "STRING" + ], + [ + 15, + 14, + 0, + 18, + 0, + "LATENT" + ], + [ + 16, + 16, + 0, + 18, + 1, + "VAE" + ], + [ + 17, + 18, + 0, + 19, + 0, + "IMAGE" + ], + [ + 18, + 18, + 0, + 20, + 0, + "IMAGE" + ], + [ + 23, + 21, + 1, + 8, + 0, + "CLIP" + ], + [ + 24, + 21, + 1, + 10, + 0, + "CLIP" + ], + [ + 25, + 21, + 0, + 12, + 0, + "MODEL" + ], + [ + 26, + 22, + 0, + 14, + 3, + "STRING" + ], + [ + 27, + 23, + 0, + 14, + 4, + "STRING" + ] + ], + "groups": [], + "config": {}, + "extra": {}, + "version": 0.4 +} \ No newline at end of file diff --git a/examples/workflow_xyz.png b/examples/workflow_xyz.png new file mode 100644 index 0000000..a137783 Binary files /dev/null and b/examples/workflow_xyz.png differ diff --git a/examples/workflow_xyz_model_clip.json b/examples/workflow_xyz_model_clip.json new file mode 100644 index 0000000..de9ae31 --- /dev/null +++ b/examples/workflow_xyz_model_clip.json @@ -0,0 +1,987 @@ +{ + "last_node_id": 36, + "last_link_id": 55, + "nodes": [ + { + "id": 8, + "type": "CLIPTextEncode", + "pos": [ + 755, + 126 + ], + "size": { + "0": 210, + "1": 54 + }, + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 52 + }, + { + "name": "text", + "type": "STRING", + "link": 13, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 10 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "a cute [girl:boy:0.5] in flower garden, \nclear face, \ninsanely frilled white dress, \nabsurdly long brown hair, \nsmile slightly, \nsmall tiara, \nlong sleeves highneck dress" + ] + }, + { + "id": 22, + "type": "VAELoader", + "pos": [ + 1265, + 246 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 26 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "kl-f8-anime2.ckpt" + ] + }, + { + "id": 23, + "type": "PreviewImage", + "pos": [ + 1760, + 46 + ], + "size": { + "0": 210, + "1": 250 + }, + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 27 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + } + }, + { + "id": 9, + "type": "CLIPTextEncode", + "pos": [ + 754, + 244 + ], + "size": { + "0": 210, + "1": 54 + }, + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 53 + }, + { + "name": "text", + "type": "STRING", + "link": 14, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 11 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "(low quality, worst quality:1.4), \nnsfw, \ndutch angle, \nmoles, \ntan skin, \nopened mouth, \ndetached sleeves" + ] + }, + { + "id": 25, + "type": "EmptyLatentImage", + "pos": [ + 770, + 357 + ], + "size": { + "0": 210, + "1": 106 + }, + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 29 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [ + 512, + 512, + 1 + ] + }, + { + "id": 1, + "type": "StateDictLoader", + "pos": [ + 13, + 43 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 2, + "mode": 0, + "outputs": [ + { + "name": "DICT", + "type": "DICT", + "links": [ + 43 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "StateDictLoader" + }, + "widgets_values": [ + "7th_anime_v3_A-fp16.safetensors" + ] + }, + { + "id": 7, + "type": "KSamplerSetting", + "pos": [ + 1001, + 45 + ], + "size": { + "0": 210, + "1": 262 + }, + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 51 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 10 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 11 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 29 + } + ], + "outputs": [ + { + "name": "DICT", + "type": "DICT", + "links": [ + 15 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSamplerSetting" + }, + "widgets_values": [ + 0, + false, + 15, + 7, + "dpmpp_2m", + "karras", + 1 + ] + }, + { + "id": 32, + "type": "Dict2Model", + "pos": [ + 254, + 43 + ], + "size": { + "0": 210, + "1": 98 + }, + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "weights", + "type": "DICT", + "link": 43 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 45 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 50 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": null + } + ], + "properties": { + "Node name for S&R": "Dict2Model" + }, + "widgets_values": [ + "v1-inference_fp16.yaml" + ] + }, + { + "id": 33, + "type": "Dict2Model", + "pos": [ + 253, + 181 + ], + "size": { + "0": 210, + "1": 98 + }, + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "weights", + "type": "DICT", + "link": 44 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 46 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 49 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": null + } + ], + "properties": { + "Node name for S&R": "Dict2Model" + }, + "widgets_values": [ + "v1-inference_fp16.yaml" + ] + }, + { + "id": 2, + "type": "StateDictLoader", + "pos": [ + 8, + 182 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 3, + "mode": 0, + "outputs": [ + { + "name": "DICT", + "type": "DICT", + "links": [ + 44 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "StateDictLoader" + }, + "widgets_values": [ + "Basil_mix_fixed.safetensors" + ] + }, + { + "id": 35, + "type": "ModelIter", + "pos": [ + 499, + 43 + ], + "size": { + "0": 210, + "1": 46 + }, + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "model1", + "type": "MODEL", + "link": 45 + }, + { + "name": "model2", + "type": "MODEL", + "link": 46 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 51 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ModelIter" + } + }, + { + "id": 34, + "type": "CLIPIter", + "pos": [ + 501, + 181 + ], + "size": { + "0": 210, + "1": 46 + }, + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "clip1", + "type": "CLIP", + "link": 50 + }, + { + "name": "clip2", + "type": "CLIP", + "link": 49 + } + ], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 52, + 53 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPIter" + } + }, + { + "id": 14, + "type": "PrimitiveNode", + "pos": [ + 233, + 360 + ], + "size": { + "0": 465.44146728515625, + "1": 176.32371520996094 + }, + "flags": {}, + "order": 4, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 13 + ], + "slot_index": 0, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "title": "Prompt", + "properties": {}, + "widgets_values": [ + "a cute [girl:boy:0.5] in flower garden, \nclear face, \ninsanely frilled white dress, \nabsurdly long brown hair, \nsmile slightly, \nsmall tiara, \nlong sleeves highneck dress" + ] + }, + { + "id": 15, + "type": "PrimitiveNode", + "pos": [ + 233, + 580 + ], + "size": { + "0": 464.3414611816406, + "1": 193.9237060546875 + }, + "flags": {}, + "order": 5, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 14 + ], + "slot_index": 0, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "title": "Negative prompt", + "properties": {}, + "widgets_values": [ + "(low quality, worst quality:1.4), \nnsfw, \ndutch angle, \nmoles, \ntan skin, \nopened mouth, \ndetached sleeves" + ] + }, + { + "id": 12, + "type": "KSamplerXYZ", + "pos": [ + 1259, + 45 + ], + "size": { + "0": 210, + "1": 154 + }, + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "setting", + "type": "DICT", + "link": 15 + }, + { + "name": "model", + "type": "MODEL", + "link": null + }, + { + "name": "seed", + "type": "STRING", + "link": 54, + "widget": { + "name": "seed", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + }, + "slot_index": 2 + }, + { + "name": "cfg", + "type": "STRING", + "link": null, + "widget": { + "name": "cfg", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + }, + "slot_index": 4 + }, + { + "name": "sampler_name", + "type": "STRING", + "link": null, + "widget": { + "name": "sampler_name", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + }, + { + "name": "scheduler", + "type": "STRING", + "link": null, + "widget": { + "name": "scheduler", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + }, + "slot_index": 6 + }, + { + "name": "steps", + "type": "STRING", + "link": null, + "widget": { + "name": "steps", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 24 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSamplerXYZ" + }, + "widgets_values": [ + "1,2,3,4,5", + "", + "5, 7, 9", + "", + "karras, normal, simple" + ] + }, + { + "id": 36, + "type": "PrimitiveNode", + "pos": [ + 1001, + 398 + ], + "size": { + "0": 210, + "1": 76 + }, + "flags": {}, + "order": 6, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 54 + ], + "slot_index": 0, + "widget": { + "name": "seed", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "title": "Seeds", + "properties": {}, + "widgets_values": [ + "1,2,3,4,5" + ] + }, + { + "id": 21, + "type": "VAEDecodeBatched", + "pos": [ + 1501, + 46 + ], + "size": { + "0": 210, + "1": 78 + }, + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 24 + }, + { + "name": "vae", + "type": "VAE", + "link": 26, + "slot_index": 1 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 27, + 55 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecodeBatched" + }, + "widgets_values": [ + 4 + ] + }, + { + "id": 24, + "type": "GridImage", + "pos": [ + 1768, + 344 + ], + "size": { + "0": 692.8555297851562, + "1": 616.837890625 + }, + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 55 + } + ], + "properties": { + "Node name for S&R": "GridImage" + }, + "widgets_values": [ + "ComfyUI-Grid", + 5, + 1 + ] + } + ], + "links": [ + [ + 10, + 8, + 0, + 7, + 1, + "CONDITIONING" + ], + [ + 11, + 9, + 0, + 7, + 2, + "CONDITIONING" + ], + [ + 13, + 14, + 0, + 8, + 1, + "STRING" + ], + [ + 14, + 15, + 0, + 9, + 1, + "STRING" + ], + [ + 15, + 7, + 0, + 12, + 0, + "DICT" + ], + [ + 24, + 12, + 0, + 21, + 0, + "LATENT" + ], + [ + 26, + 22, + 0, + 21, + 1, + "VAE" + ], + [ + 27, + 21, + 0, + 23, + 0, + "IMAGE" + ], + [ + 29, + 25, + 0, + 7, + 3, + "LATENT" + ], + [ + 43, + 1, + 0, + 32, + 0, + "DICT" + ], + [ + 44, + 2, + 0, + 33, + 0, + "DICT" + ], + [ + 45, + 32, + 0, + 35, + 0, + "MODEL" + ], + [ + 46, + 33, + 0, + 35, + 1, + "MODEL" + ], + [ + 49, + 33, + 1, + 34, + 1, + "CLIP" + ], + [ + 50, + 32, + 1, + 34, + 0, + "CLIP" + ], + [ + 51, + 35, + 0, + 7, + 0, + "MODEL" + ], + [ + 52, + 34, + 0, + 8, + 0, + "CLIP" + ], + [ + 53, + 34, + 0, + 9, + 0, + "CLIP" + ], + [ + 54, + 36, + 0, + 12, + 2, + "STRING" + ], + [ + 55, + 21, + 0, + 24, + 0, + "IMAGE" + ] + ], + "groups": [], + "config": {}, + "extra": {}, + "version": 0.4 +} \ No newline at end of file diff --git a/examples/workflow_xyz_model_clip.png b/examples/workflow_xyz_model_clip.png new file mode 100644 index 0000000..f41dd65 Binary files /dev/null and b/examples/workflow_xyz_model_clip.png differ diff --git a/examples/workflow_xyz_vae.json b/examples/workflow_xyz_vae.json new file mode 100644 index 0000000..e36c357 --- /dev/null +++ b/examples/workflow_xyz_vae.json @@ -0,0 +1,871 @@ +{ + "last_node_id": 40, + "last_link_id": 63, + "nodes": [ + { + "id": 1, + "type": "StateDictLoader", + "pos": [ + 26, + 47 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "DICT", + "type": "DICT", + "links": [ + 43 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "StateDictLoader" + }, + "widgets_values": [ + "7th_anime_v3_A-fp16.safetensors" + ] + }, + { + "id": 32, + "type": "Dict2Model", + "pos": [ + 293, + 48 + ], + "size": { + "0": 210, + "1": 98 + }, + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "weights", + "type": "DICT", + "link": 43 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 56 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 54, + 55 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": null + } + ], + "properties": { + "Node name for S&R": "Dict2Model" + }, + "widgets_values": [ + "v1-inference_fp16.yaml" + ] + }, + { + "id": 14, + "type": "PrimitiveNode", + "pos": [ + 33, + 192 + ], + "size": { + "0": 465.44146728515625, + "1": 176.32371520996094 + }, + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 13 + ], + "slot_index": 0, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "title": "Prompt", + "properties": {}, + "widgets_values": [ + "a cute [girl:boy:0.5] in flower garden, \nclear face, \ninsanely frilled white dress, \nabsurdly long brown hair, \nsmile slightly, \nsmall tiara, \nlong sleeves highneck dress" + ] + }, + { + "id": 15, + "type": "PrimitiveNode", + "pos": [ + 36, + 416 + ], + "size": { + "0": 464.3414611816406, + "1": 193.9237060546875 + }, + "flags": {}, + "order": 2, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 14 + ], + "slot_index": 0, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "title": "Negative prompt", + "properties": {}, + "widgets_values": [ + "(low quality, worst quality:1.4), \nnsfw, \ndutch angle, \nmoles, \ntan skin, \nopened mouth, \ndetached sleeves" + ] + }, + { + "id": 8, + "type": "CLIPTextEncode", + "pos": [ + 547.1469999999991, + 127.33800000000001 + ], + "size": { + "0": 210, + "1": 54 + }, + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 54 + }, + { + "name": "text", + "type": "STRING", + "link": 13, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 10 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "a cute [girl:boy:0.5] in flower garden, \nclear face, \ninsanely frilled white dress, \nabsurdly long brown hair, \nsmile slightly, \nsmall tiara, \nlong sleeves highneck dress" + ] + }, + { + "id": 9, + "type": "CLIPTextEncode", + "pos": [ + 546, + 245 + ], + "size": { + "0": 210, + "1": 54 + }, + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 55 + }, + { + "name": "text", + "type": "STRING", + "link": 14, + "widget": { + "name": "text", + "config": [ + "STRING", + { + "multiline": true + } + ] + } + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 11 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "(low quality, worst quality:1.4), \nnsfw, \ndutch angle, \nmoles, \ntan skin, \nopened mouth, \ndetached sleeves" + ] + }, + { + "id": 25, + "type": "EmptyLatentImage", + "pos": [ + 548, + 344 + ], + "size": { + "0": 210, + "1": 106 + }, + "flags": {}, + "order": 3, + "mode": 0, + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 29 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [ + 512, + 512, + 1 + ] + }, + { + "id": 7, + "type": "KSamplerSetting", + "pos": [ + 809, + 49 + ], + "size": { + "0": 210, + "1": 262 + }, + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 56 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 10 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 11 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 29 + } + ], + "outputs": [ + { + "name": "DICT", + "type": "DICT", + "links": [ + 15 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSamplerSetting" + }, + "widgets_values": [ + 0, + false, + 15, + 7, + "dpmpp_2m", + "karras", + 1 + ] + }, + { + "id": 12, + "type": "KSamplerXYZ", + "pos": [ + 1074, + 49 + ], + "size": { + "0": 210, + "1": 154 + }, + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "setting", + "type": "DICT", + "link": 15 + }, + { + "name": "model", + "type": "MODEL", + "link": null + }, + { + "name": "seed", + "type": "STRING", + "link": 62, + "widget": { + "name": "seed", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + }, + "slot_index": 2 + }, + { + "name": "cfg", + "type": "STRING", + "link": null, + "widget": { + "name": "cfg", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + }, + "slot_index": 4 + }, + { + "name": "sampler_name", + "type": "STRING", + "link": null, + "widget": { + "name": "sampler_name", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + }, + { + "name": "scheduler", + "type": "STRING", + "link": null, + "widget": { + "name": "scheduler", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + }, + "slot_index": 6 + }, + { + "name": "steps", + "type": "STRING", + "link": null, + "widget": { + "name": "steps", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 24 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSamplerXYZ" + }, + "widgets_values": [ + "1,2,3,4,5", + "", + "5, 7, 9", + "", + "karras, normal, simple" + ] + }, + { + "id": 39, + "type": "PrimitiveNode", + "pos": [ + 810, + 358 + ], + "size": { + "0": 210, + "1": 76 + }, + "flags": {}, + "order": 4, + "mode": 0, + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 62 + ], + "widget": { + "name": "seed", + "config": [ + "STRING", + { + "multiline": true, + "default": "" + } + ] + } + } + ], + "title": "Seeds", + "properties": {}, + "widgets_values": [ + "1,2,3,4,5" + ] + }, + { + "id": 22, + "type": "VAELoader", + "pos": [ + 803.035, + 505.9440000000002 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 5, + "mode": 0, + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 58 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "kl-f8-anime2.ckpt" + ] + }, + { + "id": 37, + "type": "VAELoader", + "pos": [ + 803, + 601 + ], + "size": { + "0": 210, + "1": 58 + }, + "flags": {}, + "order": 6, + "mode": 0, + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 59 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "vae-ft-mse-840000-ema-pruned.ckpt" + ] + }, + { + "id": 38, + "type": "VAEIter", + "pos": [ + 1060, + 506 + ], + "size": { + "0": 210, + "1": 46 + }, + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "vae1", + "type": "VAE", + "link": 58 + }, + { + "name": "vae2", + "type": "VAE", + "link": 59 + } + ], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 60 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEIter" + } + }, + { + "id": 24, + "type": "GridImage", + "pos": [ + 1590, + 346 + ], + "size": { + "0": 692.8555297851562, + "1": 616.837890625 + }, + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 61 + } + ], + "properties": { + "Node name for S&R": "GridImage" + }, + "widgets_values": [ + "ComfyUI-Grid", + 5, + 1 + ] + }, + { + "id": 21, + "type": "VAEDecodeBatched", + "pos": [ + 1327.7530000000013, + 50 + ], + "size": { + "0": 210, + "1": 78 + }, + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 24 + }, + { + "name": "vae", + "type": "VAE", + "link": 60, + "slot_index": 1 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 61, + 63 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecodeBatched" + }, + "widgets_values": [ + 4 + ] + }, + { + "id": 40, + "type": "PreviewImage", + "pos": [ + 1589, + 51 + ], + "size": { + "0": 210, + "1": 250 + }, + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 63 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + } + } + ], + "links": [ + [ + 10, + 8, + 0, + 7, + 1, + "CONDITIONING" + ], + [ + 11, + 9, + 0, + 7, + 2, + "CONDITIONING" + ], + [ + 13, + 14, + 0, + 8, + 1, + "STRING" + ], + [ + 14, + 15, + 0, + 9, + 1, + "STRING" + ], + [ + 15, + 7, + 0, + 12, + 0, + "DICT" + ], + [ + 24, + 12, + 0, + 21, + 0, + "LATENT" + ], + [ + 29, + 25, + 0, + 7, + 3, + "LATENT" + ], + [ + 43, + 1, + 0, + 32, + 0, + "DICT" + ], + [ + 54, + 32, + 1, + 8, + 0, + "CLIP" + ], + [ + 55, + 32, + 1, + 9, + 0, + "CLIP" + ], + [ + 56, + 32, + 0, + 7, + 0, + "MODEL" + ], + [ + 58, + 22, + 0, + 38, + 0, + "VAE" + ], + [ + 59, + 37, + 0, + 38, + 1, + "VAE" + ], + [ + 60, + 38, + 0, + 21, + 1, + "VAE" + ], + [ + 61, + 21, + 0, + 24, + 0, + "IMAGE" + ], + [ + 62, + 39, + 0, + 12, + 2, + "STRING" + ], + [ + 63, + 21, + 0, + 40, + 0, + "IMAGE" + ] + ], + "groups": [], + "config": {}, + "extra": {}, + "version": 0.4 +} \ No newline at end of file diff --git a/examples/workflow_xyz_vae.png b/examples/workflow_xyz_vae.png new file mode 100644 index 0000000..7d8225a Binary files /dev/null and b/examples/workflow_xyz_vae.png differ diff --git a/nodes.png b/nodes.png deleted file mode 100644 index 16a5db7..0000000 Binary files a/nodes.png and /dev/null differ