From 24b06ededb117588adab64af1c60a0c53e2a8feb Mon Sep 17 00:00:00 2001 From: ubq323 Date: Sun, 12 Feb 2023 17:29:24 +0000 Subject: change hash function, remove caching of noise vectors; noise won't use unbounded memory now --- server/noise.lua | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) (limited to 'server/noise.lua') diff --git a/server/noise.lua b/server/noise.lua index bf7ac2e..c0ca57c 100644 --- a/server/noise.lua +++ b/server/noise.lua @@ -9,8 +9,8 @@ math.randomseed(os.time()) local function hash_list(t) local h = #t for _,x in ipairs(t) do - x = bit.bxor(bit.rshift(x,16),x) * 0x45d9f3b - x = bit.bxor(bit.rshift(x,16),x) * 0x45d9f3b + x = bit.bxor(bit.rshift(x,16),x) * 0x7feb352d + x = bit.bxor(bit.rshift(x,15),x) * 0x846ca68b x = bit.bxor(bit.rshift(x,16),x) h = bit.bxor(h,x + 0x9e3779b9 + bit.lshift(h,6) + bit.rshift(h,2)) end @@ -33,17 +33,11 @@ end local function slerp(a,b,t) return lerp(a,b,smoothstep(t)) end local PerlinNoise = class() -function PerlinNoise.make(cls,ind_seed) - local grid = {} - setmetatable(grid,{__index=function(t,k) t[k] = {} return t[k] end}) - return setmetatable({grid=grid,ind_seed=ind_seed},cls) +function PerlinNoise.make(cls,seed) + return setmetatable({seed=seed},cls) end function PerlinNoise.vertex(self,ix,iy) - local v = self.grid[ix][iy] - if v then return v end - local vv = hash_to_unit_vec{ix,iy,self.ind_seed} - self.grid[ix][iy] = vv - return vv + return hash_to_unit_vec{ix,iy,self.seed} end function PerlinNoise.at(self,x,y) -- cgit v1.2.3