Noise

From GiderosMobile
(Redirected from FastNoise)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Supported platforms: Platform android.pngPlatform ios.pngPlatform mac.pngPlatform pc.pngPlatform html5.pngPlatform winrt.pngPlatform win32.png
Available since: Gideros 2019.12

Description

FastNoise is an open source noise generation library with a large collection of different noise algorithms.

FastNoise home page and its documentation https://github.com/Auburns/FastNoise/wiki

To add FastNoise plugin to your application you call:

require "FastNoise"

Features

  • Value Noise 2D, 3D
  • Perlin Noise 2D, 3D
  • Simplex Noise 2D, 3D, 4D
  • Cubic Noise 2D, 3D
  • Gradient Perturb 2D, 3D
  • Multiple fractal options for all of the above
  • Cellular (Voronoi) Noise 2D, 3D
  • White Noise 2D, 3D, 4D
  • Texture generation
  • Array generation

Examples

2D noise

require "FastNoise"
 
local myNoise = Noise.new() -- create FastNoise instance
 
myNoise:setSeed(456) -- set generation seed
myNoise:setFrequency(0.04) -- how coarse the noise output is
myNoise:setInterp(Noise.HERMITE) -- set noise interpolation type
myNoise:setNoiseType(Noise.SIMPLEX) -- set noise type
 
for y = 1, 4 do 
	for x = 1, 4 do 
		local v = myNoise:noise(x, y) -- generate 2D noise
		-- other possible function:
		-- myNoise:noise(x) -- 1D noise
		-- myNoise:noise(x, y, z) -- 3D noise
		-- myNoise:noise2D(x, y) -- true 2D noise
		-- myNoise:noise3D(x, y, z) -- true 3D noise
		-- difference between noise2D(x, y) and noise(x, y) is that "noise" function uses 3D noise with 
		-- x = 0, y = 0, z = 0 by default where noise2D uses only 2 values. In other words: noise(x) == noise(x,0,0);  
		-- noise(x, y) == noise(x,y,0); noise(x,y) == noise2D(x,y); noise(x,y,z) == noise3D(x,y,z)
		print(v)
	end
end

Grayscaled noise image

require "FastNoise"

local n = Noise.new() 
-- generate 128x128 texture with filtering
local tex = n:getTexture(128, 128, true)
-- add it to scene
stage:addChild(Bitmap.new(tex))

Colored seamless noise image

require "FastNoise"

local n = Noise.new() 
n:setFrequency(0.03)
n:setFractalOctaves(5)
n:setFractalLacunarity(2.5)
n:setInterp(Noise.HERMITE)
n:setFractalGain(0.6)
n:setNoiseType(Noise.SIMPLEX_FRACTAL)
-- set a color table used by noise
-- first value - height (number), must be in range [0..1]
-- second value - color (number) in hex format
-- third value - alpha (number), must be in range [0..1] (optional, default - 1)
n:setColorLookup{
	{0.3, 0x4b3c37, 1},
	{0.4, 0xffffff, 1},
	{0.45, 0x5c443d, 1},
	{0.55, 0x3f6a14, 1},
	{0.6, 0x589718, 1},
	{0.7, 0x3666c6, 1},
	{0.9, 0xd1d080, 1},
	{1, 0x3463c3, 1},
}
-- generate 128x128 texture
local tex = n:getTileTexture(128, 128, false, {wrap=Texture.REPEAT})
-- add it to scene
stage:addChild(Pixel.new(tex, 256,256))

Some 3D examples here.

Plus Particles flow field.

Methods

Noise.new creates a new Noise object

Noise:getCellularDistanceFunction returns distance function type
Noise:getCellularJitter returns cellular jitter value
Noise:getCellularNoiseLookup returns Noise object that was set by setCellularNoiseLookup() function
Noise:getCellularReturnType returns cellular return type
Noise:getFractalGain returns noise gain
Noise:getFractalLacunarity returns noise lacunarity
Noise:getFractalOctaves returns number of fractal octaves
Noise:getFractalType returns noise type
Noise:getFrequency returns noise frequency
Noise:getGradientPerturbAmp returns gradient perturb amplitude.
Noise:getInterp returns interpolation type
Noise:getNoiseType returns noise type
Noise:getSeed returns generator's seed
Noise:getTexture gets noise texture
Noise:getTileTexture gets tileable texture
Noise:gradientPerturb2D returns modified x, y
Noise:gradientPerturb3D returns modified x, y, z
Noise:gradientPerturbFractal2D returns modified x,y
Noise:gradientPerturbFractal3D returns modified x,y,z
Noise:noise gets noise value
Noise:noise2D gets 2D noise value
Noise:noise3D gets 3D noise value
Noise:reset resets noise parameters to default
Noise:setCellularDistance2Indices sets the 2 distance indicies used for distance2 return types
Noise:setCellularDistanceFunction the distance function used to calculate the cell for a given point
Noise:setCellularJitter sets the maximum distance a cellular point can move from its grid position
Noise:setCellularNoiseLookup noise used to calculate a cell value
Noise:setCellularReturnType what value does the cellular function returns from its calculations
Noise:setColorLookup sets color table used by "getTexture" and "getTileTexture"
Noise:setFractalGain the relative strength of noise from each layer when compared to the last
Noise:setFractalLacunarity the frequency multiplier between each octave
Noise:setFractalOctaves the amount of noise layers used to create the fractal
Noise:setFractalType used in all fractal noise generation
Noise:setFrequency affects how coarse the noise output is
Noise:setGradientPerturbAmp sets the maximum perturb distance from original location when using gradientPerturb()
Noise:setInterp changes the interpolation method used to smooth between noise values
Noise:setNoiseType sets the type of noise returned by noise()
Noise:setSeed using different seeds will cause the noise output to change
Noise:simplex4D gets 4D simplex noise value
Noise:whiteNoise2DInt gets integer 2D white noise value
Noise:whiteNoise3DInt gets integer 3D white noise value
Noise:whiteNoise4D gets 4D white noise value
Noise:whiteNoise4DInt gets integer 4D white noise value

Events

Constants

Noise.BILLOW
Noise.CELLULAR
Noise.CELL_VALUE
Noise.CUBIC
Noise.CUBIC_FRACTAL
Noise.DISTANCE
Noise.DISTANCE_2
Noise.DISTANCE_2_ADD
Noise.DISTANCE_2_DIV
Noise.DISTANCE_2_MUL
Noise.DISTANCE_2_SUB
Noise.EUCLIDEAN
Noise.FBM
Noise.HERMITE
Noise.LINEAR
Noise.MANHATTAN
Noise.NATURAL
Noise.NOISE_LOOKUP
Noise.PERLIN
Noise.PERLIN_FRACTAL
Noise.QUINTIC
Noise.RIGID_MULTI
Noise.SIMPLEX
Noise.SIMPLEX_FRACTAL
Noise.VALUE
Noise.VALUE_FRACTAL
Noise.WHITE_NOISE