From d9f7c71671db029da388d0bd22d7291c426efee3 Mon Sep 17 00:00:00 2001 From: Trung0246 Date: Tue, 19 Dec 2023 22:53:17 -0800 Subject: [PATCH] Create DOCS.md --- DOCS.md | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 DOCS.md diff --git a/DOCS.md b/DOCS.md new file mode 100644 index 0000000..455a548 --- /dev/null +++ b/DOCS.md @@ -0,0 +1,138 @@ +### Highway + +

+ +

+ +
+More complex example of what could be done (using my personal workflow as example) with extensions like `use-everywhere`: +

+ +

+ +Right click to reveal quick actions such as pin creation and `_query` automatic filling. + +The query syntax goes as follow: + +- `>name`: input variable. +- ``n!ce n@me` ``: input variable but with special character and spaces (except `` ` ``, obviously). +- `!name`: output variable, but also delete itself, preventing from being referenced further. + - CURRENTLY BROKEN DUE TO HOW COMFYUI UPDATE THE NODES. +- `name2; !name3`: multiple input and outputs together. + +For now `Highway` node is probably stable, as long as there's no cyclic connection. + - Cyclic connection means that input and output of the same `Highway` node must not be connect, including indirect connection. + - Else will be recursion error due to how ComfyUI execute nodes (trust me I tried). + +Can probably have "nested Highway" but probably useless since the node have unlimited in-out pins. + +Recommended with [chrisgoringe/cg-use-everywhere](https://github.com/chrisgoringe/cg-use-everywhere) since it allows more complex notes rerouting. + +Demo workflow is in [assets/workflow_highway.json](https://github.com/Trung0246/ComfyUI-0246/blob/main/assets/workflow_highway.json). + +Special thanks to [@kijai](https://github.com/kijai/ComfyUI-KJNodes) for `ConditioningMultiCombine` node as which `Highway` node is based of. + +##### TODO (may or may not get implemented) + +- Cyclic detection in JS (python probably not possible unless I figure out a way how to extract the node graph). +- Node force update (for `!name`). +
+ +--- + +### Junction + +

+ +

+ +
+`_offset` is used to skip data ahead for specific type (since internally it's a sequence of data). + +`_offset` is persistent and will retains information across linked `Junction`. + +The offset syntax goes as follow: + +- `type,1`: `type` is the type (usually `LATENT`, `MODEL`, `VAE`, etc.) and `1` is the index being set. +- `type,+2`: Same as above but instead of set offset, it increase the offset instead. +- `type,-2`: Decrease offset. +- `type1, -1; type2, +2; type3, 4`: Multiple offset. + +Can automatically expand pins. + +Inspired by /u/GianoBifronte ideas. + +Demo workflow is in [assets/workflow_junction.json](https://github.com/Trung0246/ComfyUI-0246/blob/main/assets/workflow_junction.json). +
+ +--- + +### Junction Batch + +

+ +

+ +
+Basically same as `Junction` but batch as list instead for further processing. + +Hopefully difference between `batch` and `pluck` are self explainatory in the workflow. + +Have bonus ability which is able to aggregate batch input, however does not attempt to do something like `Latent From Batch` since latent is not a batch internally. + +Also if multiple same output type appear during `batch` mode, then the first same type pin will have `[11, 22, 33]`, and the next one is `[22, 33, 11]`. + +Demo workflow is in [assets/workflow_junction_batch.json](https://github.com/Trung0246/ComfyUI-0246/blob/main/assets/workflow_junction_batch.json). +
+ +--- + +### Looping and Related + +Basic looping to create 20 images with all 20 different seeds: +Screenshot 2023-11-25 161238 + +A complex looping involves FABRIC nodes from [ComfyUI_fabric](https://github.com/ssitu/ComfyUI_fabric), allowing to pick images multiple times: +Screenshot 2023-11-25 224302 + +
+ +The example above showcase that this node can turn node such as [Plasma Noise](https://github.com/Jordach/comfy-plasma) into batch. +It also allows executing multiple nodes together. + +What's it looks like in action for simpler workflow. + +https://github.com/Trung0246/ComfyUI-0246/assets/11626920/563b9a00-412a-49b6-b1c6-24c83887a4d3 + +Pros: +- Can "loop" within a single prompt queue. + +Cons: + - Will mess up the workflow very easily if not careful. + - Requires two `Hold` to sandwich the `Loop` node to be usable. + - The actual hard limit of how many times can be looped depends on [python maximum recursion depth](https://stackoverflow.com/questions/3323001/what-is-the-maximum-recursion-depth-and-how-to-increase-it). So increase it will increase the maximum loop count. I may remove this limitation in the future with even more extreme hacky implement, or proper node execution way. + +To reuse data from previous iteration, use the trio of `Hold` that should be arranged like in FABRIC workflow. + +Probably unstable as hell since I only tested for simple case. + +Until the topological PRs from the ComfyUI repos got merged, this node will be kept around. +
+ +--- + +### Beautify + +

+ +

+ +
+Recursively display structural data information, especially useful when dealing with `Highway`, `Junction` and `JunctionBatch`. + +- `basic`: minimally shows as little as possible. +- `more`: show everything from `basic` but also shows the content. Does not expand if it meet a non-iterable object. +- `full`: show everything as much as possible. +- `json`: attempt to convert the input to json and display it. Will fail if the data cannot be converted. +