Got that noise function working: turns out it expects the input coordinates
to be a lot smaller than I thought. I was passing in the x/y pixel values
but really it wants floats that are multiplied by a factor of ~0.003 or so
Messing around with the perlin noise generation and also figured out
how to speed up rendering by over a factor of 5 or so. Whereas before I could
only render about 3000 butterflies now I can comfortably
go up to 15000 on this machine