This SDK contains both SpatioTemporal Blue Noise textures as well as the sample code that generates it.
Assets/STBN.zip contains pregenerated spatiotemporal blue noise textures of various types.
This repo also contains the sample code to generate spatiotemporal blue noise textures of various types and goes along with these blog posts:
As well as this EGSR 2022 paper:
And this arxiv paper:
https://arxiv.org/abs/2112.09629
-
Download the CMake GUI
-
Set the source code directory to this directory (
C:/path/to/repo/SpatiotemporalBlueNoiseSDK) -
Set the build directory to
C:/path/to/repo/SpatiotemporalBlueNoiseSDK/build. -
Click Configure. Agree to create the
C:/path/to/repo/SpatiotemporalBlueNoiseSDK/builddirectory if it does not exist. -
Select
x64as the Optional platform for generator -
Click Generate
-
Open
C:/path/to/repo/SpatiotemporalBlueNoiseSDK/build/STBN.sln -
Build the
Releaseconfiguration. (TheDebugconfiguration runs very slowly.)
ScalarApp generates 1D noise using the void and cluster algorithm. It comes with two implementations, a slow reference one and a "slice cache" optimized one. The reference implementation is used to ensure correctness in the ScalarTest project. The slice cache optimized implementation runs ~60x faster than the reference implementation and produces the same output as the reference, so you should always use it.
VectorApp generates 1D, 2D, or 3D noise depending on the cmd args. VectorApp uses simulated annealing, which is less effective than void and cluster.
The initial noise pattern may be generated by using uniform noise over the unit cuboid, normalized uniform noise over the unit spheroid, and optionally cosine weighted hemisphere noise for 3D noise.
Distances between pixels is calculated using either the L1, L2, LInfinity metric, with 3D data having the additional option of using the negative dot product. (L1, L2, and LInfinity metrics all reduce to the absolute value metric for 1D noise.)