pico8 1D Perlin Noise

Using linear interpolation to generate 1D Perlin Noise in pico8:

Online Version

function _init()
 — 1d noise vars 
 octavescount=6
 fscalingbias=1.5
 –size1d=2^n
 –size1d=128 -> end=start
 –size1d=256 -> end!=start
 size1d=256
 noutputsize=size1d
 fnoiseseed1d=fillrandom1d()
 fperlinnoise1d=perlinnoise1d(noutputsize,fnoiseseed1d,octavescount,fscalingbias)
end

function _draw()
  cls()
  drawpn1d()
end

function perlinnoise1d(ncount, fseed, noctaves, fbias)
 foutput={}
 for x=0,(ncount-1) do
  fnoise=0.0
  fscaleacc=0.0
  fscale=1.0
  for o=0,noctaves-1 do
   npitch=ncount/(2^o)
   nsample1=flr(x/npitch)*npitch
   nsample2=flr((nsample1+npitch)%ncount)

   fblend=(x-nsample1)/npitch
   fsample=((1.0-fblend)*fseed[nsample1])+(fblend*fseed[nsample2])

   fscaleacc+=fscale
   fnoise+=fsample*fscale
   fscale=fscale/fbias
   end
  foutput[x]=fnoise/fscaleacc
  end
 return foutput
end

function fillrandom1d()
 rndvector={}
 for i=0,size1d-1 do
  rndvector[i]=rnd(1)
 end
 return rndvector
end

function drawpn1d()
 for i=0,size1d-1 do
  aux=fperlinnoise1d[i]*80
  rect(i,128-aux,i,128,12)
 end
end

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s