memoscan
← all memos

Memo 0x9259e89d…abad65 on Ethereum

75,.25]);let a=0;const n=()=>{const e=t.levels.pop();t.levels.pop(),t.levels.push(e)};for(;(o>i||o<307)&&a<=100;)o>i?n():t.addLevels(P(y.CONFIG.getProp("constantTree")?void 0:{angle:Math.PI*e.random(T(.5,1.75,.1)),branchFactor:Math.round(e.random(2,6))},void 0,void 0,Number(t.levels[t.levels.length-1].type===s.Petals))),o=t.getNumBranches(),a++;for(;a>100&&o>i;)n(),o=t.getNumBranches();t.levels[t.levels.length-1].type===s.Petals&&t.levels[t.levels.length-2].type===s.Petals&&t.levels.pop(),r=e.color(0),y.mainLayer.stroke(r),S=new u(t),S.compute()};const k=(e,t,r,o,i=y.mainLayer)=>{const a=(Math.cos(1e3*e+o)+1)/2*2,n=(Math.sin(1e3*t+o)+1)/2*2,s=i.noise(a,n),l=i.map(s,0,1,.5,1.5);return{diamX:r*l*Math.cos(o),diamY:r*l*Math.sin(o)}},M=({x:e,y:t,n:r,side:o=.2,reeds:i=!0,pg:a})=>{const n=.25;r=(r=2*r-1)>-n&&r<0?-n:r<n&&r>0?n:0==r?a.random(-n,n):r;const s=(.1+a.random(-.003,.003))*(r*o),l=a.map((r+1)/2,0,1,.1,.2);E(e,t,s,l,.1,!!i&&a.random()<.2,a)},B=({x:e,y:o,n:i,pg:a})=>{a.push(),a.strokeWeight(1.05*t),((e,o,i,a=y.mainLayer)=>{a.beginShape();const n=[];for(let t=0;t<15;t++){const r=a.TWO_PI/15*t,{diamX:s,diamY:l}=k(e,o,i,r,a),c=e+s,d=o+l;n.push([c,d])}for(let e of[...n,...n.slice(0,4)])a.curveVertex(e[0]*a.width,e[1]*a.height);a.endShape(),a.push(),a.noStroke(),a.fill(r);for(let r=.75*i;r>.25*i;r-=i/8)for(let n=0;n<15;n++){const s=a.TWO_PI/15*n,{diamX:l,diamY:c}=k(e,o,r,s,a);a.random()<i/.02*.5*a.map(r/i,0,1,.25,1)&&a.circle((e+l+a.random(-i/10,i/10))*a.width,(o+c+a.random(-i/10,i/10))*a.height,a.constrain(.1*i*a.width,.002*a.width,.003*a.width)*t*.65)}a.pop()})(e,o,.015*a.map(i,0,1,.5,1),a),a.pop()},D=({x:e,y:r,wind:o,pg:i})=>{((e,r,o,i=20,a=.005,n=.3,s=1.05,l=y.mainLayer)=>{l.push(),l.strokeWeight(y.scaleFactor*t*.75),l.noFill(),l.beginShape(),l.vertex(e*l.width,r*l.width),n=Math.PI*n;for(let t=0;t<i;t++){const t=o(e,r),i=l.map(t,0,1,Math.PI*s-n,Math.PI*s+n),c=e-a*(1-t)*Math.cos(i),d=r-a*(1-t)*Math.sin(i);l.curveVertex(c*l.width,d*l.width),e=c,r=d}l.endShape(),l.pop()})(e,r,((e,t)=>i.noise(e*o,t*o)))},G=(e,t=!0,r=20,o=.01,i=.02,a=0,n=y.mainLayer)=>{const s=[];for(let e=-.1;e<1.1;e+=o)s.push(e);t&&n.shuffle(s,!0);for(let t=-.1+a;t<1.1;t+=i/2)for(let a of s){const s=n.noise(a*r,t*r),l=n.noise(a*r,t*r,1e3),c={x:a+n.random(-o/2,o/2),y:t+n.random(-i/2,i/2),n:s,wind:r,n2:l,pg:n};e.length>1?(l>.5&&e[0](c),e[1](c)):e[0](c)}},E=(t,r,o,i,a,n=!1,s=y.mainLayer)=>{const l=t+o,c=r-i;let d=t-o,h=r-i/2;if(s.beginShape(),s.vertex(t*s.width,r*s.height),s.bezierVertex(d*s.width,h*s.height,d*s.width,h*s.height,l*s.width,c*s.height),d=t-o*a,s.bezierVertex(d*s.width,h*s.height,d*s.width,h*s.height,(t+o/4)*s.width,r*s.height),s.vertex((t+o/4)*s.width,r*s.height),s.endShape(s.CLOSE),n){s.push();const t=l-d,r=c-h;s.translate(l*s.width,c*s.height);const o=-e.createVector(t,r).angleBetween(s.createVector(0,1));s.rotate(o),s.translate(-l*s.width,-c*s.height);const i=.005*s.width;s.translate(s.createVector(i/2,0).rotate(o)),s.rect(l*s.width,c*s.height,i,-.02*s.height),s.pop()}},A=()=>{y.drawPost(`${m}\n${h}\n${d}\nconst float thick = 0.0007;float bricks(vec2 st) {st*=5.;st += ${e.random().toPrecision(4)}+1.;vec2 origSt = st;st = st*2.-1.;float repeat = 5.;float yStretch = 0.5;float d = min(abs(fract(st.x*yStretch*repeat+steps(origSt.y, repeat*2.)*repeat)-0.5), abs(fract((st.y+0.5)*repeat)-0.5)*yStretch);return clamp((d-(noise(st*5.)-0.35)*0.01)*50., 0.,1.);}`,"outColor = vec4(vec3(tex.rgb == vec3(1.) ? vec3(bricks(st)) : tex.rrr), 1.);",(()=>({})),"bricks")};function*L(){var e,r;((e=y.mainLayer)=>{e.background("white"),e.scale(1.5),e.strokeWeight(y.scaleFactor*t);const r=y.CONFIG.getProp("bgPattern");"prairie"===r?G([e=>M({...e,side:.35,reeds:!1})],!0,10):"forest"===r?G([M,B]):"marsh"===r?(G([D]),G([M,()=>{}],!1)):"beach"===r?G([B,D]):"mountain"===r?G([B],!0):"river"===r?G([D],!1,void 0,.01,.01):"urban"===r?A():"urbanOvergrown"===r&&(e.fill("red"),G([M,B],void 0,void 0,void 0,void 0,.65),A())})(),e=.25,r=8e-4,y.drawPost(`uniform float blurChance; uniform float blurOff; ${d}`,"outColor = vec4(texture(tex0, rand(st) < blurChance ? uv + (rand(st) * 2. - 1.)*(blurOff*scaleFactor) : uv ).rgb, 1.);",(()=>({blurChance:e,blurOff:r})),"postBlur"),S.renderGl(),y.drawFxaa(),y.drawGrainGL(.1)}let R=0;return e.draw=()=>{y.drawLoadWrapper(L)},I}));