Nodes/Steaked-nodes/Nebula Generator
ComfyUI Node

Nebula Generator

A whole space scene from noise and math, no model required

By StealthNinja1O1·Created 11 months ago·Updated 5 months ago· 0
Nebula Generator
    • IMAGE
    ◄width800►
    ◄height600►
    ◄scale0.010►
    ◄octaves6►
    ◄persistence0.5►
    ◄lacunarity2.0►
    ◄seed0.500►
    ◄color_modecustom►
    ◄noise_typeperlin►
    ◄color1_r0.02►
    ◄color1_g0.02►
    ◄color1_b0.06►
    ◄color2_r0.10►
    ◄color2_g0.06►
    ◄color2_b0.24►
    ◄color3_r0.47►
    ◄color3_g0.16►
    ◄color3_b0.59►
    ◄color4_r1.00►
    ◄color4_g0.39►
    ◄color4_b0.78►
    ◄color5_r1.00►
    ◄color5_g1.00►
    ◄color5_b1.00►
    ◄gradient_rotation0►
    ◄gradient_scale1.0►
    ◄hue_shift0►
    ◄saturation_boost0.0►
    ◄brightness1.0►
    ◄contrast1.0►
    ◄gamma1.0►
    ◄invert_colorsfalse►
    ◄warp_strength0.0►
    ◄warp_frequency0.010►
    ◄star_density0.0010►
    ◄star_brightness0.8►
    ◄star_colorsfalse►
    ◄star_twinklefalse►
    ◄bloomfalse►
    ◄bloom_intensity0.5►
    ◄vignettefalse►
    ◄vignette_intensity0.3►
    ◄chromaticfalse►
    ◄chromatic_intensity0.10►

    Sometimes you don't want a diffusion model to imagine a nebula - you want a nebula now, at a specific size, that you can tint and twist and seed deterministically. That's what Nebula Generator is: a procedural texture generator that builds a full space scene from Perlin-style noise, layered color stops, and a pile of post-processing toggles. No checkpoint, no VRAM, no model. Just numpy doing the math in the time it takes your graph to even start loading weights.

    The core is fBm - fractal Brownian motion, or layered noise. You pick a noise family (perlin, simplex, ridged, billow, turbulence), a number of octaves (layers of increasing frequency), and persistence/lacunarity (how each layer's amplitude and frequency grow), and the node builds a smooth, cloudy scalar field. That field is then colored by mapping values through a five-color gradient - color1 through color5, each with its own RGB sliders, defaulted to a purple-blue nebula palette - or one of the procedural color_modes like rainbow, radial, or plasma. Then the post stack kicks in: hue_shift, saturation_boost, brightness, contrast, gamma, plus toggles for warp, bloom, vignette, chromatic aberration, and even stars (star_density, star_brightness, with optional star_colors and star_twinkle).

    The inputs that matter

    Realistically you will not touch 40 inputs. The ones that do the heavy lifting:

    • width / height - canvas size. 64 to 4096, stepped by 64.
    • scale - the zoom of the noise. Smaller values stretch the clouds out into big shapes; this is the single most important aesthetic knob.
    • octaves - detail layers. 6 is default; more gets wispier.
    • color_mode and the five color1..5 RGB stops - where the palette comes from.
    • seed - note it's a float from 0–1, not an integer. Move it a little for a new cloud field.

    star_density is a fun one: 0.001 gives a sprinkling, up to 0.01 is a full sky. And star_twinkle is a nice touch that costs nothing.

    Where it fits

    Think of it as a background generator and a compositing asset factory. A procedural nebula makes a great backdrop for a foreground subject, a depth map input for parallax, a texture for something you're going to distort anyway, or just a fast way to generate a sky to img2img against. Because it's fully seedable, you can lock a specific cloud field and re-render at different sizes with the same seed - the deterministic part of diffusion that diffusion itself doesn't give you.

    Install

    Part of Steaked-nodes:

    cd ComfyUI/custom_nodes
    git clone https://github.com/StealthNinja1O1/Steaked-nodes
    

    Restart, or install via ComfyUI Manager ("Steaked-nodes"). Dependencies are torch, numpy, Pillow - all standard.

    Common issues

    The classic mistake is leaving scale at its tiny default and wondering why everything is one giant blur - that's the stretched-cloud look, and it's intentional; raise scale toward 0.05 for finer detail. If your colors all collapse into one blob, check that your five color stops are actually distinct and that contrast/gamma aren't crushing the range. And if the output looks flat, vignette and chromatic are cheap realism boosters. Stars won't show if star_density is 0 - remember it's a density, not a count.

    CategorySteaked-nodes/generators

    Inputs (44)

    NameTypeDefaultDescription
    widthINT80064–4096—
    heightINT60064–4096—
    scaleFLOAT0.0100.001–0.05—
    octavesINT61–8—
    persistenceFLOAT0.50.1–1—
    lacunarityFLOAT2.01–3—
    seedFLOAT0.5000–1—
    color_modeCOMBOcustom8 options: custom, rainbow, spectrum, radial, angular, gradient, +2
    noise_typeCOMBOperlin5 options: perlin, simplex, ridged, billow, turbulence
    color1_rFLOAT0.020–1—
    color1_gFLOAT0.020–1—
    color1_bFLOAT0.060–1—
    color2_rFLOAT0.100–1—
    color2_gFLOAT0.060–1—
    color2_bFLOAT0.240–1—
    color3_rFLOAT0.470–1—
    color3_gFLOAT0.160–1—
    color3_bFLOAT0.590–1—
    color4_rFLOAT1.000–1—
    color4_gFLOAT0.390–1—
    color4_bFLOAT0.780–1—
    color5_rFLOAT1.000–1—
    color5_gFLOAT1.000–1—
    color5_bFLOAT1.000–1—
    gradient_rotationFLOAT00–360—
    gradient_scaleFLOAT1.00.1–3—
    hue_shiftFLOAT00–360—
    saturation_boostFLOAT0.0-1–1—
    brightnessFLOAT1.00.1–2—
    contrastFLOAT1.00.1–3—
    gammaFLOAT1.00.1–3—
    invert_colorsBOOLEANfalse—
    warp_strengthFLOAT0.00–2—
    warp_frequencyFLOAT0.0100.001–0.05—
    star_densityFLOAT0.00100–0.01—
    star_brightnessFLOAT0.80–1—
    star_colorsBOOLEANfalse—
    star_twinkleBOOLEANfalse—
    bloomBOOLEANfalse—
    bloom_intensityFLOAT0.50–1—
    vignetteBOOLEANfalse—
    vignette_intensityFLOAT0.30–1—
    chromaticBOOLEANfalse—
    chromatic_intensityFLOAT0.100–0.5—

    Outputs (1)

    NameTypeDescription
    IMAGEIMAGE—