memoscan
← all memos

Memo 0x53b0d007…0ce876 on Ethereum

14159;in vec2 vTexCoord;out vec4 outColor;uniform sampler2D randTex;uniform sampler2D tex0;uniform float scaleFactor;uniform float seed;float map(float value, float min1, float max1, float min2, float max2) {return min2 + (value - min1) * (max2 - min2) / (max1 - min1);}\n${e} void main() {vec2 uv = vTexCoord;uv.y = 1.0 - uv.y;vec2 st = vTexCoord;${a?"vec4 tex = texture(tex0, uv);":""}${t}}`));let l=this.memo.postShader[o].shader;if(void 0===l)throw new Error("Post Shader Undefined");r&&(this.memo.postShader[o].uniforms=r(this));const d=this.memo.postShader[o].uniforms;if(void 0===d)throw new Error("Uniforms Undefined");if(n){s.shader(l);for(let[e,t]of Object.entries(d))l.setUniform(e,t);l.setUniform("seed",this.getShaderSeed()),l.setUniform("scaleFactor",this.scaleFactor/this.initScaleFactor),a&&l.setUniform("tex0",i||s),s.rect(0,0,s.width,s.height)}}drawFxaa(){this.drawPost("/*MIT LICENSE*/#define A (1.0/ 128.0)\n#define B (1.0 / 8.0)\n#define C 8.0\nuniform vec2 resolution;void D(vec2 E,vec2 resolution,out vec2 F,out vec2 G,out vec2 H,out vec2 I,out vec2 J){vec2 K=1./resolution.xy;F=(E+vec2(-1.,-1.))*K;G=(E+vec2(1.,-1.))*K;H=(E+vec2(-1.,1.))*K;I=(E+vec2(1.,1.))*K;J=vec2(E*K);}vec4 L(sampler2D M,vec2 E,vec2 resolution,vec2 F,vec2 G,vec2 H,vec2 I,vec2 J){vec4 N;mediump vec2 K=vec2(1./resolution.x,1./resolution.y);vec3 O=texture(M,F).xyz;vec3 P=texture(M,G).xyz;vec3 Q=texture(M,H).xyz;vec3 R=texture(M,I).xyz;vec4 S=texture(M,J);vec3 T=S.xyz;vec3 U=vec3(0.299,0.587,0.114);float V=dot(O,U);float W=dot(P,U);float X=dot(Q,U);float Y=dot(R,U);float Z=dot(T,U);float a=min(Z,min(min(V,W),min(X,Y)));float b=max(Z,max(max(V,W),max(X,Y)));mediump vec2 c;c.x=-((V+W)-(X+Y));c.y=((V+X)-(W+Y));float d=max((V+W+X+Y)*(0.25*B),A);float e=1./(min(abs(c.x),abs(c.y))+d);c=min(vec2(C,C),max(vec2(-C,-C),c*e))*K;vec3 f=0.5*(texture(M,E*K+c*(1./3.-0.5)).xyz+texture(M,E*K+c*(2./3.-0.5)).xyz);vec3 g=f*0.5+0.25*(texture(M,E*K+c*-0.5).xyz+texture(M,E*K+c*0.5).xyz);float h=dot(g,U);if((h<a)||(h>b))N=vec4(f,S.a);else N=vec4(g,S.a);return N;}vec4 L(sampler2D M,vec2 E,vec2 resolution){mediump vec2 F;mediump vec2 G;mediump vec2 H;mediump vec2 I;mediump vec2 J;D(E,resolution,F,G,H,I,J);return L(M,E,resolution,F,G,H,I,J);}","vec2 fragCoord = uv * resolution;\noutColor = L(tex0, fragCoord, resolution);",(()=>({resolution:[this.dim,this.dim]})),"fxaa")}vecToP5Vec({x:e,y:t}){return this.p.createVector(e,t)}p5ColorToArr(e){return[this.p.red(e)/255,this.p.green(e)/255,this.p.blue(e)/255]}p5ColorToByteArr(e){return[this.p.red(e),this.p.green(e),this.p.blue(e)]}getSeed(){return parseInt(this.CONFIG.getProp("artName").slice(2,9),16)}saveOutput(){const e=`${this.collection.toLowerCase().replace(" ","-")}_${this.CONFIG.getProp("artName")}`;this.p.saveCanvas(e,"jpg")}canvasCssDim(e=this.p.windowWidth,t=this.p.windowHeight){const r=Math.min(e,t);this.p.drawingContext.canvas.style.width=`${r}px`,this.p.drawingContext.canvas.style.height=`${r}px`}addCSSStyles(){document.body.style.backgroundColor="black";var e=document.createElement("style");e.innerText="body {margin: 0;display: flex;justify-content: center;align-items: center;overflow: hidden;} #loader {position: absolute;color: white;width: 100vw;height: 100vh;display: flex;font-size: 3rem;justify-content: center;align-items: center;} @media (max-width: 600px) {#loader {font-size: 2rem;}",document.head.appendChild(e)}beginLoading(){if(!this.loadingDiv){this.loadingDiv=document.createElement("div"),this.loadingDiv.id="loader";const e=document.createElement("div");e.style.textAlign="center",e.innerHTML=`<div>Creating a <span style="font-style: italic">${this.collection}</span></div><div>Please Wait...</div>`,this.loadingDiv.appendChild(e),document.body.appendChild(this.loadingDiv)}this.loadingDiv.style.display="inherit",this.loading=!0}endLoading(){this.loadingDiv.style.display="none",this.loading=!1}drawLoadWrapper(e){if(this.loading){this.drawer||(this.drawer={fn:e(),ran:0});const t=this.drawer.fn.next();return t.done&&(this.p.noLoop(),this.endFrame(),this.endLoading(),this.printTimeElapse()),this.drawer.ran++,t.done}return this.p.loop(),this.beginLoading(),this.loading=!0,!1}print(){console.log(`${this.collection} By VES3L`),console.log(`width: ${this.dim}px`,`height: ${this.dim}px`)}}const c="#version 300 es \nin vec3 aPosition;in vec2 aTexCoord;out vec2 vTexCoord;void main(){vTexCoord=aTexCoord;vec4 a=vec4(aPosition,1.);a.xy=a.xy*2.-1.,gl_Position=a;}",d="highp float rand(vec2 co){highp float a=12.9898,b=78.233,c=43758.5453,dt=dot(co.xy,vec2(a,b)),sn=mod(dt,3.14);return fract(sin(sn)*c);} float mod289(float x){return x-floor(x*.00346)*289.;}vec4 mod289(vec4 x){return x-floor(x*.00346)*289.;}vec4 perm(vec4 x){return mod289((x*34.+1.)*x);}float noise(vec3 p){vec3 a=floor(p),d=p-a;d=d*d*(3.-2.*d);vec4 b=a.xxyy+vec4(0.,1.,0.,1.),k1=perm(b.xyxy),k2=perm(k1.xyxy+b.zzww),c=k2+a.zzzz,k3=perm(c),k4=perm(c+1.),o1=fract(k3*.02439),o2=fract(k4*.02439),o3=o2*d.z+o1*(1.-d.z);vec2 o4=o3.yw*d.x+o3.xz*(1.-d.x);return o4.y*d.y+o4.x*(1.-d.y);} float noise(vec2 p) {return noise(vec3(p, seed));}",h="float dot2(in vec2 v){return dot(v,v);}float cro(in vec2 a,in vec2 b){return a.x*b.y-a.y*b.x;}float ndot(vec2 a,vec2 b){return a.x*b.x-a.y*b.y;}float opUnion(float d1,float d2){return min(d1,d2);}float opSubtraction(float d1,float d2){return max(-d1,d2);}float opIntersection(float d1,float d2){return max(d1,d2);}float sdCircle(vec2 p,float r){return length(p)-r;}float sdSegment(in vec2 p,in vec2 a,in vec2 b){vec2 pa=p-a,ba=b-a;float h=clamp(dot(pa,ba)/dot(ba,ba),0.,1.);return length(pa-ba*h);}float sdBox(in vec2 p,in vec2 b){vec2 d=abs(p)-b;return length(max(d,0.))+min(max(d.x,d.y),0.);}float opSmoothUnion(float a,float b,float k){float h=max(k-abs(a-b),0.)/k;return min(a,b)-h*h*k*.25;}float sdBezier(in vec2 pos,in vec2 A,in vec2 B,in vec2 C){vec2 a=B-A,b=A-2.*B+C,c=a*2.,d=A-pos;float kk=1./dot(b,b),kx=kk*dot(a,b),ky=kk*(2.*dot(a,a)+dot(d,b))/3.,kz=kk*dot(d,a),res=0.,p=ky-kx*kx,p3=p*p*p,q=kx*(2.*kx*kx-3.*ky)+kz,h=q*q+4.*p3;if(h>=0.){h=sqrt(h);vec2 x=(vec2(h,-h)-q)/2.,uv=sign(x)*pow(abs(x),vec2(.333333));float t=clamp(uv.x+uv.y-kx,0.,1.);res=dot2(d+(c+b*t)*t);}else{float z=sqrt(-p),v=acos(q/(p*z*2.))/3.,m=cos(v),n=sin(v)*1.732051;vec3 t=clamp(vec3(m+m,-n-m,n-m)*z-kx,0.,1.);res=min(dot2(d+(c+b*t.x)*t.x),dot2(d+(c+b*t.y)*t.y));}return sqrt(res);}float sdSignedBezier(in vec2 pos,in vec2 A,in vec2 B,in vec2 C){vec2 a=B-A,b=A-2.*B+C,c=a*2.,d=A-pos;float kk=1./dot(b,b),kx=kk*dot(a,b),ky=kk*(2.*dot(a,a)+dot(d,b))/3.,kz=kk*dot(d,a),res=0.,sgn=0.,p=ky-kx*kx,q=kx*(2.*kx*kx-3.*ky)+kz,p3=p*p*p,q2=q*q,h=q2+4.*p3;if(h>=0.){h=sqrt(h);vec2 x=(vec2(h,-h)-q)/2.,uv=sign(x)*pow(abs(x),vec2(.333333));float t=clamp(uv.x+uv.y-kx,0.,1.);vec2 q=d+(c+b*t)*t;res=dot2(q),sgn=cro(c+2.*b*t,q);}else{float z=sqrt(-p),v=acos(q/(p*z*2.))/3.,m=cos(v),n=sin(v)*1.732051;vec3 t=clamp(vec3(m+m,-n-m,n-m)*z-kx,0.,1.);vec2 qx=d+(c+b*t.x)*t.x;float dx=dot2(qx),sx=cro(c+2.*b*t.x,qx);vec2 qy=d+(c+b*t.y)*t.y;float dy=dot2(qy),sy=cro(c+2.*b*t.y,qy);dx<dy?(res=dx,sgn=sx):(res=dy,sgn=sy);}return sqrt(res)*sign(sgn);}vec4 bboxBezier(in vec2 p0,in vec2 p1,in vec2 p2){vec2 mi=min(p0,p2),ma=max(p0,p2);if(p1.x<mi.x||p1.x>ma.x||p1.y<mi.y||p1.y>ma.y){vec2 t=clamp((p0-p1)/(p0-2.*p1+p2),0.,1.),s=1.-t,q=s*s*p0+2.*s*t*p1+t*t*p2;mi=min(mi,q),ma=max(ma,q);}return vec4(mi,ma);}vec2 rotateVec(vec2 st,float a){return vec2(cos(a)*st.x-sin(a)*st.y,sin(a)*st.x+cos(a)*st.y);}float sdFilledBezier(in vec2 st,in vec2 a,in vec2 b,in vec2 c){vec2 dis=c-a;float rot=-atan(dis.y,dis.x);vec2 n=vec2(dis.y,-dis.x);float sgn=dot(b-st,n),d=sdSignedBezier(st,a,b,c)*sgn,bez=sdBezier(st,a,b,c),bottomline=sdSegment(st,a,c);a=rotateVec(a,rot),b=rotateVec(b,rot),c=rotateVec(c,rot);vec4 bb=bboxBezier(a,b,c);float box=sdBox(rotateVec(st,rot)-(bb.xy+bb.zw)*.5,(bb.zw-bb.xy)*.5),line=sgn*dot(st,-n);const float weight=2.;d=min(max(d*1e+4,box),bez/weight),d=min(d,bottomline);return d*weight;}float sdfToOutline(float outsideFill,float thick){float newOutsideFill=abs(outsideFill)-thick;return mix(clamp(abs(outsideFill)/fwidth(outsideFill)/(scaleFactor*(thick*2000.)),0.,1.),clamp(newOutsideFill/(fwidth(newOutsideFill)*(scaleFactor*.5)),0.,1.),.5);}",m=`\nfloat negMult(float n, float mult){return 1.-((1. - n) * mult);}\n${["float","vec2"].map((e=>`${e} steps(${e} val, ${e} steps) {\nreturn float(int(val*steps)) / steps;\n}`)).join("\n")}\n`;function p(e,t){this.x=e,this.y=t}function u(e,t,r,o){if(o<0||1<o||isNaN(o))return!1;var i=new p(e.x+(t.x-e.x)*o,e.y+(t.y-e.y)*o),a=new p(t.x+(r.x-t.x)*o,t.y+(r.y-t.y)*o);return new p(i.x+(a.x-i.x)*o,i.y+(a.y-i.y)*o)}function f(e,t,r,o,i,a){var n=new p(e,t),s=new p(r,o),l=new p(i,a),c=(n.x-s.x)/(n.x-2*s.x+l.x),d=(n.y-s.y)/(n.y-2*s.y+l.y),h=u(n,s,l,c),m=h?Math.min(n.x,l.x,h.x):Math.min(n.x,l.x),f=h?Math.max(n.x,l.x,h.x):Math.max(n.x,l.x),g=u(n,s,l,d);return{x:{min:m,max:f},y:{min:g?Math.min(n.y,l.y,g.y):Math.min(n.y,l.y),max:g?Math.max(n.y,l.y,g.y):Math.max(n.y,l.y)}}}new p5((e=>{const t=.8;let r;const o={getPaletteOrdered:({colors:e,order:t})=>e.map(((e,t)=>[e,t])).sort(((e,r)=>t.indexOf(e[1])-t.indexOf(r[1]))).map((e=>e[0])),addHashTags(e){const t=JSON.parse(JSON.stringify(e));return t.colors=v(t.colors),t}};let i;var n;let s;var c;(n=i||(i={}))[n.None=0]="None",n[n.Full=1]="Full",n[n.Half=2]="Half",(c=s||(s={}))[c.None=0]="None",c[c.Stem=1]="Stem",c[c.MainStem=2]="MainStem",c[c.Petals=3]="Petals",c[c.Flair=4]="Flair",c[c.Spacer=5]="Spacer";class p{constructor(){this.levels=[]}addLevel(e){let t=this.levels.length-1;for(;t>0&&this.levels[t]&&this.levels[t].type===s.Petals;)t--;return this.levels.push(e(this.levels[t])),this}addLevels(e){for(const t of e)this.addLevel(t);return this}getNumBranches(){const e=new u(this);return e.compute(),e.branches.length}}class u{branches=[{dst:{x:0,y:0},control:{x:y.CONFIG.getProp("stemCurveP"),y:1.5},parentId:-1,id:0,level:{length:1,curvature:0,stroke:2.25,angle:0,branchFactor:1,fill:i.None,type:s.Stem}}];margin="max"!==y.CONFIG.getProp("windowMargin")?.03:0;outerMargin=.08;constructor(e){this.config=e}compute(){this.computeBranches(this.config)}getBranchIndicesFromLevel(e){return e>=0?this.branchLevelIndices[e]:[0,1]}getBranchesFromLevel(e){return this.branches.slice(...this.getBranchIndic