in toolkit/jb/shared.js [219:277]
function(p, inlets, ctx, width, height) {
p.noStroke();
var palette = inlets.palette;
p.noiseDetail(inlets.octave, inlets.falloff);
lastSeed = p.random(1000);
lastStep = inlets.grain;
grainRadius = inlets.radius;
p.noiseSeed(lastSeed);
var x, y, c, opacity, resultColor, startColor, middleColor, endColor;
var noisePoints = [];
var max = 0
var point;
for (x = 0; x < width; x+=lastStep) {
noisePoints[x] = [];
for (y = 0; y < height; y+=lastStep) {
point = p.noise(x * 0.005, y * 0.005);
noisePoints[x][y] = point;
if( point >= max) {
max = point;
}
}
}
for (x = 0; x < width; x += lastStep) {
for (y = 0; y < height; y += lastStep) {
opacity = noisePoints[x][y] + 1 - max;
startColor = hexToColor(p, palette[2], opacity * 255);
middleColor = hexToColor(p, palette[1], opacity * 255);
endColor = hexToColor(p, palette[0], opacity * 255);
if (opacity < 0.5) {
resultColor = p.lerpColor(startColor, middleColor, opacity * 2);
} else {
resultColor = p.lerpColor(middleColor, endColor, (opacity - 0.5) * 2 );
}
//c = (x / width) * 255;
if (inlets.border) {
p.stroke(p.color(sketchConfig.bgcolor.r, sketchConfig.bgcolor.g, sketchConfig.bgcolor.b));
p.strokeWeight(inlets.border);
}
p.fill(resultColor);
p.rect(x, y, lastStep, lastStep, grainRadius * lastStep );
//p.rect(width - x, y, 10, 10);
//column.push(c);
}
//lastValues.push(column);
}
},