Fractal Texture
Fractal texture overlay for surface and atmosphere
- image
- mask
- image
- mask
- fractal_info
Plain random noise looks like TV static; real-world surfaces don't look like static, they look like layered noise - clouds, rust, terrain, film grain - where big shapes contain smaller shapes that contain smaller shapes. That's a fractal (multi-octave) noise field, and it's what x1Fractal generates on top of your image. If you need to break up a too-clean render or give a flat surface texture, this is the cheap organic answer.
It's part of MKRShift Nodes by Cris K B, under MKRShift Nodes/VFX/Stylize.
How it works
The node builds a procedural multi-octave noise field - fractal_octaves (default 4) layers of noise at increasing frequencies, summed so the fine detail sits on top of broad structure. fractal_scale (default 96) sets the base feature size in pixels, fractal_seed (default 23) randomizes the pattern, and fractal_contrast (default 1.0) shapes how contrasty the texture is. fractal_drift (default 0.1) - this one's a little unusual - slowly varies the noise field, which matters if you're animating: a small drift gives the texture a living, shimmering quality across frames instead of a frozen static overlay. fractal_strength (default 0) blends the whole field over your image, so the node starts inert until you turn it up.
The result is that "material" look: you can use it at low strength to add surface texture that reads as organic rather than synthetic, or at high strength for a full noise-field texture pass.
The inputs that matter
Inside the settings_json:
fractal_strength- how much of the noise shows (default 0; you have to turn it up).fractal_scale- base feature size; lower = finer, higher = broader shapes.fractal_octaves- how many detail layers stack (default 4; more = finer detail, slower).fractal_seed/fractal_contrast- pattern variation and punch.fractal_drift- the temporal variation for video.
Optional mask input plus mask_feather / invert_mask, and outputs image, mask, and a fractal_info string.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart ComfyUI, or install via ComfyUI Manager (search MKRShift_Nodes). No requirements.txt, no models, no keys.
Where it fits
The honest positioning: for material texturing, the pack's own procedural texture nodes (its x1Texture* family) go deeper. This is the quick "give it texture / give it weather" node. A common trick is to mask it to shadows or midtones so the texture sits in the shaded areas rather than over the whole frame - that's what keeps it looking like surface, not like a texture applied in Photoshop. And if you're animating, don't leave fractal_drift at 0 for video - static noise reads as a dirty sensor, a small drift reads as life.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| settings_json | STRING | {"fractal_strength":0.0,"fractal_scale":96.0,"fractal_octaves":4,"fractal_seed":23,"fractal_contrast":1.0,"fractal_drift":0.1,"mask_feather":12.0,"invert_mask":false} | — |
| maskopt | MASK | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| fractal_info | STRING | — |