Created
June 8, 2020 23:13
-
-
Save stravant/e167d8c376ab056c2adc50a62576edb8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--==========================================================================================================-- | |
-- Noise generation code ==-- | |
--==========================================================================================================-- | |
-- | |
local perm = { | |
151,160,137,91,90,15, | |
131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, | |
190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, | |
88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, | |
77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, | |
102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, | |
135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, | |
5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, | |
223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, | |
129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, | |
251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, | |
49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, | |
138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180, | |
151,160,137,91,90,15, | |
131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, | |
190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, | |
88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, | |
77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, | |
102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, | |
135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, | |
5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, | |
223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, | |
129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, | |
251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, | |
49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, | |
138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180 | |
} | |
local floor = math.floor | |
local function grad( hash, x, y ) | |
local h = hash%8; -- Convert low 3 bits of hash code | |
local u = h<4 and x or y; -- into 8 simple gradient directions, | |
local v = h<4 and y or x; -- and compute the dot product with (x,y). | |
return ((h%2==1) and -u or u) + ((floor(h/2)%2==1) and -2.0*v or 2.0*v); | |
end | |
local function PerlinNoise(x,y) | |
local ix0, iy0, ix1, iy1; | |
local fx0, fy0, fx1, fy1; | |
local s, t, nx0, nx1, n0, n1; | |
ix0 = floor(x); -- Integer part of x | |
iy0 = floor(y); -- Integer part of y | |
fx0 = x - ix0; -- Fractional part of x | |
fy0 = y - iy0; -- Fractional part of y | |
fx1 = fx0 - 1.0; | |
fy1 = fy0 - 1.0; | |
ix1 = (ix0 + 1) % 255; -- Wrap to 0..255 | |
iy1 = (iy0 + 1) % 255; | |
ix0 = ix0 % 255; | |
iy0 = iy0 % 255; | |
t=(fy0*fy0*fy0*(fy0*(fy0*6-15)+10)); | |
s=(fx0*fx0*fx0*(fx0*(fx0*6-15)+10)); | |
nx0 = grad(perm[ix0 + perm[iy0+1]+1], fx0, fy0); | |
nx1 = grad(perm[ix0 + perm[iy1+1]+1], fx0, fy1); | |
n0 = nx0 + t*(nx1-nx0); | |
nx0 = grad(perm[ix1 + perm[iy0+1]+1], fx1, fy0); | |
nx1 = grad(perm[ix1 + perm[iy1+1]+1], fx1, fy1); | |
n1 = nx0 + t*(nx1-nx0); | |
return 0.5*(1 + (0.507 * (n0 + s*(n1-n0)))) | |
end | |
function PerlinNoiseMap(lambda) | |
local key = math.random()*10000 | |
local map = {} | |
for x = 1, GenerateOptions.width do | |
map[x] = {} | |
for z = 1, GenerateOptions.length do | |
map[x][z] = PerlinNoise(x/lambda, z/lambda + key) | |
end | |
end | |
return map | |
end | |
-- end perlin noise generation code |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment