Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

additional context for history of Perlin noise #143

Closed
shiffman opened this issue Jun 26, 2019 · 6 comments
Closed

additional context for history of Perlin noise #143

shiffman opened this issue Jun 26, 2019 · 6 comments

Comments

@shiffman
Copy link
Member

Add paragraph with additional info about Perlin noise (fractal vs. value vs. gradient vs. simplex), improved perlin noise, simplex noise, and OpenSimplexNoise. (explanation: https://youtu.be/Lv9gyZZJPE0)

@sidwellr
Copy link

When you get to this, you may want to point out that the term "Perlin noise" is commonly used for two different things: basic Perlin noise and fractal noise (often called fractal Brownian motion or fBm) that uses basic Perlin noise as a basis. Both Processing and p5.js use the fractal noise; you can get basic Perlin noise with noiseDetail(1) to make it use a single octave.

But fractal noise can use any type of noise as its basis. In the OpenSimplex Noise video, basic OpenSimplex noise is compared with fractal Perlin noise, which isn't an apples-to-apples comparison. There are libraries that can use different types of noise as a basis for fractal noise, such as FastNoise (https://github.com/Auburn/FastNoiseLite).

@shiffman shiffman removed their assignment Jul 28, 2022
@shiffman shiffman transferred this issue from nature-of-code/noc-book-2-archive Oct 28, 2022
@shiffman
Copy link
Member Author

shiffman commented May 31, 2023

I just wrote a paragraph for this and came to paste it here before having re-read your comments above. It has less detail than what you posted. I'm curious for your thoughts feedback. What do you think? I'd be happy to include additional points but I don't want to overwhelm the reader.

There are many noise implementations in popular programming languages and platforms. Specifically, the p5.js library incorporates a implementation of the original 1983 version, often referred to as "classic Perlin noise". It was succeeded by an improved version in 2001, called Simplex Noise, also developed by Perlin. You can learn more about the history of Perlin noise and its variations over the years in my "What is Simplex Noise?" video on thecodingtrain.com.

Full draft of chapter will be up at the following after I rebuild the site: https://nature-of-code-2nd-edition.netlify.app/introduction/

@sidwellr
Copy link

I do think distinguishing between basic and fractal noise is a bit geeky and doesn't really need to be in the book. Your paragraph is fine, though the video is named "What is OpenSimplex Noise?", and I couldn't find it on thecodingtrain.com (probably because it doesn't seem to include the original Nature of Code videos). But instead of just mentioning simplex noise, you may want point out that over the years several authors (including Perlin) have created other noise algorithms with different characteristics, like simplex noise, value noise, and Worley noise. But the p5.js noise() function will suffice for the Nature of Code.

That said, in your video the result of switching to opensimplex noise has no directional artifacts, but it has much less detail than the Perlin noise version. This is because it doesn't fractalize the noise by adding octaves. Someday you might make a similar video using p5.js instead of processing, and this might be useful to know.

@shiffman
Copy link
Member Author

Awesome, this is so helpful, I really appreciate you taking the time to respond and help provide feedback! Yes, I have to add the noise video to the website, it's not there yet. Here's my revised paragraph incorporating your comment:

The p5.js library incorporates an implementation of the original 1983 version, often referred to as “classic” Perlin noise. Over the years, there have been a variety of "flavors" of noise developed by different authors. Some notable ones are Value noise, Worley noise, and Simplex noise (developed by Perlin himself in 2001). This section will provide a foundation for understanding and applying noise in code through the p5.js noise()function. You can learn more about the history of Perlin noise and its variations over the years in my "What is Open Simplex Noise?" video on thecodingtrain.com.

@shiffman
Copy link
Member Author

shiffman commented Jun 8, 2023

Closing!

@shiffman shiffman closed this as completed Jun 8, 2023
@nickmcintyre
Copy link

@shiffman the noise() discussion in the p5.js repo prompted me to re-read Chapter 0 in my copy of NOC 2. It seems like the book's description of the p5.js implementation may benefit from slight revision.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants