Hi,
I started playing with noise - mainly 2D. From what I read for generating 2D noise LOVE uses simplex noise algorithm. Playing with different values I noticed that for values of (x, y) which are close to 0 or are very big or very small love.math.noise() returns .5. By very big and small I mean above 10000000 / below -10000000 and close to zero [- .000000001, .000000001].
I would say that the function looses its usefulness for those numbers and the wiki does not mention that the values of (x, y) are restricted.
Could someone please explain what is going on here? Is it the property of the algorithm or its implementation?
Any solution how to manage this if I want to generate noise form unknown values of (x, y)?
Two dimensional love.math.noise with big values
Forum rules
Before you make a thread asking for help, read this.
Before you make a thread asking for help, read this.
Re: Two dimensional love.math.noise with big values
Hello, welcome to the forums.
Quite unfortunately, Löve is using single precision to generate noise, which intrinsically has that limitation on big values. Here's a representation of the range 1999999.5 to 2000000.5 in both dimensions, showing the loss of precision in the coordinates (it gets worse in the range you've indicated):
For small values, the same applies. Since you're zooming in on a very uniform area, the returned values are going to be extremely close together. So close, that you won't be able to distinguish them with a single precision number. I don't think this last one is a problem. Single precision for the returned value is OK. Single precision for the coordinates is a mistake.
Quite unfortunately, Löve is using single precision to generate noise, which intrinsically has that limitation on big values. Here's a representation of the range 1999999.5 to 2000000.5 in both dimensions, showing the loss of precision in the coordinates (it gets worse in the range you've indicated):
For small values, the same applies. Since you're zooming in on a very uniform area, the returned values are going to be extremely close together. So close, that you won't be able to distinguish them with a single precision number. I don't think this last one is a problem. Single precision for the returned value is OK. Single precision for the coordinates is a mistake.
- slime
- Solid Snayke
- Posts: 3162
- Joined: Mon Aug 23, 2010 6:45 am
- Location: Nova Scotia, Canada
- Contact:
Re: Two dimensional love.math.noise with big values
There's a report in the issue tracker about it: https://github.com/love2d/love/issues/1579
We'll have to look into what can be changed in the noise library we're using.
We'll have to look into what can be changed in the noise library we're using.
Who is online
Users browsing this forum: Ahrefs [Bot] and 3 guests