Talk:Perlin noise

message: Regarding: Define an n-dimensional grid. At each point on the grid (node) assign a random gradient vector of unit length in n dimensions. For a one-dimensional grid each node will be assigned either +1 or -1.
See: (http://mrl.nyu.edu/~perlin/doc/oscar.html#noise), specifically:
 
for (i = 0 ; i < B ; i++) {
	p[i] = i;
	g1[i] = (float)((random() % (B + B)) - B) / B;
	for (j = 0 ; j < 2 ; j++)
		g2[i][j] = (float)((random() % (B + B)) - B) / B;
	normalize2(g2[i]);
	for (j = 0 ; j < 3 ; j++)
		g3[i][j] = (float)((random() % (B + B)) - B) / B;
	normalize3(g3[i]);
}
In the 2D and 3D cases, the gradients are normalized. In the 1D case, it's simply bounded between -1 and 1.
Beyond not being in the original source, the noise simply doesn't look like noise with normalized 1D gradients. It's very (and unsurprisingly) regular.  — Preceding unsigned comment added by 173.174.71.239 (talk) 17:17, 31 July 2016 (UTC)
thread_title:  1D version should not normalize gradients 

message: These mistakes were found in this Wikipedia article:
1) Hugo Elias' article (http://www.arendpeter.com/Perlin_Noise.html) is on VALUE NOISE, not GRADIENT NOISE (Perlin Noise is gradient noise, not value noise.)
2) Perlin Noise is not white noise.  A single "layer" of Perlin noise (or value noise, or any type of noise, there are many)has only one frequency, not all of them.  You much blend together many "layers" of Perlin noise to collaborate various frequencies together in one noise (known as spectral synthesis).
:Just been pedantic here, but the wording is wrong here. Perlin noise _does_ have all frequencies. What you mean is that Perlin noise is a primitive and contains a single _scale_. Unless you create a single sine wave pattern, all patterns will have _all_ frequencies. You are right that people often confuse the noise primitive (be it Perlin or some other gradient or even value noise) with the FBM (fractal brownian motion) construction and derivatives, and that several layers or octaves (of smaller scales) are needed to create a more rich spectrum (usually of the form 1/f or 1/f^2). But yeah, the two instances of "frequencies" in this paragraph are wrong and should be "scale"  — Preceding unsigned comment added by Inigo.quilez (talk • contribs) 18:25, 29 December 2016 (UTC)
replies: text: I'd just like to offer a little encouragement on that new article. This wonderful topic is sadly neglected. 210.9.15.113 09:08, 19 October 2006 (UTC)
replies: text: Thank you. I will soon... but it is quite a project in of itself :S 24.215.121.195 (talk) 18:47, 19 March 2008 (UTC)

