Adds Boogu image support#1419
Conversation
| } | ||
| else if (IsBoogu() && id is null && (qwenImage = GetPromptImage(true, true)) is not null) | ||
| { | ||
| if (!NodeHelpers.TryGetValue("__boogu_edit_cond__", out string booguNode)) |
There was a problem hiding this comment.
this is probably not a good idea
| } | ||
| // TODO: Registry of model default preferences instead of this | ||
| else if (IsFlux() || IsWanVideo() || IsWanVideo22() || IsOmniGen() || IsQwenImage() || IsZImage() || IsZetaChroma() || IsErnie() || IsHiDreamO1() || IsLens() || IsPixelDiT()) | ||
| else if (IsFlux() || IsWanVideo() || IsWanVideo22() || IsOmniGen() || IsQwenImage() || IsZImage() || IsZetaChroma() || IsErnie() || IsHiDreamO1() || IsLens() || IsPixelDiT() || IsBoogu() ) |
There was a problem hiding this comment.
I had to stare at this for a good 2 minutes before figuring out where the problem was
| { | ||
| helpers.LoadClip("boogu", helpers.GetQwen3vl_8bModel()); | ||
| helpers.DoVaeLoader(UserInput.SourceSession?.User?.Settings?.VAEs?.DefaultFluxVAE, "flux-1", "flux-ae"); | ||
| double shift = UserInput.Get(T2IParamTypes.SigmaShift, 3, sectionId: sectionId); |
There was a problem hiding this comment.
are you sure this model needs a custom default shift?
There was a problem hiding this comment.
Going off of [implementation PR](https://github.com/Comfy-Org/ComfyUI/pull/14523), can maybe just scale it back to only apply on edit?
There was a problem hiding this comment.
It's already defaulted to 3.16, I don't see why you would custom-default to 3 instead of 3.16?
| helpers.DoVaeLoader(UserInput.SourceSession?.User?.Settings?.VAEs?.DefaultFluxVAE, "flux-1", "flux-ae"); | ||
| if (IsBooguEdit()) | ||
| { | ||
| double shift = UserInput.Get(T2IParamTypes.SigmaShift, 3.16, sectionId: sectionId); |
There was a problem hiding this comment.
I'm still wondering why the custom default sigma shift
There was a problem hiding this comment.
Removed. I missed that it's baked into ComfyUI. I don't know why it was in the printed workflow then.
There was a problem hiding this comment.
presumably to suggest users try modifying it, ie for Swarm side it should be on the AuraFlow modifiable sigma shift list
There was a problem hiding this comment.
Added back in, user overrideable
| [HiDream O1](#hidream-o1) | "Pixel UiT" | 2026 | HiDream | 8B | Minimal | Modern, intelligent, fast, decent quality | | ||
| [Lens](#lens) | MMDiT | 2026 | Microsoft | 4B | Minimal | Modern, lightweight, eh quality | | ||
| [Ideogram 4](#ideogram-4) | DiT | 2026 | Ideogram AI | 9B | Yes | Modern, advanced on input understanding | | ||
| [Boogu](#boogu) | MLLM | 2026 | Boogu | 10B | No | Modern, fast | |
There was a problem hiding this comment.
the No here doesn't sound correct to what was said on discord
... Also I kinda doubt MLLM is correct
There was a problem hiding this comment.
It's uncensored in my tests, has poor knowledge of genitals but doesn't shy away from it.
There was a problem hiding this comment.
Then "Minimal" means it's eg missing genitals but otherwise complete,
| - Turbo: [Comfy-Org/Boogu-Image - Turbo FP8](<https://huggingface.co/Comfy-Org/Boogu-Image/resolve/main/diffusion_models/boogu_image_turbo_fp8_scaled.safetensors>) | ||
| - Or the NVFP4 (6 gigs) here: [Comfy-Org/Boogu-Image - Turbo nvfp4](<https://huggingface.co/Comfy-Org/Boogu-Image/resolve/main/diffusion_models/boogu_image_turbo_nvfp4.safetensors>) | ||
| - Uses the Flux.1 VAE and a Qwen3-VL text encoder, both downloaded and handled automatically. | ||
| - For editing, use the `Edit` model and give it an init image - SwarmUI automatically wires it in as the reference. |
| AddStep(g => | ||
| { | ||
| g.FinalPrompt = g.CreateConditioning(g.UserInput.Get(T2IParamTypes.Prompt), g.CurrentTextEnc.Path, g.UserInput.Get(T2IParamTypes.Model), true, "6"); | ||
| if (g.IsBooguEdit()) |
| AddStep(g => | ||
| { | ||
| g.FinalNegativePrompt = g.CreateConditioning(g.UserInput.Get(T2IParamTypes.NegativePrompt, ""), g.CurrentTextEnc.Path, g.UserInput.Get(T2IParamTypes.Model), false, "7"); | ||
| if (!g.IsBooguEdit()) |
| public bool IsBoogu() => IsModelCompatClass(T2IModelClassSorter.CompatBoogu); | ||
|
|
||
| /// <summary>Returns true if the current model is Boogu and has a prompt image (consider it edit model).</summary> | ||
| public bool IsBooguEdit() => IsBoogu() && UserInput.TryGet(T2IParamTypes.PromptImages, out List<Image> images) && images.Count > 0; |
There was a problem hiding this comment.
This one I waffled on, ended up adding. Since the predicate is different than others in this file, let me know if you prefer to remove it.
| /// <summary>Creates a "CLIPTextEncode" or equivalent node for the given input, applying prompt-given conditioning modifiers as relevant.</summary> | ||
| public JArray CreateConditioning(string prompt, JArray clip, T2IModel model, bool isPositive, string firstId = null, bool isRefiner = false, bool isVideo = false, bool isVideoSwap = false, bool isPixelDecoder = false) | ||
| { | ||
| if (IsBooguEdit() && isPositive) |
There was a problem hiding this comment.
Wrong place for this, put it where the code for other model-specific stuff is. And make sure swarmtextencodeadvanced works when it's supposed to
| - Uses the Flux.1 VAE and a Qwen3-VL text encoder, both downloaded and handled automatically. | ||
| - For editing, use the `Edit` model and give it a prompt image - SwarmUI automatically wires it in as the reference. | ||
| - **Parameters:** | ||
| - **Sampler**: For Turbo, use LCM, otherwise DPM++ 2M is fine. |
There was a problem hiding this comment.
There is Base, Edit, Turbo. They are different models with different defaults and potentially different recommendations, this should be clarified here.
| { | ||
| helpers.LoadClip("boogu", helpers.GetQwen3vl_8bModel()); | ||
| helpers.DoVaeLoader(UserInput.SourceSession?.User?.Settings?.VAEs?.DefaultFluxVAE, "flux-1", "flux-ae"); | ||
| double shift = UserInput.Get(T2IParamTypes.SigmaShift, 3.16, sectionId: sectionId); |
There was a problem hiding this comment.
The custom-default unmodified shift is weird and shouldn't be here
…ncoder kick in when it should


Had to negative match OmniGen due to sharing the same matching headers: https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged/blob/main/split_files/diffusion_models/omnigen2_fp16.safetensors