In two previous articles (1, 2), I have introduced the B-Noise algorithm, a differentiable and tilable noise generator based on value lattices and B-spline surfaces. The pseudocode and implementations I gave then was for the \(2D\rightarrow 1D\) version only. In the present article I'll give the general version \(ND\rightarrow 1D\) for any dimension N.
The pseudocode and the analysis of the algorithm are now available in a formal article available here.
Implementations in several programming languages are available below. I'll update this page with new implementations in other languages when I have the chance. You're very welcome to contribute with your own, email me ! There is still an online demo for the \(2D\rightarrow 1D\) version here. And I'd be happy to put links here toward your creations using B-Noise. Let me know about them !
C
The generic implementation for N dimensions, and specific implementations for 1D, 2D, 3D are available here.
2023/04/27: updated to v1.0.1 to correct typos in code comments. Older versions:
v1.0.0
JavaScript
The generic implementation for N dimensions is available here.
Some examples of 2D output.
A visualisation of the output showing slices of a 3D unit tile along one axis. (Also available on YouTube)
Some abstract art.