October 10, 2021
Blue noise has unique properties that make it best for dithering, spatial generation, and more. You can find more details about blue noise from these great articles: momentsingraphics.de, blog.demofox.org.
Performance and precision are two main drawbacks of all blue noise generators. A 1024×1024 image requires hours or even days to generate. And that is not acceptable. Moreover, the 8-bit precision cannot represent a large noise image (more than 16×16) with perfect spatial accuracy because there will be multiple pixels with the same value. We made a GPU blue noise generator that uses fast Fourier transformation and provides a blazing-fast generation. A 1024×1024 image generation is performing in less than 6 minutes on GeForce 2080 Ti class GPU. The output noise image can be in 16-bit integer or 32-bit floating-point precision.
The binaries of our blue noise generator for Windows and Linux (Vulkan) are available for everyone. But be careful because our Radeon Vega 7 died during 4K texture generation.
Download link: TellusimClayNoise.zip
The application has simple command line parameters:
Clay Blue Noise Image Generator (https://tellusim.com/) Usage: ./noise -o noise.png -i
Input image -o Output image -f Forward image -h Histogram output -bits Image bits (8) -size Image size (256) -width Image width (256) -height Image width (256) -seed Random seed (random) -init Initial pixels (10%) -sigma Gaussian sigma (2.0) -epsilon Quadratic epsilon (0.01) -device Computation device index
This command makes a unique blue noise image with 16-bit precision in less than a minute. The Fourier transformation of the noise can be obtained with -f command line parameter. Histogram output is a text file. The initial random pixels can be specified as an input image as well.
clay_noise.exe -size 512 -bits 16 -o noise_512x512_16bit.png
The sigma parameter changes the blur radius during generation. You can see the result of different Sigma values in this WebGL application: