memoscan
← all memos

Memo 0x3284eabf…fdb238 on Ethereum

Segments;_++){let $=map(_,0,e.xSegments,e.xMinExtent,e.xMaxExtent),i=map(_+1,0,e.xSegments,e.xMinExtent,e.xMaxExtent);for(let n=0;n<e.ySegments;n++){let a=map(n,0,e.ySegments,e.yMinExtent,e.yMaxExtent),r=map(n+1,0,e.ySegments,e.yMinExtent,e.yMaxExtent),s=t(a,-0,1.01),l=t(r,-0,1.01),o=dist($*s,a-.5,0,0),h=dist($*l,r-.5,0,0),p=dist(i*l,r-.5,0,0),f=dist(i*s,a-.5,0,0),u=-t(o,-.775,.775),d=-t(h,-.775,.775),c=-t(p,-.775,.775),g=-t(f,-.775,.775),m=_createV($*s,-a,u+.8),v=_createV($*l,-r,d+.8),x=_createV(i*l,-r,c+.8),b=_createV(i*s,-a,g+.8),S=_copyV(m),y=_copyV(v),w=_copyV(x),z=_copyV(b);for(let k=0;k<e.transforms.length;k++){let P=e.transforms[k];"t"==P.type?(S=_add(S,P.val),y=_add(y,P.val),w=_add(w,P.val),z=_add(z,P.val)):"s"==P.type?(S=_mult(S,P.val),y=_mult(y,P.val),w=_mult(w,P.val),z=_mult(z,P.val)):"r"==P.type&&(S=_rotate(S,P.val.x,P.val.y,P.val.z),y=_rotate(y,P.val.x,P.val.y,P.val.z),w=_rotate(w,P.val.x,P.val.y,P.val.z),z=_rotate(z,P.val.x,P.val.y,P.val.z))}let B=[_3dTo2d(S),_3dTo2d(y),_3dTo2d(w),_3dTo2d(z),],V=_normalize(triNorm(S,w,z)),M=-_dot(V,lightDir),T=norm(M,-1,1),W=new _Shape(!0);W.setPoints(B),W.zIndex=min(min(min(S.z,z.z),w.z),y.z),W.fill=paletteLerp(e.palette,doubleExponentialSigmoid(lerp(T,e.br,e.brLerp),e.constrast),!0),e.drawPolygonLines&&(W.stroke=paletteLerp(e.palette,0,!0)),W.strokeWeight=1,W.nHashesMult=.8,W.nSegments=4,W.hashWeight=1.5,W.occlude=!0,W.scaleAmt=0,W.wobbleAmt=0,booleanShapes.push(W)}}}function grassShape(e){let t=_3dTo2d(e.pos),_=[],$=(2*fractalNoise({x:.005*e.pos.x,y:0,z:.02*e.pos.z,nOctaves:3,scaleFallout:2,weightFallout:.8})-1)*PI/3+random(-1,1)*PI/32;_.push(_add(_rotate(_mult(_createV(-1,0),e.scale),0,0,$),t)),_.push(_add(_rotate(_mult(_createV(0,-1),e.scale),0,0,$),t)),_.push(_add(_rotate(_mult(_createV(1,0),e.scale),0,0,$),t));let i=map(fractalNoise({x:.005*e.pos.x+532,y:0,z:.01*e.pos.z-54323,nOctaves:3,scaleFallout:2,weightFallout:.5}),0,1,3,6),n=new _Shape(!0);n.setPoints(_),n.zIndex=e.pos.z,n.fill=paletteLerp(e.palette,e.br,!1),n.strokeWeight=1,n.nHashesMult=.5,n.hashWeight=1.5,n.occlude=!0,n.scaleAmt=i,n.wobbleAmt=2,booleanShapes.push(n)}let shapeIndex=0,hashIndex=0,bgHashIndex=0,layerCount=0;function draw(){if(saving)++saveTime>80&&(shapes=null,window.location.reload(),noLoop());else{if(background(200),"texture"==renderMode&&geometryBuffer.clear(),geometryBuffer.push(),geometryBuffer.scale(sizeAdjust,sizeAdjust),geometryBuffer.translate(targetSzX/2,targetSzY/2),geometryBuffer.fill(255,0,0),bgHashes&&bgHashIndex<bgHashes.length){blendShader.setUniform("u1",.5),crayonShader.setUniform("u2",.4);let e=0;for(let t=bgHashIndex;t<min(bgHashIndex+200,bgHashes.length);t++){for(geometryBuffer.noStroke();bgHashes[t].hidden;)e++;geometryBuffer.fill(bgHashes[t].fill),"texture"==renderMode&&bgHashes[t].wobbleAndScale(10,0),drawStroke(bgHashes[t],bgHashes[t].hashWeight,geometryBuffer,!0),e++}bgHashIndex+=e,geometryBuffer.colorMode(RGB,255)}else if(booleanShapes&&shapeIndex<booleanShapes.length){bgHashes=null;let _=0;for(let $=shapeIndex;$<min(shapeIndex+500,booleanShapes.length);$++){for(;booleanShapes[$].points.length<=1;)_++;booleanShapes[$].hidden||(geometryBuffer.noStroke(),void 0!=booleanShapes[$].stroke&&(geometryBuffer.fill(booleanShapes[$].stroke),-1e13==booleanShapes[$].zIndex&&print(booleanShapes[$]),drawStroke(booleanShapes[$],booleanShapes[$].strokeWeight,geometryBuffer))),_++}shapeIndex+=_}else if(hashes&&hashIndex<hashes.length){booleanShapes=null;let i=0;for(let n=hashIndex;n<min(hashIndex+1e3,hashes.length);n++){geometryBuffer.noStroke();for(let a=0;a<hashes[n].length;a++){geometryBuffer.fill(hashes[n][a].fill);let r=hashes[n].scaleAmt,s=hashes[n].wobbleAmt;hashes[n][a].wobbleAndScale(s,r),drawStroke(hashes[n][a],hashes[n][a].strokeWeight,geometryBuffer,!0)}i++}hashIndex+=i,geometryBuffer.colorMode(RGB,255)}else layerCount<2&&"texture"==renderMode?(hashIndex=0,layerCount++):(hashes=null,print("done"),saveMode?(doDownload=!0,saving=!0):noLoop());geometryBuffer.pop(),crayonBuffer.clear(),crayonBuffer.shader(crayonShader),crayonShader.setUniform("u3",geometryBuffer),crayonShader.setUniform("u4",[frameCount*(frameCount%20==0?0:1),(frameCount+5)*((frameCount+5)%20==0?0:1)]),crayonShader.setUniform("u5",[width,height]),crayonBuffer.rect(-crayonBuffer.width/2,-crayonBuffer.height/2,crayonBuffer.width,crayonBuffer.height),drawnBuffer.shader(blendShader),blendShader.setUniform("u6",drawnBuffer),blendShader.setUniform("u7",crayonBuffer),drawnBuffer.rect(-drawnBuffer.width/2,-drawnBuffer.height/2,drawnBuffer.width,drawnBuffer.height),bgHashes&&bgHashIndex>=bgHashes.length&&(blendShader.setUniform("u1",.9),crayonShader.setUniform("u2",.3)),background(200),"texture"==renderMode?image(drawnBuffer,0,0):image(geometryBuffer,0,0),doDownload&&(print("Saving"),saveCanvas(rSeed+"_"+nSeed,"png"),doDownload=!1)}}function ball(e){for(let t=0;t<e.nPetals;t++)cupShape({xSegments:5,ySegments:5,transforms:[{type:"t",val:_createV(0,0,-.04)},{type:"s",val:_createV(e.scl,e.scl,e.scl)},{type:"s",val:_scalarMult(e.flowerProportions,e.flowerScale)},{type:"r",val:_createV(0,map(t,0,e.nPetals,0,TAU),0)},{type:"r",val:e.flowerRotation},{type:"t",val:e.flowerTranslation}],xMinExtent:-e.xExtents,xMaxExtent:e.xExtents,yMinExtent:0,yMaxExtent:1,palette:e.palette,br:e.br,brLerp:.5,contrast:0,drawPolygonLines:!0})}