October 10, 2021
Blue Noise Generator
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: