Abstract Image Generator V1 (Random-Gacha-Mode)
One node, one seed, endless abstract bases — the gacha machine behind this pack
- IMAGE
This is the node the whole pack grew out of, and the display name says it all: Abstract Image Generator V1 (Random-Gacha-Mode). One node, a seed, and a pile of probability inputs, and out comes a complete abstract image - background, shapes, patterns, noise, post-processing, the works. Where the V2 nodes split all that into a chain of individual layers you assemble by hand, this one is the "pull the lever" experience: click, get a fully-finished abstract base, roll again if you don't like it. The word "gacha" is doing real work here.
Before the modular nodes existed, this was the whole pack. The README frames it honestly as the old version, and the category is literally AbstractImage/Old-V1. That doesn't make it obsolete - for rapid idea generation, a single node that returns a finished composition is often faster than hand-stacking six layer nodes. Use it when you want quantity and surprise; use the V2 chain when you want control.
Like every node here, the output is a plain IMAGE, and it's meant for the same trick: VAE Encode it, then run img2img at 0.8–0.9 denoise so the model keeps your composition and paints in the actual subject. The pack's README example images are all generated at denoise 0.80, which is a solid starting number.
What's actually going on
The mechanism is the interesting part, because it's genuinely well-designed. A single main seed derives eight separate component seeds - one each for background, shapes, pattern, noise, post-processing, blending, color generation, and shape-type bias. Every random choice in the image is made from one of those component RNGs, and every component RNG takes an optional salt. So:
- Change seed → the entire image re-rolls.
- Change shapes_salt → only the shape randomness changes. Everything else stays put.
That's the killer feature, and it's what separates this from a plain randomizer. You find a composition you like, then use the salts to nudge individual pieces - shift color_generation_salt to re-tint it without touching the layout, tweak shapes_salt to adjust shape placement. Nine salt inputs total: bg_salt, shapes_salt, pattern_salt, noise_salt, post_processing_salt, blending_salt, color_generation_salt, shape_type_bias_salt.
Layer choice is probability-driven: layer_shapes_prob, layer_pattern_prob, and layer_noise_prob (defaults 0.5/0.25/0.25) decide the mix, and they're normalized, so you can think of them as relative weights. num_layers_min/max sets how many layers get stacked, and shapes_per_layer_min/max plus line_width_min/max govern the shapes layers. Each layer even gets a blend mode drawn from the same 12-mode set, with normal weighted heavily so the results stay tasteful by default.
Color is handled by color_mode - rgb, grayscale, three toned-* presets (green-yellow, red-magenta, blue-cyan), plus toned-rgb which unlocks the toned_rgb_r/g/b sliders for a custom palette. Post-processing is baked in as probabilities: bg_type_gradient_prob (0.7 default - gradients preferred), feather_layer_prob, add_grain_prob, adjust_contrast_prob, adjust_brightness_prob, grayscale_final_prob, final_blur_prob, each with min/max parameter ranges.
The few inputs a beginner should touch
- seed - your gacha lever. Roll it and reroll.
- width / height - 64–2048, stepping in 8s.
- color_mode - the fastest way to give every roll a coherent palette.
toned-*presets are where the pack's images get their signature look. - color_generation_salt - the one salt worth knowing first, because it re-colors without destroying a composition you found.
Install
Same pack, same story. ComfyUI Manager → search AbstractImaGen → install → restart → refresh, or:
cd ComfyUI/custom_nodes
git clone https://github.com/wakattac/ComfyUI-AbstractImaGen
Dependencies are Pillow, numpy, scipy, and torch - all already present in a normal ComfyUI install. No models, no downloads, no API. The node shows up under AbstractImage/Old-V1.
Gotchas
- The probability inputs are relative, not absolute - because they're normalized, setting all three to 0.5 gives a uniform mix, not "every layer type appears." If you want shapes only, set
layer_pattern_probandlayer_noise_probto 0. - Salts can be negative (the range is the full int64), which is fine - the code mods everything into a valid seed. Don't panic if a salt ends up at −42.
- This node is single-frame like the rest of the pack.
- If you're building a workflow you intend to hand-tune later, the V2 chain is the better foundation; this node's whole personality is "accept the randomness." The salts give you steering, not a steering wheel.
Inputs (43)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 51264–2048 | Width of the generated image. |
| height | INT | 51264–2048 | Height of the generated image. |
| seed | INT | 00–18446744073709550000 | Main seed controlling overall randomness. |
| color_mode | COMBO | rgb | Overall color scheme for the image. |
| toned_rgb_r | INT | 1280–255 | Red component for Toned RGB color mode. |
| toned_rgb_g | INT | 1280–255 | Green component for Toned RGB color mode. |
| toned_rgb_b | INT | 1280–255 | Blue component for Toned RGB color mode. |
| layer_shapes_prob | FLOAT | 0.500–1 | Probability of adding a layer of shapes. |
| layer_pattern_prob | FLOAT | 0.250–1 | Probability of adding a tiled pattern layer. |
| layer_noise_prob | FLOAT | 0.250–1 | Probability of adding a noise pattern layer. |
| num_layers_min | INT | 20–10 | Minimum number of feature layers. |
| num_layers_max | INT | 50–10 | Maximum number of feature layers. |
| shapes_per_layer_min | INT | 30–50 | Minimum number of shapes to draw per shapes layer. |
| shapes_per_layer_max | INT | 120–50 | Maximum number of shapes to draw per shapes layer. |
| line_width_min | INT | 51–100 | Minimum width for lines and zig-zags in shapes layers. |
| line_width_max | INT | 301–100 | Maximum width for lines and zig-zags in shapes layers. |
| filled_shape_color_mode | COMBO | random | Color selection mode for filled shapes. |
| line_zigzag_color_mode | COMBO | random | Color selection mode for lines and zig-zags. |
| bg_type_gradient_prob | FLOAT | 0.700–1 | Probability of using a gradient background instead of a solid color. |
| feather_layer_prob | FLOAT | 0.200–1 | Probability of feathering (blurring the alpha of) each feature layer. |
| add_grain_prob | FLOAT | 0.150–1 | Probability of adding photographic grain (noise) to the final image. |
| adjust_contrast_prob | FLOAT | 0.200–1 | Probability of adjusting the contrast of the final image. |
| adjust_brightness_prob | FLOAT | 0.200–1 | Probability of adjusting the brightness of the final image. |
| grayscale_final_prob | FLOAT | 0.100–1 | Probability of converting the final image to grayscale (if not already). |
| final_blur_prob | FLOAT | 0.050–1 | Probability of applying a final overall blur to the image. |
| grain_amount_min | FLOAT | 0.0100–1 | Minimum amount of grain to add (if applied). |
| grain_amount_max | FLOAT | 0.0800–1 | Maximum amount of grain to add (if applied). |
| contrast_min | FLOAT | 0.800–5 | Minimum contrast adjustment factor (if applied). |
| contrast_max | FLOAT | 1.300–5 | Maximum contrast adjustment factor (if applied). |
| brightness_min | INT | -20-255–255 | Minimum brightness adjustment amount (if applied). |
| brightness_max | INT | 20-255–255 | Maximum brightness adjustment amount (if applied). |
| final_blur_sigma_min | FLOAT | 0.400–10 | Minimum sigma for the final blur (if applied). |
| final_blur_sigma_max | FLOAT | 1.200–10 | Maximum sigma for the final blur (if applied). |
| feather_sigma_min | FLOAT | 1.00–20 | Minimum sigma for feathering layers (if applied). |
| feather_sigma_max | FLOAT | 6.00–20 | Maximum sigma for feathering layers (if applied). |
| bg_salt | INT | 0-18446744073709550000–18446744073709550000 | Salt for background generation randomness. |
| shapes_salt | INT | 0-18446744073709550000–18446744073709550000 | Salt for shapes generation randomness. |
| pattern_salt | INT | 0-18446744073709550000–18446744073709550000 | Salt for pattern generation randomness. |
| noise_salt | INT | 0-18446744073709550000–18446744073709550000 | Salt for noise layer generation randomness. |
| post_processing_salt | INT | 0-18446744073709550000–18446744073709550000 | Salt for post-processing randomness (e.g., applying features, parameters). |
| blending_salt | INT | 0-18446744073709550000–18446744073709550000 | Salt for blending mode selection randomness. |
| color_generation_salt | INT | 0-18446744073709550000–18446744073709550000 | Salt for random color generation randomness. |
| shape_type_bias_salt | INT | 0-18446744073709550000–18446744073709550000 | Salt for random shape type selection randomness (filled vs line/zigzag). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |