Over the last week, I’ve made several deep dives into the subject of noise – Perlin noise, Simplex noise Curl noise, 2d and 3d noise. Worth reading through them in order, if you’re interested in this stuff.

# noise-series

# Noise: 2d vs 3d, Perlin and Simplex

tutorialIn yesterday’s post, I ran across this statement about Simplex noise:

noise generated for different dimensions are visually distinct (e.g. 2D noise has a different look than 2D slices of 3D noise, and it looks increasingly worse for higher dimensions).

https://en.wikipedia.org/wiki/Simplex_noise

As promised, here’s an analysis of what that actually means visually for rendering Simplex noise.

# Perlin vs. Simplex

tutorialDuring my deep dive into Perlin and Curl noise, I kept bumping into the subject of Simplex noise. I figured it was worth going down that rabbit hole for a day or so. Here’s what I’ve found.

# Curl Noise, Demystified

tutorialIn my recent post on mapping Perlin noise to angles, I was put on to the subject of Curl noise, which I thought I understood, but did not. I figured out what Curl noise *really* was in a subsequent post and then posted my earlier incorrect (but still interesting and perhaps useful) concept of Curl noise in yet another post. Although I kind of understood what Curl noise was at that point, I wanted to give myself a more complete understanding, which I usually do by digging into the code, making sure I understand every line 100% and seeing what else I can do with it, trying to make multiple visualizations with it to test my understanding, etc.

# Perlin Noise Quad Tree

experiments, minicompsSometimes I like to take two random concepts and smash them together.

# Not Curl Noise

experiments, minicompsI previously had an incorrect concept of what curl noise was. This experiment demonstrates it. Although it isn’t what I thought it was, it’s still a pretty cool concept.

# Curl Noise

experimentsMy last post on Perlin noise wound up on hitting Hacker News, which generated an enormous amount of views, and a fair number of comments – here, on Twitter, and on HN itself. Of course, there was the usual eye-rolling, condescending, *“why doesn’t he just do ….? that would be the obvious approach”* kind of comments there, but a fair amount of actual helpful ideas, explanations, and links. One thing that came up over and over was the idea of using

*curl noise*. So, when I got a chance, I went ahead and used curl noise.

# Mapping Perlin Noise to Angles

tutorialA common use case for Perlin Noise is to create some kind of flow field, and a common way to do that is to map the noise value at a particular location to an angle from 0 to PI * 2 radians (0-360 degrees). Above you can see an example of this. But there’s a problem with this logic. Can you see it in the above image?