3D Cloud Noise Generator
Build the two 3D noise textures a volumetric cloud shader needs — a Perlin-Worley shape volume and a Worley detail volume — and see them rendered as real raymarched clouds while you tweak. Every channel tiles seamlessly in X, Y and Z. Export each as a flipbook PNG that Unity imports straight into a Texture3D.
Your browser doesn't support WebGL2, which this tool needs. Try a recent Chrome, Edge, Firefox or Safari.
Generating…Shape (RGBA): R Perlin-Worley · G / B / A Worley FBM, low → high frequency. Detail (RGB): R / G / B Worley FBM, low → high frequency.
Flipbook PNG · 16 × 8 slices · 2048 × 1024 px
Unity (2020.2+): select the PNG → Texture Shape 3D ·
Columns 16 · Rows 8 · sRGB off ·
Alpha Source Input Texture Alpha · Alpha Is Transparency off ·
Wrap Repeat · Compression None.
The two noise textures behind volumetric clouds
Real-time volumetric clouds, like the ones in Horizon Zero Dawn or Unity HDRP, raymarch through a cloud layer and sample two tileable 3D noise textures at every step:
- Shape texture (RGBA, usually 128³): R is Perlin-Worley noise, which gives the billowy, cauliflower-like cloud masses. G, B and A are Worley fBm at increasing frequencies, used to add low-frequency variation to the shape.
- Detail texture (RGB, usually 32³): three Worley fBm octaves at higher frequencies that erode the cloud edges into wisps and curls.
The big shapes need resolution while the detail repeats many times, which keeps memory low: a 128³ RGBA shape volume is 8 MB, and a 32³ detail volume is under 100 KB.
How to use the cloud noise generator
- Tune the shape texture: Perlin frequency and octaves set the size and roughness of the cloud masses, and Worley frequency sets how bubbly they look.
- Tune the detail texture with its Worley frequency. Higher values give finer, wispier edges.
- Judge the result in the cloud preview: coverage, density, erosion, cloud size, absorption and the sun only change the preview, not the textures. Use the Slices tab to inspect each channel and check the tiling.
- Export the shape and detail textures as flipbook PNGs and import them as 3D textures.
Import into Unity as a Texture3D
- Drop the PNG into your project and select it.
- Set Texture Shape: 3D and enter the Columns / Rows shown under the Export button (16 × 8 for 128³, 8 × 8 for 64³, 8 × 4 for 32³). Requires Unity 2020.2 or newer.
- Untick sRGB, set Wrap Mode: Repeat and Compression: None. For the shape texture, use Alpha Source: Input Texture Alpha and turn Alpha Is Transparency off so the A channel is kept as data.
Then sample both volumes in your cloud shader. This density function uses the same approach as the preview above (URP/HDRP syntax; in the Built-in pipeline use tex3D):
float Remap(float x, float a, float b, float c, float d)
{
return c + (x - a) / (b - a) * (d - c);
}
// p: position in the cloud layer, h: 0..1 height inside the layer,
// coverage: 0..1 (often from a 2D weather map), erosion: 0..1
float CloudDensity(float3 p, float h, float coverage, float erosion)
{
float4 s = SAMPLE_TEXTURE3D(_ShapeTex, sampler_ShapeTex, p * _ShapeScale);
float lowFbm = s.g * 0.625 + s.b * 0.25 + s.a * 0.125;
float base = Remap(s.r, lowFbm - 1.0, 1.0, 0.0, 1.0);
// layer profile: rounded bottoms, thinning tops
base *= saturate(Remap(h, 0.0, 0.15, 0.0, 1.0)) * saturate(Remap(h, 0.6, 1.0, 1.0, 0.0));
base = saturate(Remap(base, 1.0 - coverage, 1.0, 0.0, 1.0)) * coverage;
if (base <= 0.0) return 0.0;
float3 d = SAMPLE_TEXTURE3D(_DetailTex, sampler_DetailTex, p * _DetailScale).rgb;
float highFbm = d.r * 0.625 + d.g * 0.25 + d.b * 0.125;
highFbm = lerp(highFbm, 1.0 - highFbm, saturate(h * 4.0)); // wispy bottoms, billowy tops
return saturate(Remap(base, highFbm * erosion, 1.0, 0.0, 1.0));
}
Accumulate the density along each view ray with Beer's law (transmittance *= exp(-density * sigma * stepSize)), and march a few steps toward the sun for lighting.
Frequently asked questions
Why are there two textures?
The shape texture defines the big, billowy cloud forms and needs more resolution; the detail texture only erodes the edges, so it can be small and repeat often. Splitting them gives detailed clouds with little memory.
Do the 3D textures tile?
Yes. Every channel is periodic in X, Y and Z, so the volumes repeat with no seams. Use the Slices tab with Tile 2×2 to check.
Can I use them in Unreal Engine?
Yes. Import the PNG, right-click it in the Content Browser and choose Create Volume Texture, then set the tile size to the slice size (for example 128 × 128).
In which order are the slices stored?
Slice 0 is the top-left cell, then left to right and top to bottom, which is the order Unity's flipbook import uses. Because the noise tiles in Z, a reversed order still works.
Why does the preview look softer than the export?
The preview raymarches at a reduced resolution to stay fast. The exported textures are always full resolution and exact 8-bit values.
Is anything uploaded?
No. The volumes are generated and rendered on your own graphics card in the browser. Nothing is sent to a server.