text: If I understand the third point above correctly,  I have to disagree.  Ken Perlin's articles talk about generating procedural textures out of single frequencies of a "controlled random primitive" (the image depicted in the article).  I don't think the "primitive" is to be interpretted as Perlin noise as it is too simple. Anybody can generate this sort of isotropic random noise. It is completely valid to interpret Perlin Noise as multiple layers as I demonstrate in the article I wrote here (http://dunnbypaul.net/perlin/). This is mathematically identical (though procedurally, quite different) to the algorithm found here (http://mrl.nyu.edu/~perlin/doc/oscar.html). Perlin Noise is in fact a "procedural texture" that can also be interpretted as the recursive algorithm demonstrated there.
Furthermore, in the second citation I offered, Ken Perlin himself says "Hugo Elias has a nice web page about it" at (http://freespace.virgin.net/hugo.elias/models/m_perlin.htm), the same web page that is claimed NOT to be about Perlin Noise in point 1 above. 198.53.229.242 09:03, 12 January 2007 (UTC)
replies: text: Ken Perlin's comment is that the page is a nice web page about noise based textures. It does not use the same noise generation technique that Perlin invented. There seems to be some confusion over whether "Perlin Noise" refers to the specific noise generation algorithm that Perlin invented or to noise-based textures in general which Perlin's work popularized.--Vorpy 21:40, 18 February 2007 (UTC)
replies: text: There is HUGE confusion over this. One fact is that Ken Perlin's original noise is gradient noise, not value noise, based on interpolation of gradients not interpolation on (final) values.  What is Perlin noise?  Who really knows?  In my planned article, after working and researching it for years, I was actually going to attempt to define it myself once and for all, as Ken Perlin has not bothered to make it clear.  This is a common problem with definition of words, is that common usage often dictates it, whereas common usage of Perlin noise is generally spectral-synthesized gradient noise AND spectral-synthesized value noise!  The stance I took is that Perlin noise is a single layer of gradient noise, as that's what he original code generates, and everything else is a derivative of that. 24.215.121.195 (talk) 18:54, 19 March 2008 (UTC)

text: I've altered the link description... the link should be moved to the new article when it is written SiegeLord (talk) 06:24, 27 July 2008 (UTC)
replies: text: I made the stubs for Value noise,Gradient noise. If anyone wants to expand them, be my guest. SiegeLord (talk) 07:12, 27 July 2008 (UTC)

text: A year late with this response... This common misunderstanding is Ken Perlin's fault, shame on him for linking to a VALUE NOISE article when GRADIENT NOISE (aka perlin noise) is so much better, they should not be compared as examples of one another.  Do the research before making assumptions based on Ken Perlin's links, and even words, as they are very misleading.  As the inventor of this technology, he really should take the time to explain it better, and clear this confusion.  Again, I may make an article to clarify all of this, but do the research before making assumptions.  If you have not coded value noise and gradient noise AND reversed engineered Ken Perlin's code (which you basically have to do to understand it) as I have, you will more than likely be wrong with your opinion.  Sorry.  Any questions you have on the matter I can answer, I have worked with and coded various noises for years now. 24.215.121.195 (talk) 18:46, 19 March 2008 (UTC)

text: Indeed, article on Ken Perlin states that Perlin Noise was created in 1985, whereas this article states that KP was given an award for the work on Tron in 1982.  —Preceding unsigned comment added by 98.207.207.199 (talk) 06:43, 13 April 2011 (UTC)
thread_title:  Common mistakes 

message: This article needs a clear description of the algorithm, preferably compatible with the 2002 version. Also, why is this categorized as a physics article? Seems a lot more like computer science to me. Shinobu 19:03, 10 March 2007 (UTC)
thread_title:  Algorithm 

message: Trying to implement Perlin Noise according to the pseudo given, I got stuck with rather unpleasing results.
Further investigation revealed rather sharp looking edges in generated images are the result of linear interpolation.
Ideally at least the second derivative of the interpolation function should be zero to get pleasing results.
I didn't get my hands on the original paper, so I couldn't verify, but at least  suggests using the function 6t^5-15t^4+10t^3 for interpolation.
Using this function I finally managed to get pleasing results. 
Thus I would like to suggest editing the pseudocode given to contain the following changes.
Add a function fade() evaluating the given interpolation function.
    function fade(float t) {
       return t * t * t * (t * (t * 6 - 15) + 10);
    }
Modify the function lerp() to take our interpolation function into account.
    function lerp(float a0, float a1, float w) {
        return fade(1.0 - w)*a0 + fade(w)*a1;
    }
In case you are unsure weather the suggested edit is justified, Python Code to reproduce a) the unpleasing result of the original algorithm and b) the modified version could be given to verify the difference of results.
Just drop me a line if you are in need of it.
--Mikyra (talk) 08:56, 23 July 2017 (UTC)
thread_title:  Pseudocode Interpolation Issue 

message: There isn't much point in having the code if you are going to leave the extern in there.  It is just like skipping an entire section of code.  — Preceding unsigned comment added by Bofum (talk • contribs) 00:56, 23 May 2018 (UTC)
thread_title:  Code pointless? 

message: Ken Perlin said himself that he used a Monte Carlo simulation in order to generate the random gradient in the hyper-sphere.
I think Ken Perlin was wrong.
What he used is not a Monte Carlo simulation.
Can it be corrected in the article?  — Preceding unsigned comment added by 176.180.104.164 (talk) 16:24, 23 August 2018 (UTC)
thread_title:  Misuse of term 'Monte Carlo simulation" 

message: It might be nice to highlight some additional examples also included in the Perlin Noise presentation given by Ken Perlin (http://web.archive.org/web/20071008162042/http://www.noisemachine.com/talk1/index.html) to help show the significance and impact of the algorithm in computer graphics.
Multiple patterns generated and compared:
http://web.archive.org/web/20071008170106im_/http://www.noisemachine.com/talk1/imgs/elements.jpg
Fire animation:
http://web.archive.org/web/20071008170528im_/http://www.noisemachine.com/talk1/imgs/flame500.gif
Cloud animation:
http://web.archive.org/web/20071008170627im_/http://www.noisemachine.com/talk1/imgs/clouds500.gif  — Preceding unsigned comment added by 192.55.54.42 (talk) 23:54, 4 December 2018 (UTC)
thread_title:  More Examples Needed 

message: In Algorithm detail >> Grid definition, there's this sentence:
The second part seems redundant to me, since in 1D, there are two unit vectors (-1, +1)https://en.wikipedia.org/wiki/Unit_vector, so this is no special case. Is it some jargon or should it be shortened?  — Preceding unsigned comment added by Martin Brajer (talk • contribs) 18:21, 17 October 2020 (UTC)
thread_title:  Unnecessary special case 

message: What is the time complexity of Perlin noise? This page and Simplex noise seem to contradict each other, with the simplex page saying O(n\,2^n) and this page saying O(2^n). ProletariatetsBefrielseOrkester (talk) 16:28, 10 February 2021 (UTC)
thread_title:  Time complexity