Shima Photo Remix
Img2img that respects your seed sync and gives you a second latent
- image
- positive
- negative
- model
- vae
- shima.commonparams
- modelcitizen.bndl
- masterprompt.bndl
- shima.samplercommons
- image
- latent
Shima Photo Remix is the pack's img2img node, and the thing it does differently from a plain "Load Image → VAE Encode → KSampler" chain is resolution handling. You feed it a source image, and it remixes it at a resolution you choose: keep the source size, snap to SDXL buckets, snap to SD 1.5 buckets, or pick a custom bucket. That single decision is where most hand-built img2img graphs quietly go wrong - upscaling or downscaling a source into an off-model aspect ratio produces subtly worse results, and a buckets-aware node does the rounding for you. The default denoise of 0.60 is also a sensible remix starting point: enough to reimagine, not so much that it abandons the source entirely.
The other genuinely useful thing is the seed plumbing. Shima's whole philosophy is that seed should be a shared, external value - their s33d standard - so that every sampler in a workflow draws from the same source and the "control_after_generate" widget clutter disappears. Photo Remix plugs straight into that: wire in shima.commonparams and keep use_commonparams on, and the seed, dimensions, and sampler settings come from the shared Commons bundle. That's how you get a remix that stays in sync with the rest of a multi-stage generation instead of rolling its own seed.
How it works
It's a standard VAE-encode → KSampler → VAE-decode img2img pipeline with a few Shima conventions layered on. Inputs can arrive two ways - as individual wires (positive, negative, model, vae) or as bundles (modelcitizen.bndl, masterprompt.bndl), and the bundles override individual wires when both are present, per the pack's docs. If you leave both unconnected for something it needs, it raises an explicit error naming exactly what's missing - no silent failures. Sampler settings can come from three places with a clear priority: your local widgets, the shima.samplercommons bundle if connected, and shima.commonparams if use_commonparams is on.
The output is two-fold: the remixed image and the latent it was sampled from. That latent output is the part people forget exists - it means you can chain a second pass (a finer CFG, an upscale, a different sampler) directly off the remix's latent instead of re-encoding the image and compounding error.
The inputs that matter
image- the source to remix.resolution_mode-Source,SDXL Buckets,SD1.5 Buckets, orCustom(withbucket_width/bucket_heightwhen custom).denoise- remix strength; 0.60 default.s33d,randomize- the seed and its randomization behavior.steps,cfg,sampler_name,scheduler- standard sampling.model,vae,positive,negative- or the equivalent bundles.shima.commonparams,use_commonparams,shima.samplercommons- the sync bundle inputs.
Outputs: image (IMAGE), latent (LATENT).
How to install it
Part of the Shima pack - ComfyUI Manager, search "Shima", or:
cd ComfyUI/custom_nodes
git clone https://github.com/KDB-USJP/shima_wf.git Shima
restart. No extra downloads - it uses the models already in your ComfyUI folders.
Common issues & troubleshooting
"No Model provided!" / "No Conditioning provided!" The explicit-error path: neither the individual inputs nor the bundles delivered what it needs. Connect the wires or the matching bundles - Photo Remix refuses to guess.
Remix looks nothing like the source. Denoise too high (or the source was drastically resized by a bucket mode that doesn't match its aspect ratio). Drop denoise toward 0.4–0.5 and pick the resolution mode that matches the source's native shape.
Seed ignores your s33d. If use_commonparams is on and a Commons bundle is wired, the bundle's seed wins by design. Turn the sync toggle off to force the local seed.
Inputs (22)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| s33d | INT | 00–18446744073709550000 | — |
| randomize | BOOLEAN | false | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.00–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 0.600–1 | — |
| resolution_mode | COMBO | Source | 4 options: Source, SDXL Buckets, SD1.5 Buckets, Custom |
| positiveopt | CONDITIONING | — | |
| negativeopt | CONDITIONING | — | |
| modelopt | MODEL | — | |
| vaeopt | VAE | — | |
| shima.commonparamsopt | DICT | Configuration bundle from Shima.Commons (overrides settings) | |
| use_commonparamsopt | BOOLEAN | true | If True, use settings from Shima.Commons bundle |
| modelcitizen.bndlopt | BNDL | Bundle containing Model, CLIP, and VAE (overrides individual inputs) | |
| masterprompt.bndlopt | BNDL | Bundle containing Positive and Negative conditioning (overrides individual inputs) | |
| bucket_widthopt | INT | 102464–8192 | — |
| bucket_heightopt | INT | 102464–8192 | — |
| allow_external_linkingopt | BOOLEAN | false | If ON, this node broadcasts/receives OUTSIDE the Island (ignores group regex) |
| show_used_valuesopt | BOOLEAN | false | Show actual values being used (debug) |
| shima.samplercommonsopt | DICT | Sampler settings bundle from Shima.SamplerCommons (overrides sampler settings) |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| latent | LATENT | — |