Nodes/ComfyUI-sonar/SonarAdvancedVoronoiNoise
ComfyUI Node

SonarAdvancedVoronoiNoise

The abstract-pattern node with a genuinely weird learning curve

By blepping·Created 3 years ago·Updated 14 days ago· 49
SonarAdvancedVoronoiNoise
  • sonar_custom_noise_opt
  • custom_noise
  • SONAR_CUSTOM_NOISE
factor1.000
rescale0.000
n_points256
distance_modeeuclidean
z_initial0.000
z_increment1.000
z_max9999.000
z_max_modereset
result_modediff2
octave_modenew_features
octaves3
gain0.750
lacunarity2.000
initial_amplitude1.000
initial_scale1.000
normalizedefault

Voronoi noise - also called cellular noise - isn't built by filtering white noise like most of the pack. Instead it scatters feature points across the space and computes, for each pixel, the distance to its nearest point(s). The result is a field of organic cells: sharp boundaries, soft gradients toward the centers, and a structure that looks a lot like cracked mud, stained glass, or microscopic tissue depending on how you read it. As diffusion noise it tends to impose that cellular geometry on whatever you generate, which is either exactly what you want (abstract, architectural, organic) or a nightmare you'll want to walk back immediately.

The author's own node description is the most honest framing you'll get: "Voronoi noise is a very weird noise type. The default settings are just borderline usable with SDXL at a 20% ratio with normal Gaussian noise." Translation: don't feed a latent 100% voronoi and expect a coherent picture. The practical pattern is to blend it in - ~20% voronoi, ~80% gaussian, via something like SonarBlendedNoise - or use it at low denoise where it nudges structure without owning the image.

Given the depth here, the ones that matter first:

  • n_points - how many feature points. More points = more detail, but slower. 2 is the floor.
  • octaves - layers of voronoi noise stacked together; gain and lacunarity control how each octave's amplitude and frequency scale. This is where the "natural" texture comes from.
  • distance_mode / result_mode - the deep end. Distance modes (euclidean, manhattan, chebyshev, minkowski, fuzz…) change how distance is measured; result modes (cellid, diff, ridge, softmin, f1–f4…) change what value each cell reports. Both accept comma-separated lists for per-octave settings, + to average modes, and mode:arg=value syntax for arguments. The node description explicitly says the project docs cover these better than the tooltips can.
  • z_initial / z_increment / z_max / z_max_mode - a depth dimension: z increments across calls (so successive sampling steps can traverse a 3D voronoi field), and at z_max the field either resets, wraps, or bounces. This is how you get consistent-but-evolving cells across sampling steps.
  • normalize - default / forced / disabled; force it if you're blending with weird modes.
  • factor / rescale - the standard strength pair, plus two optional noise inputs (sonar_custom_noise_opt for chaining, custom_noise to seed the feature points from another noise type - the tooltip warns it won't play nice with spectral modulation or seed-managing noise like Brownian).

Install is the pack's one-liner, no models:

cd ComfyUI/custom_nodes
git clone https://github.com/blepping/ComfyUI-sonar

The way in: don't start at the defaults and despair. Start at a low blend ratio with gaussian, keep the default euclidean/diff2 read of the cells, and only then start playing with octaves and result modes. And expect iteration - this node has more combinations than you'll exhaust, and "weird" is a feature here, not a bug. If your image comes out looking like stained glass, you've successfully used voronoi noise; whether that's what you wanted is the only question.

Categoryadvanced/noise

Inputs (18)

NameTypeDefaultDescription
factorFLOAT1.000-10000–10000Scaling factor for the generated noise of this type.
rescaleFLOAT0.0000–10000When non-zero, this custom noise item and other custom noise items items connected to it will have their factor scaled to add up to the specified rescale value. When set to 0, rescaling is disabled.
n_pointsSTRING256Controls the number of features points in the generated noise. Higher generally results in more detail/better results but is slower. May be a comma separated list for each octave (only applicable when octave mode is set to new_features). 2 is the minimum value.
distance_modeSTRINGeuclideanDistance modes. You can specify a comma-separated list of items which will be used for each octave. You can specify an average of multiple distance modes by separating the names with +. Some modes can take arguments. Example syntax: modename:argname=value:argname=value All modes support scaling their output with dscale (which defaults to 1). Possible distance modes: angle, angle_sigmoid, angle_tanh, chebyshev, euclidean, fractal_norm, fuzz, manhatten, minkowski, quadratic, weight
z_initialFLOAT0.000-10000–10000Initial value for z (depth).
z_incrementFLOAT1.000-10000–10000Amount z (depth) is incremented when applicable.
z_maxFLOAT9999.000-10000–10000Maximum difference from the intial value. At that point, z_max_mode will apply. When set to 0, z_increment has no effect and you will get different noise each time you call the noise sampler.
z_max_modeCOMBOresetControls what happens when the z_max limit is hit (see tooltip for z_max). Reset will reset the feature points and z to the initial values. Wrap will reset z to the initial value. Bounce will flip the sign on the increment and do an increment.
result_modeSTRINGdiff2Result modes. You can specify a comma-separated list of items which will be used for each octave. You can specify an average of multiple result modes by separating the names with +. Some modes can take arguments. Example syntax: modename:argname=value:argname=value All modes support scaling their output with rscale (which defaults to 1). Possible result modes: cellid, diff, diff2, f, f1, f2, f3, f4, fractal_norm, fuzz, gradient_magnitude, inv_f, inv_f1, inv_f2, inv_f3, inv_f4, median_distance, ridge, softmin
octave_modeCOMBOnew_featuresOnly relevant when generating multiple octaves. Controls whether octaves share a set of feature points or if they are different for each octave (note that this is slower). Modes starting with 'same' will use the same feature points per octave but may transform them.
octavesINT31–10000Number of octaves of noise to generate.
gainFLOAT0.750-10000–10000
lacunarityFLOAT2.000-10000–10000
initial_amplitudeFLOAT1.000-10000–10000
initial_scaleFLOAT1.000-10000–10000
normalizeCOMBOdefaultControls whether noise is normalized to 1.0 strength.
sonar_custom_noise_optoptSONAR_CUSTOM_NOISE,OCS_NOISEOptional input for more custom noise items. The following input types are supported: SONAR_CUSTOM_NOISE, OCS_NOISE
custom_noiseoptSONAR_CUSTOM_NOISE,OCS_NOISEOptional input if you want to use some other noise type for the initial feature points. Won't work well with noise types that care about the content of the latent (I think only spectral modulation) or manage their own seed (I believe this only applies to Brownian or if you're using the custom noise parameters node to override seeds/fork the RNG). The following input types are supported: SONAR_CUSTOM_NOISE, OCS_NOISE

Outputs (1)

NameTypeDescription
SONAR_CUSTOM_NOISESONAR_CUSTOM_NOISEA custom noise chain.