DeepStereo: Random Noise Generator
The twelve-flavor texture machine that makes your Magic Eye patterns
- noise_texture
This is the texture workhorse of the pack. Where ProceduralTextureGenerator builds a pattern from your source image, this node is a straight procedural pattern generator with twelve noise types - and it's tuned for the one constraint that actually matters in stereograms: the pattern has to tile seamlessly and repeat at roughly the width your eyes will lock onto.
The twelve noise_type options: rgb (random color noise), grayscale, colored_dots, perlin, voronoi, kaleidoscope, waves, cellular, fractal, spiral, interference, crystalline. The README's favorites for Magic Eye work are kaleidoscope, crystalline, and interference - the symmetric types tend to fuse more reliably than pure random static.
How it works
Three required inputs define the canvas and the pattern period:
output_width/output_height- the final image size (64–4096).pattern_width(default 100) - the width of the repeating pattern. This is the one that matters. The README says match it to yourmax_separationin the stereogram node, and that's not decoration: if the pattern repeats wider than the separation range, your eyes have nothing consistent to lock onto.
Then the per-type controls, most of which you only touch for specific noise types:
noise_scale- scale of the noise pattern.frequency(0.1–50) - pattern frequency for the wave/interference types.octaves(1–8) - noise layers, forfractal.symmetry(2–16) - symmetry points forkaleidoscope.color_variation- how much colors wander.dot_densityandbase_color- forcolored_dotsonly.seamless_tiling(default on) - makes the pattern tile edge-to-edge without a seam. Leave it on; a visible seam is a fast way to kill fusion.random_seed-0means a fresh random pattern every run; set it for reproducibility.
One output: noise_texture, wired into StereogramGenerator's texture input.
Getting it to work
Start with pattern_width equal to your stereogram's max_separation and let the defaults carry you. If the result won't fuse, check three things: is seamless_tiling on, is the pattern repeating at roughly the separation width, and is the pattern high-contrast enough to track? The README's texture tips apply here too - high contrast, nothing blurry, pattern width consistent with separation. If you like a look, pin random_seed so it doesn't regenerate every queue run.
Installing it
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/SanDiegoDude/ComfyUI-DeepStereo
cd ComfyUI-DeepStereo
pip install -r requirements.txt
Restart ComfyUI, or search ComfyUI-DeepStereo in ComfyUI Manager. No model downloads, no first-run waits - it's numpy and PIL doing the generating, so you can burn through all twelve noise types in an afternoon.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| output_width | INT | 51264–4096 | Width of final output image |
| output_height | INT | 51264–4096 | Height of final output image |
| pattern_width | INT | 10030–200 | Width of the actual pattern (should match max_separation) |
| noise_type | COMBO | rgb | 12 options: rgb, grayscale, colored_dots, perlin, voronoi, kaleidoscope, +6 |
| random_seedopt | INT | 00–999999 | 0 for random seed |
| dot_densityopt | FLOAT | 0.500.1–1 | For colored_dots type |
| base_coloropt | STRING | #808080 | Background color for colored_dots |
| noise_scaleopt | FLOAT | 0.100.01–1 | Scale of the noise pattern |
| frequencyopt | FLOAT | 5.00.1–50 | Frequency of the pattern |
| octavesopt | INT | 41–8 | Number of noise layers (for fractal patterns) |
| color_variationopt | FLOAT | 1.000–1 | Amount of color variation |
| symmetryopt | INT | 62–16 | Symmetry points for kaleidoscope |
| seamless_tilingopt | BOOLEAN | true | Create seamlessly tiling pattern |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| noise_texture | IMAGE | — |