0x5158…1802

All memos sent from and to 0x5158…1802.

Generative Alchemy is a versatile utility NFT collection that provides a toolset for divination, spell-casting, meditation, sacrifice, spirit worship (benign or otherwise), hedonism, pacifism, inter-dimensional travel, cryptozoological investigation, seance, prayer, banishing, chaos magic, clairvoyance, chromotherapy, evocation, dowsing, exorcism, fortune-telling, literomancy, necromancy, shapeshifting, and other esoteric (or mainstream) ritual (including entertainment). Collectors, devotees, rationalists, pirates, and all others alike are encouraged to leverage the designs pursuant to their own subjective belief system (whether sincere or imaginary) to address any and all desires (emotional or material). Generative Alchemy is provided as-is without explicit documentation, but here are some hypotheticals to get you started: Suffering from unrequited love? Plot it on a photo of your crush. Desire riches behind your wildest dreams? Plot it on your paystub. Want fame? Plot it on a magazine cover. Want to change your past? Plot it on a childhood picture. In too much of a hurry to plot? Click to activate the sequence.
Generative Alchemy is a versatile utility NFT collection that provides a toolset for divination, spell-casting, meditation, sacrifice, spirit worship (benign or otherwise), hedonism, prayer, pacifism, inter-dimensional travel, cryptozoological investigation, seance, prayer, banishing, chaos magic, clairvoyance, chromotherapy, evocation, dowsing, exorcism, fortune-telling, literomancy, necromancy, shapeshifting, and other esoteric (or mainstream) ritual (including entertainment). Collectors, devotees, rationalists, pirates, and others alike are encouraged to leverage the designs pursuant to their own subjective belief system (whether sincere or imaginary) to address any and all desires (emotional or material). Generative Alchemy is provided as-is without explicit documentation, but here are some hypotheticals to get you started: Suffering from unrequited love? Plot it on a photo of your crush. Desire riches behind your wildest dreams? Plot it on your paystub. Want fame? Plot it on a magazine cover. Want to change your past? Plot it on a childhood picture. In too much of a hurry to plot? Click to activate the sequence.
SS=tokenData.hash,S=Uint32Array.from([0,1,s=t=2,3].map($=>parseInt(SS.substr(8*$+2,8),16))),R=$=>(t=S[3],S[3]=S[2],S[2]=S[1],S[1]=s=S[0],t^=t<<11,S[0]^=t^t>>>8^s>>>19,S[0]/4294967296),setAttributes(Svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),{viewBox:"0 0 80 100",fill:"black"}),WW=80,HH=100,pAL=["wOL","rOL","gOL","rGL","rNW","bOL","bRD","all"][Math.floor(7*R())];let mnSK;for("bOL"==pAL||"bRD"==pAL||"all"==pAL?mnSK="black"&&dReC(0,0,WW,HH,f="white",c="black"):(dReC(0,0,WW,HH,f="black"),mnSK=["red","gold","white"][Math.floor(3*R())]),sFUl=R()>.9,sPlF=R()>.8,icons={dGGr:"M 0 -42 C 0 -33 -1 -28 -5 -21 C -1 -24 -3 12 -2 23 L -11 23 L -11 26 L -2 26 L -2 48 L 2 48 L 2 26 L 12 26 L 12 23 L 2 23 C 2 8 13 -36 0 -42 M 2 26 L -2 26 L 2 31 L -2 29 L 2 33 L -2 31 L -2 31 L 2 35 L -2 33 L 2 38 L -2 36 L 2 40 L -2 39 L 2 44 L -1 42 L -2 42 L 2 46 L -2 45 L 2 48",dGG2:"M 0 -42 L -5 -12 L -2 25 L -9 25 L -9 28 L -2 28 L -3 46 L 3 46 L 2 28 L 9 28 L 9 25 L 2 25 L 5 -11 L 0 -42",tDNt:"M 0 -39.2 L -4.8 -34.4 L -0.8 -34.4 L -0.8 -6.4 C -14.4 -4.8 -15.2 -17.6 -14.4 -34.4 L -12 -34.4 L -16 -39.2 L -18.4 -34.4 L -16 -34.4 C -16 -16.8 -16 -4 -0.8 -4.8 L -1.6 35.2 L 1.6 35.2 L 0.8 -4.8 C 13.6 -7.2 17.6 -20 16 -34.4 L 19.2 -34.4 L 14.4 -39.2 L 12 -34.4 L 14.4 -34.4 C 16.8 -23.2 12.8 -7.2 0.8 -7.2 L 0.8 -34.4 L 4.8 -34.4 L 0 -39.2 Z",cube:"M -18 -26 L 21 -25 L 21 14 M 21 14 L -18 14 L -18 -26 M -4 -8 L 33 -8 L 33 29 L -3 29 L -4 -8 M -18 -26 L -4 -8 M 21 -25 L 33 -8 M -18 14 L -3 29 M 21 14 L 33 29",kITT:"M -5.6 -14.4 C -20 -4 -24 11.2 -18.4 28 L 18.4 28 C 31.2 16 19.2 -12.8 30.4 -26.4 C 30.4 -30.4 28 -25.6 25.6 -24.8 C 23.2 -24.8 24 8.8 20 21.6 C 19.2 4 20.8 -20 7.2 -13.6 C 12.8 -20 15.2 -28 7.2 -32.8 L 6.4 -37.6 L 4 -33.6 C 0 -34.4 -3.2 -34.4 -7.2 -32.8 L -11.2 -38.4 L -9.6 -30.4 C -13.6 -24 -17.6 -18.4 -5.6 -14.4",yrMi:"M -3 -29 L -31 26 L 17 32 L -3 -29 L 38 16 L 17 32",eye:"M 0 -31.2 C -23.2 -12 -25.6 16.8 0 37.6 C 28 24.8 26.4 -12 0 -31.2 C -16 -11.2 -20 11.2 0 37.6 C 22.4 13.6 18.4 -6.4 0 -31.2 M 0 -10.4 A 0.8 0.8 90 0 0 0 13.6 A 0.8 0.8 90 0 0 0 -10.4 M 0 -1.6 A 0.8 0.8 90 0 0 0 4 A 0.8 0.8 90 0 0 0 -1.6",tHma:"M 0.6949 -29.8125 l 27.9491 47.9734 L -27.2546 -10.2863 L 0.6949 37.6875 l 27.9491 -47.9734 L -27.2546 18.1613 L 0.6949 -29.8125 z",yyNg:"M 0 30.4 a 30.4 30.4 90 0 1 0 -60.8 a 15.2 15.2 90 0 1 0 30.4 a 15.2 15.2 90 0 0 0 30.4 M 0 30.4 A 0.8 0.8 90 0 0 0 -30.4",pTcL:"m -0.75 -32 l 18.5 57 l -48.5 -35.25 h 60 l -48.5 35.25 z m 0 -1.75 a 33.25 33.25 90 1 1 -0.025 0",sxPn:"M 0 -32.8487 L -14.995 32.8487 L 27.0201 -19.8365 L -33.6935 9.4016 L 33.6935 9.4016 L -27.0201 -19.8366 L 14.995 32.8487 L 0 -32.8487 z",ankh:"M 8 -4 L 0 -4 C 16 -16 10 -35 0 -38 C -12 -35 -13 -17 0 -4 L -3 -4 C -14 -10 -26 -37 0 -40 C 24 -35 17 -8 3 -4 L -25 -4 L -25 1 L -2 0 L -4 46 L 4 46 L 2 0 L 29 2 L 29 -5 L 8 -4",moon:"M 0 -34 A 1 1 0 0 0 0 28 C -26 11 -25 -18 0 -34",male:"M 13.0108 -13.0108 A 0.8 0.8 135 0 0 -13.0108 13.0108 A 0.8 0.8 135 0 0 13.0108 -13.0108 L 30.547 -30.547 M 29.9813 -20.9304 L 30.547 -30.547 M 20.9304 -29.9813 L 30.547 -30.547",fMLe:"M 0 -18.4 A 0.8 0.8 90 0 0 0 18.4 A 0.8 0.8 90 0 0 0 -18.4 M 0 18.4 L 0 45.6 M -14.4 32 L 13.6 32",es1:"M 0 -29.6 L -7.2 -23.2 L -2.4 -23.2 L -2.4 -4 L -16.8 -4 L -16.8 -8 L -24 -2.4 L -16.8 3.2 L -16.8 0 L -2.4 0 L -2.4 16 L -14.4 16 C -17.6 28.8 3.2 8 17.6 37.6 C 12.8 29.6 12.8 12 3.2 13.6 L 3.2 0 L 20.8 0 L 20.8 4.8 L 27.2 -3.2 L 20.8 -8.8 L 20.8 -4 L 3.2 -4 L 3.2 -23.2 L 8 -23.2 L 0 -29.6 M 11.2 -20 A 0.8 0.8 90 0 0 11.2 -11.2 A 0.8 0.8 90 0 0 11.2 -20 M -5.6 26.4 A 0.8 0.8 90 0 0 -5.6 34.4 A 0.8 0.8 90 0 0 -5.6 26.4",es2:"M -15.2 -16.8 A 0.8 0.8 90 0 0 -15.2 -5.6 L -15.2 -11.2 L 3.2 -11.2 L -19.2 27.2 L -23.2 24 L -24.8 26.4 L -16 34.4 L -12 28.8 L -15.2 26.4 L -3.2 6.4 C 8.8 3.2 4.8 32.8 16.8 35.2 C 10.4 24.8 25.6 7.2 3.2 0.8 L 30.4 2.4 A 0.8 0.8 90 0 0 29.6 -5.6 C 14.4 -3.2 -4 -16 0 -32 L -15.2 -16.8 M 15.2 -25.6 A 0.8 0.8 90 0 0 27.2 -18.4 L 25.6 -29.6 L 15.2 -25.6 M -4.8 19.2 L -0.8 35.2 L 4 19.2 L -4.8 19.2",yEOp:"M 0 -29 A 1 1 0 0 0 0 35 A 1 1 0 0 0 0 -29 M 0 -21 L -23 18 L 24 18 L 0 -21 M -11 6 C -2 18 4 7 12 4 C 2 -7 -3 2 -11 6 M 0 3 A 1 1 0 0 0 0 7 A 1 1 0 0 0 0 3 M 0 -14 L 0 -5 M 9 9 L 16 14 M -11 11 L -17 16 M 0 13 L 0 15 M 4 -5 L 6 -7 M -4 -5 L -6 -7",atom:"M 0 -33 C -11 -33 -9 38 0 36 C 10 35 9 -34 0 -33 M -30 0 C -30 10 32 9 31 0 C 33 -9 -29 -10 -30 0 M -21 25 C -16 32 30 -19 23 -26 C 17 -32 -27 19 -21 25 M 0 -3 A 1 1 0 0 0 0 3 A 1 1 0 0 0 0 -3",cross:"M 0 -27 L -6.3 -27 L -6.3 -11.7 L -25.2 -11.7 L -25.2 -3.6 L -6.3 -3.6 L -5.4 40.5 L 5.4 40.5 L 5.4 -3.6 L 26.1 -3.6 L 26.1 -11.7 L 5.4 -11.7 L 5.4 -27 L 0 -27 Z",pi:"M -11.664 -11.664 C -14.904 -12.312 -18.144 -13.608 -20.088 -9.72 C -20.736 -22.032 3.24 -14.904 20.088 -17.496 C 21.384 -15.552 20.736 -12.96 19.44 -11.016 L 12.96 -11.664 C 13.176 3.24 9.72 30.456 18.144 30.456 C 1.296 33.048 11.232 2.376 7.776 -11.664 L -7.128 -11.664 L -7.128 29.16 C -8.424 30.456 -10.584 29.16 -12.312 29.16 C -12.096 15.552 -9.72 -1.296 -11.664 -11.664 Z",oro:"M -18.75 -2.25 A 0.75 0.75 90 0 0 23 -9 C 19 -23 1 -28 -7 -20 L -5 -13 L -18 -7.5 L -20.25 -9 L -20 -15 L -20 -25 L -12 -24 C 0 -40 31 -27 30 -3 C 25 28 -24 28.5 -19.5 -8.25 C -19.5 -6 -18.75 -7.5 -19 -3 Z",worm : "M9.68-13.93a14.25 14.25 0 0 1 5.34-1.13C23.81-15.06 31-8.3 31 .05c0 8.32-7.05 15.01-15.84 15.01-5.62 0-10.02-3.05-13.2-6.26 1.08-1.47 3.49-4.95 4.45-6.34 2.22 2.55 5.37 4.93 8.7 4.99 4.58.08 8.22-3.46 8.29-7.38.08-4.39-4.8-8.47-9.95-7.18.59-3.11-1.9-6.23-3.77-6.82Zm-.16 8.66C5.6-2.55 2.96 2.59-.77 7.5c-1.19 1.57-7.04 7.54-14.3 7.54-8.81.01-15.93-6.67-15.93-15s7.1-15 15.89-15c5.66 0 10 3.07 13.19 6.3-.9 1.25-3.3 4.77-4.44 6.35-2.21-2.56-5.46-5.03-8.8-5.03-4.45 0-8.23 3.47-8.23 7.38 0 3.92 3.78 7.42 8.23 7.4 2.37 0 5.77-1 10.21-6.73C-.2-5.41.2-7.72 4.65-11.1c1.74-1.32 4.38-.55 5.57 1.59.63 1.13.4 3-.7 4.24 Z"},bSQc=rColor(),brSM=R()>.9,icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())],x=WW/10;x<WW;x+=WW/10)for(y=HH/10;y<HH;y+=HH/10)(x>=WW/10&&y==HH/10||x==WW-WW/10&&y>=HH/10||x>=WW/10&&y==HH-HH/10||x==WW/10&&y<=HH-HH/10||sFUl||sPlF&&R()>.5)&&(brSM||(icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())]),R()>.1&&dICo(icons[icon],x,y,.1,f="none",r=!1,c=rColor()),R()>.9&&dReC(x-(R()>.5?0:WW/10),y-(R()>.5?0:HH/10),WW/10,HH/10,f="none",c=bSQc),R()>.5&&dCIC(x,y,WW/10/2,c=rColor()),R()>.3&&dReC(x-WW/10/2,y-HH/10/2,WW/10,HH/10,f="none",c=bSQc),R()>.8&&dCIC(x,y,WW/10,c=rColor()));if(lAYt=["grNi","cRCs","thGY"][Math.floor(3*R())],cnRs=R()>.9,icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())],"thGY"!=lAYt||sFUl||sPlF){if("cRCs"!=lAYt||sFUl||sPlF){if("grNi"==lAYt&&!sFUl&&!sPlF)for(x=WW/10+WW/10+WW/10;x<WW-WW/10-WW/10;x+=WW/10)for(y=HH/10+HH/10+HH/10;y<HH-HH/10-HH/10;y+=HH/10)cnRs||(icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())]),dICo(icons[icon],x,y,.1,f="none",r=!0,c=rColor()),dReC(x-WW/10/2,y-HH/10/2,WW/10,HH/10,f="none",c=bSQc)}else n=[2,4,6,8,12,16,20,30][Math.floor(8*R())],cPnT(WW/2,HH/2,WW/10,n+=4,o=R()+.5).forEach($=>{dCIC($[0],$[1],10,c=rColor())})}else cPnT(40,50,17,n=10).forEach($=>{dCIC($[0],$[1],5,c=rColor()),cnRs||(icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())]),dICo(icons[icon],$[0],$[1],.1,f=rColor(),!0,c=rColor())}),icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())],dICo(icons[icon],40,50,.2,f=rColor,r=!0,c=rColor());function rColor(){if("bOL"==pAL)return"black";if("wOL"==pAL)return"white";if("rOL"==pAL)return"red";if("gOL"==pAL)return"gold";if("rGL"==pAL)return["gold","red"][Math.floor(2*R())];else if("rNW"==pAL)return["white","red"][Math.floor(2*R())];else if("bRD"==pAL)return["black","red"][Math.floor(2*R())];else return["white","red","gold"][Math.floor(3*R())]}function cPnT($,_,e,L=5,t=1){let l=[];for(i=0;i<L;i++)l.push([$+e*Math.cos(2*Math.PI*i/L)*t,_+e*Math.sin(2*Math.PI*i/L)*t]);return l}function dICo($,_,e,L,t=!1,l=!0,C="gold"){let a="";Object.getOwnPropertyNames(icons).forEach(_=>{$==icons[_]&&(a=_)}),["yrMi","cube","kITT","eye","tHma","yyNg","pTcL","sxPn","tHma","fMLe","male","yEOp","atom"].includes(a)&&(t="none"),["yrMi","kITT","tHma"].includes(a)&&(l=!1);let s=document.createElementNS("http://www.w3.org/2000/svg","path");setAttributes(s,{d:$,fill:t||"none",stroke:C,transform:`translate(${_}, ${e}) scale(${L}) rotate(${l?360*R():0})`,"stroke-width":2}),Svg.appendChild(s)}function dReC($,_,e,L,t="none",l="gold",C=.1){let a=document.createElementNS("http://www.w3.org/2000/svg","rect");setAttributes(a,{x:$,y:_,width:e,height:L,fill:t,stroke:l,"stroke-width":C}),Svg.appendChild(a)}function dCIC($,_,e,L="gold"){setAttributes(_circle=document.createElementNS("http://www.w3.org/2000/svg","circle"),{cx:$,cy:_,r:e,"fill-opacity":"0",stroke:L,"stroke-width":.1}),Svg.appendChild(_circle)}function setAttributes($,_){for(key in _)$.setAttribute(key,_[key])}document.body.appendChild(Svg);let _nINg=!1,iRVL,mxRe=5*R(),rOLY=R()>.8;function ANLO(){function $($,_,e){return setAttributes(_anim=document.createElementNS("http://www.w3.org/2000/svg","animate"),{attributeType:"xml",attributeName:$,values:_,dur:e,additive:"sum",repeatCount:"indefinite"}),_anim}(_paths=document.querySelectorAll("path")).forEach($=>{setAttributes(_anim=document.createElementNS("http://www.w3.org/2000/svg","animateTransform"),{attributeType:"xml",attributeName:"transform",type:"rotate",from:"360 0 0",to:"0 0 0",dur:"5s",additive:"sum",repeatCount:"indefinite"}),R()>.95&&$.appendChild(_anim),Svg.appendChild($)}),(_rects=document.querySelectorAll("rect")).forEach(_=>{targColor=["gold","red","white","black"][Math.floor(4*R())],_anim=$("fill",`${targColor};none;${targColor}`,`${5*R()+1}s`),R()>.95&&_.appendChild(_anim),_anim2=$("x",`${-(WW*R())};${WW};${-(WW*R())}`,`${10*R()+3}s`),R()>.95&&!rOLY&&_.appendChild(_anim2),_anim3=$("y",`${-(HH*R())};${HH};${-(HH*R())}`,`${10*R()+3}s`),R()>.95&&!rOLY&&_.appendChild(_anim3)}),(_cRCs=document.querySelectorAll("circle")).forEach(_=>{_anim=$("stroke-width",`0;${2*R()};0`,`${5*R()+1}s`),R()>.95&&_.appendChild(_anim)}),(MATI=document.querySelectorAll("animate, animateTransform")).forEach($=>{R()>.85&&$.remove()})}!0!=tokenData.plot&&document.body.addEventListener("click",()=>{(_nINg=!_nINg)?(ANLO(),iRVL=setInterval(ANLO,8e3*R()+2e3)):(clearInterval(iRVL),(MATI=document.querySelectorAll("animate, animateTransform")).forEach($=>{$.remove()}))});document.getElementsByTagName('svg')[0].style="height:"+window.innerHeight;Svg.setAttribute('width', '100vw');Svg.setAttribute('height', '100vh');
``` let TX; let TXN; let EID; let DIM; let WIDTH; let HEIGHT; let decPairs; let perlinSeed; let metadataObj = {}; getHashData = (transactionID) => { let transactions = [TX]; let transactionForTokenId = transactionID - 1; let tokenData = { hash: transactions[transactionForTokenId] }; decPairs = []; for (let i = 0; i < 32; i++) { decPairs.push(parseInt(tokenData.hash.substr(2 * i + 2, 2), 16)); } console.log("decPairs :", decPairs); } printMetadata = () => { metadataObj.transactionHash = TX; console.log("metadata: ", metadataObj); } let tShader; let SCALE; let wHW; let sGreen; let vShader, fShader; p.myCustomRedrawAccordingToNewPropsHandler = (props) => { if (props.transactionHash && props.square) { TX = props.transactionHash; TXN = props.tokenId; EID = props.editionId; WIDTH = window.innerWidth / props.square * 0.8; HEIGHT = window.innerHeight / props.square * 0.8; DIM = Math.min(WIDTH, HEIGHT); getHashData(1); // SEEDING p.randomSeed(+props.transactionHash.substr(0, 10)); perlinSeed = p.random(0, 255); p.noiseSeed(perlinSeed); console.log("randomSeed: ", +props.transactionHash.substr(0, 10)); console.log("noiseSeed: ", perlinSeed); console.log("transaction: ", TX); vShader = ` attribute vec3 aPosition; attribute vec2 aTexCoord; varying vec2 vTexCoord; uniform float u_frame2; void main() { vTexCoord = aTexCoord; vec4 positionVec4 = vec4(aPosition, 1.0); positionVec4.xy = positionVec4.xy * ${p.random() * 10 + 2} -1.; gl_Position = positionVec4; } `; fShader = ` precision mediump float; varying vec2 vTexCoord; uniform float u_frame; uniform vec2 u_resolution; void main() { vec2 coord = gl_FragCoord.xy/u_resolution.xy; coord ${p.random() > 0.5 ? "*" : "/"}= coord / ${p.random() * 10.0} -1.*${p.random() > 0.5 ? "sin" : "cos"}(u_frame*0.1); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "sin" : "cos"}(u_frame)*10.1, -1. + ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); float dd = distance(coord, vec2(cos(coord.y), ${p.random() > 0.5 ? "sin" : "cos"}(coord.x))); float dd2 = distance(coord, vec2(cos(dd), ${p.random() > 0.5 ? "sin" : "cos"}(dd))); float dd3 = distance(coord, vec2(u_frame, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame))); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "sin" : "cos"}(u_frame)) / dd3; float dd4 = distance(coord, vec2(1, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame))); float dd5 = smoothstep(u_frame, fract(dd3*dd2), ${p.random() > 0.5 ? "sin" : "cos"}(dd4)); dd ${p.random() > 0.5 ? "*" : "+"}= dd2 * dd3 / dd4*dd5; float ddf = mix(${p.random()}, ${p.random()}, dd5); vec3 df = vec3(${p.random() > 0.5 ? "sin" : "cos"}(fract(dd5)), ${p.random() > 0.5 ? "sin" : "cos"}(fract(${p.random() > 0.5 ? "dd2" : "dd3"})), ${p.random() > 0.5 ? "sin" : "cos"}(fract(dd3*0.1))); ddf ${p.random() > 0.5 ? "*" : "+"}= mix(${p.random()}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame), df.x); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "df.y" : "df.z"}, df.z); coord ${p.random() > 0.5 ? "*" : "+"}= smoothstep(u_frame, df.x, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); df ${p.random() > 0.5 ? "*" : "+"}= mix(sin(u_frame)*${p.random()}, ${p.random()}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); dd5 ${p.random() > 0.5 ? "*" : "+"}= dot(${p.random() > 0.5 ? "dd" : "dd2"}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); coord ${p.random() > 0.5 ? "*" : "+"}= mix(${p.random() > 0.5 ? "dd2" : "dd5"}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame), dd5); gl_FragColor = vec4(${p.random() > 0.5 ? "df.b" : "df.r"},fract(${p.random() > 0.5 ? "coord.x" : "coord.y"}/${p.random() > 0.5 ? "dd5" : "dd4"}),${p.random() > 0.5 ? "sin" : "cos"}(${p.random() > 0.5 ? "df.b" : "df.g"}*${p.random() > 0.5 ? "u_frame" : p.random()}),1./${p.random()}); } `; p.createCanvas(DIM, DIM, p.WEBGL); const gl = p.canvas.getContext('webgl') gl.disable(gl.DEPTH_TEST) p.frameRate(30); SCALE = DIM / 400; wHW = 400 sGreen = (p.random()*1000)+500 tShader = p.createShader(vShader, fShader); p.pixelDensity(1) p.background(sGreen) printMetadata(); } p.redraw(); }; p.draw = () => { p.push(); p.translate(-DIM / 2, -DIM / 2); p.scale(SCALE); p.pop(); tShader.setUniform('u_resolution', [DIM, DIM]); tShader.setUniform('u_frame', (sGreen+p.frameCount)*0.005); p.shader(tShader); p.square(0, 0, wHW); p.resetShader(); p.random(); } ```
``` // ----------------------- CODE STARTS HERE -------------------------- // let TX; let TXN; let EID; let DIM; let WIDTH; let HEIGHT; let decPairs; let perlinSeed; let metadataObj = {}; getHashData = (transactionID) => { let transactions = [TX]; let transactionForTokenId = transactionID - 1; let tokenData = { hash: transactions[transactionForTokenId] }; decPairs = []; for (let i = 0; i < 32; i++) { decPairs.push(parseInt(tokenData.hash.substr(2 * i + 2, 2), 16)); } console.log("decPairs :", decPairs); } printMetadata = () => { metadataObj.transactionHash = TX; console.log("metadata: ", metadataObj); } //----------------- ARTIST STARTS CUSTOM FUNCTIONS HERE -----------------// let HW = Math.min(window.innerWidth, window.innerHeight); let tShader; let SCALE; let wHW; let sGreen; let vShader, fShader; //------------------ ARTIST ENDS CUSTOM FUNCTIONS HERE ------------------// p.myCustomRedrawAccordingToNewPropsHandler = (props) => { if (props.transactionHash && props.square) { TX = props.transactionHash; TXN = props.tokenId; EID = props.editionId; WIDTH = window.innerWidth / props.square * 0.8; HEIGHT = window.innerHeight / props.square * 0.8; DIM = Math.min(WIDTH, HEIGHT); getHashData(1); // SEEDING p.randomSeed(+props.transactionHash.substr(0, 10)); perlinSeed = p.random(0, 255); p.noiseSeed(perlinSeed); console.log("randomSeed: ", +props.transactionHash.substr(0, 10)); console.log("noiseSeed: ", perlinSeed); console.log("transaction: ", TX); //--------------------- ARTIST STARTS SETUP HERE -----------------------// vShader = ` attribute vec3 aPosition; attribute vec2 aTexCoord; varying vec2 vTexCoord; uniform float u_frame2; void main() { vTexCoord = aTexCoord; vec4 positionVec4 = vec4(aPosition, 1.0); positionVec4.xy = positionVec4.xy * ${p.random() * 10 + 2} -1.; gl_Position = positionVec4; } `; fShader = ` precision mediump float; varying vec2 vTexCoord; uniform float u_frame; uniform vec2 u_resolution; void main() { vec2 coord = gl_FragCoord.xy/u_resolution.xy; coord ${p.random() > 0.5 ? "*" : "/"}= coord / ${p.random() * 10.0} -1.*${p.random() > 0.5 ? "sin" : "cos"}(u_frame*0.1); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "sin" : "cos"}(u_frame)*10.1, -1. + ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); float dd = distance(coord, vec2(cos(coord.y), ${p.random() > 0.5 ? "sin" : "cos"}(coord.x))); float dd2 = distance(coord, vec2(cos(dd), ${p.random() > 0.5 ? "sin" : "cos"}(dd))); float dd3 = distance(coord, vec2(u_frame, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame))); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "sin" : "cos"}(u_frame)) / dd3; float dd4 = distance(coord, vec2(1, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame))); float dd5 = smoothstep(u_frame, fract(dd3*dd2), ${p.random() > 0.5 ? "sin" : "cos"}(dd4)); dd ${p.random() > 0.5 ? "*" : "+"}= dd2 * dd3 / dd4*dd5; float ddf = mix(${p.random()}, ${p.random()}, dd5); vec3 df = vec3(${p.random() > 0.5 ? "sin" : "cos"}(fract(dd5)), ${p.random() > 0.5 ? "sin" : "cos"}(fract(${p.random() > 0.5 ? "dd2" : "dd3"})), ${p.random() > 0.5 ? "sin" : "cos"}(fract(dd3*0.1))); ddf ${p.random() > 0.5 ? "*" : "+"}= mix(${p.random()}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame), df.x); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "df.y" : "df.z"}, df.z); coord ${p.random() > 0.5 ? "*" : "+"}= smoothstep(u_frame, df.x, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); df ${p.random() > 0.5 ? "*" : "+"}= mix(sin(u_frame)*${p.random()}, ${p.random()}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); dd5 ${p.random() > 0.5 ? "*" : "+"}= dot(${p.random() > 0.5 ? "dd" : "dd2"}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); coord ${p.random() > 0.5 ? "*" : "+"}= mix(${p.random() > 0.5 ? "dd2" : "dd5"}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame), dd5); gl_FragColor = vec4(${p.random() > 0.5 ? "df.b" : "df.r"},fract(${p.random() > 0.5 ? "coord.x" : "coord.y"}/${p.random() > 0.5 ? "dd5" : "dd4"}),${p.random() > 0.5 ? "sin" : "cos"}(${p.random() > 0.5 ? "df.b" : "df.g"}*${p.random() > 0.5 ? "u_frame" : p.random()}),1./${p.random()}); } `; p.createCanvas(HW, HW, p.WEBGL); const gl = p.canvas.getContext('webgl') gl.disable(gl.DEPTH_TEST) p.frameRate(30); SCALE = HW / 400; wHW = 400 sGreen = (p.random()*1000)+500 tShader = p.createShader(vShader, fShader); p.pixelDensity(1) p.background(sGreen) //----------------------------------------------------------------------// printMetadata(); } p.redraw(); }; p.draw = () => { //-------------------- ARTIST STARTS DRAWING HERE ----------------------// //if (frameCount == 75) noLoop(); p.push(); p.translate(-HW / 2, -HW / 2); p.scale(SCALE); p.pop(); tShader.setUniform('u_resolution', [HW, HW]); tShader.setUniform('u_frame', (sGreen+p.frameCount)*0.005); p.shader(tShader); p.square(0, 0, wHW); p.resetShader(); //----------------------------------------------------------------------// } // ------------------------- CODE ENDS HERE --------------------------- // ```
Abstract oscilloscope. Mystic barometer. Best viewed on GPU enabled desktop devices. Renderings for each mint may have variation across browsers, devices, or resolutions. Embrace the chaos. Observe the End of Days.
``` // ----------------------- CODE STARTS HERE -------------------------- // let TX; let TXN; let EID; let DIM; let WIDTH; let HEIGHT; let decPairs; let perlinSeed; let metadataObj = {}; getHashData = (transactionID) => { let transactions = [TX]; let transactionForTokenId = transactionID - 1; let tokenData = { hash: transactions[transactionForTokenId] }; decPairs = []; for (let i = 0; i < 32; i++) { decPairs.push(parseInt(tokenData.hash.substr(2 * i + 2, 2), 16)); } console.log("decPairs :", decPairs); } printMetadata = () => { metadataObj.traitName1 = "Change traitName and put your value here"; metadataObj.traitName2 = "Change traitName and put your value here"; metadataObj.traitName3 = "Change traitName and put your value here"; metadataObj.transactionHash = TX; console.log("metadata: ", metadataObj); } //----------------- ARTIST STARTS CUSTOM FUNCTIONS HERE -----------------// let HW = Math.min(window.innerWidth, window.innerHeight); let tShader; let SCALE; let wHW; let sGreen; let vShader, fShader; //------------------ ARTIST ENDS CUSTOM FUNCTIONS HERE ------------------// p.myCustomRedrawAccordingToNewPropsHandler = (props) => { if (props.transactionHash && props.square) { TX = props.transactionHash; TXN = props.tokenId; EID = props.editionId; WIDTH = window.innerWidth / props.square * 0.8; HEIGHT = window.innerHeight / props.square * 0.8; DIM = Math.min(WIDTH, HEIGHT); getHashData(1); // SEEDING p.randomSeed(+props.transactionHash.substr(0, 10)); perlinSeed = p.random(0, 255); p.noiseSeed(perlinSeed); console.log("randomSeed: ", +props.transactionHash.substr(0, 10)); console.log("noiseSeed: ", perlinSeed); console.log("transaction: ", TX); //--------------------- ARTIST STARTS SETUP HERE -----------------------// vShader = ` attribute vec3 aPosition; attribute vec2 aTexCoord; varying vec2 vTexCoord; uniform float u_frame2; void main() { vTexCoord = aTexCoord; vec4 positionVec4 = vec4(aPosition, 1.0); positionVec4.xy = positionVec4.xy * ${p.random() * 10 + 2} -1.; gl_Position = positionVec4; } `; fShader = ` precision mediump float; varying vec2 vTexCoord; uniform float u_frame; uniform vec2 u_resolution; void main() { vec2 coord = gl_FragCoord.xy/u_resolution.xy; coord ${p.random() > 0.5 ? "*" : "/"}= coord / ${p.random() * 10.0} -1.*${p.random() > 0.5 ? "sin" : "cos"}(u_frame*0.1); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "sin" : "cos"}(u_frame)*10.1, -1. + ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); float dd = distance(coord, vec2(cos(coord.y), ${p.random() > 0.5 ? "sin" : "cos"}(coord.x))); float dd2 = distance(coord, vec2(cos(dd), ${p.random() > 0.5 ? "sin" : "cos"}(dd))); float dd3 = distance(coord, vec2(u_frame, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame))); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "sin" : "cos"}(u_frame)) / dd3; float dd4 = distance(coord, vec2(1, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame))); float dd5 = smoothstep(u_frame, fract(dd3*dd2), ${p.random() > 0.5 ? "sin" : "cos"}(dd4)); dd ${p.random() > 0.5 ? "*" : "+"}= dd2 * dd3 / dd4*dd5; float ddf = mix(${p.random()}, ${p.random()}, dd5); vec3 df = vec3(${p.random() > 0.5 ? "sin" : "cos"}(fract(dd5)), ${p.random() > 0.5 ? "sin" : "cos"}(fract(${p.random() > 0.5 ? "dd2" : "dd3"})), ${p.random() > 0.5 ? "sin" : "cos"}(fract(dd3*0.1))); ddf ${p.random() > 0.5 ? "*" : "+"}= mix(${p.random()}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame), df.x); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "df.y" : "df.z"}, df.z); coord ${p.random() > 0.5 ? "*" : "+"}= smoothstep(u_frame, df.x, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); df ${p.random() > 0.5 ? "*" : "+"}= mix(sin(u_frame)*${p.random()}, ${p.random()}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); dd5 ${p.random() > 0.5 ? "*" : "+"}= dot(${p.random() > 0.5 ? "dd" : "dd2"}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); coord ${p.random() > 0.5 ? "*" : "+"}= mix(${p.random() > 0.5 ? "dd2" : "dd5"}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame), dd5); gl_FragColor = vec4(${p.random() > 0.5 ? "df.b" : "df.r"},fract(${p.random() > 0.5 ? "coord.x" : "coord.y"}/${p.random() > 0.5 ? "dd5" : "dd4"}),${p.random() > 0.5 ? "sin" : "cos"}(${p.random() > 0.5 ? "df.b" : "df.g"}*${p.random() > 0.5 ? "u_frame" : p.random()}),1./${p.random()}); } `; p.createCanvas(HW, HW, p.WEBGL); const gl = p.canvas.getContext('webgl') gl.disable(gl.DEPTH_TEST) p.frameRate(30); SCALE = HW / 400; wHW = 400 sGreen = (p.random()*1000)+500 tShader = p.createShader(vShader, fShader); p.pixelDensity(1) p.background(sGreen) //----------------------------------------------------------------------// printMetadata(); } p.redraw(); }; p.draw = () => { //-------------------- ARTIST STARTS DRAWING HERE ----------------------// //if (frameCount == 75) noLoop(); p.push(); p.translate(-HW / 2, -HW / 2); p.scale(SCALE); p.pop(); tShader.setUniform('u_resolution', [HW, HW]); tShader.setUniform('u_frame', (sGreen+p.frameCount)*0.005); p.shader(tShader); p.square(0, 0, wHW); p.resetShader(); //----------------------------------------------------------------------// } // ------------------------- CODE ENDS HERE --------------------------- // ```
``` // ----------------------- CODE STARTS HERE -------------------------- // let TX; let TXN; let EID; let DIM; let WIDTH; let HEIGHT; let decPairs; let perlinSeed; let metadataObj = {}; getHashData = (transactionID) => { let transactions = [TX]; let transactionForTokenId = transactionID - 1; let tokenData = { hash: transactions[transactionForTokenId] }; decPairs = []; for (let i = 0; i < 32; i++) { decPairs.push(parseInt(tokenData.hash.substr(2 * i + 2, 2), 16)); } console.log("decPairs :", decPairs); } printMetadata = () => { metadataObj.traitName1 = "Change traitName and put your value here"; metadataObj.traitName2 = "Change traitName and put your value here"; metadataObj.traitName3 = "Change traitName and put your value here"; metadataObj.transactionHash = TX; console.log("metadata: ", metadataObj); } //----------------- ARTIST STARTS CUSTOM FUNCTIONS HERE -----------------// let HW = Math.min(window.innerWidth, window.innerHeight); let tShader; let SCALE; let wHW; let sGreen; let vShader, fShader; //------------------ ARTIST ENDS CUSTOM FUNCTIONS HERE ------------------// p.myCustomRedrawAccordingToNewPropsHandler = (props) => { if (props.transactionHash && props.square) { TX = props.transactionHash; TXN = props.tokenId; EID = props.editionId; WIDTH = window.innerWidth / props.square * 0.8; HEIGHT = window.innerHeight / props.square * 0.8; DIM = Math.min(WIDTH, HEIGHT); getHashData(1); // SEEDING p.randomSeed(+props.transactionHash.substr(0, 10)); perlinSeed = p.random(0, 255); p.noiseSeed(perlinSeed); console.log("randomSeed: ", +props.transactionHash.substr(0, 10)); console.log("noiseSeed: ", perlinSeed); console.log("transaction: ", TX); //--------------------- ARTIST STARTS SETUP HERE -----------------------// vShader = ` attribute vec3 aPosition; attribute vec2 aTexCoord; varying vec2 vTexCoord; uniform float u_frame2; void main() { vTexCoord = aTexCoord; vec4 positionVec4 = vec4(aPosition, 1.0); positionVec4.xy = positionVec4.xy * ${p.random() * 10 + 2} -1.; gl_Position = positionVec4; } `; fShader = ` precision mediump float; varying vec2 vTexCoord; uniform float u_frame; uniform vec2 u_resolution; void main() { vec2 coord = gl_FragCoord.xy/u_resolution.xy; coord ${p.random() > 0.5 ? "*" : "/"}= coord / ${p.random() * 10.0} -1.*${p.random() > 0.5 ? "sin" : "cos"}(u_frame*0.1); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "sin" : "cos"}(u_frame)*10.1, -1. + ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); float dd = distance(coord, vec2(cos(coord.y), ${p.random() > 0.5 ? "sin" : "cos"}(coord.x))); float dd2 = distance(coord, vec2(cos(dd), ${p.random() > 0.5 ? "sin" : "cos"}(dd))); float dd3 = distance(coord, vec2(u_frame, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame))); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "sin" : "cos"}(u_frame)) / dd3; float dd4 = distance(coord, vec2(1, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame))); float dd5 = smoothstep(u_frame, fract(dd3*dd2), ${p.random() > 0.5 ? "sin" : "cos"}(dd4)); dd ${p.random() > 0.5 ? "*" : "+"}= dd2 * dd3 / dd4*dd5; float ddf = mix(${p.random()}, ${p.random()}, dd5); vec3 df = vec3(${p.random() > 0.5 ? "sin" : "cos"}(fract(dd5)), ${p.random() > 0.5 ? "sin" : "cos"}(fract(${p.random() > 0.5 ? "dd2" : "dd3"})), ${p.random() > 0.5 ? "sin" : "cos"}(fract(dd3*0.1))); ddf ${p.random() > 0.5 ? "*" : "+"}= mix(${p.random()}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame), df.x); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "df.y" : "df.z"}, df.z); coord ${p.random() > 0.5 ? "*" : "+"}= smoothstep(u_frame, df.x, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); df ${p.random() > 0.5 ? "*" : "+"}= mix(sin(u_frame)*${p.random()}, ${p.random()}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); dd5 ${p.random() > 0.5 ? "*" : "+"}= dot(${p.random() > 0.5 ? "dd" : "dd2"}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); coord ${p.random() > 0.5 ? "*" : "+"}= mix(${p.random() > 0.5 ? "dd2" : "dd5"}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame), dd5); gl_FragColor = vec4(${p.random() > 0.5 ? "df.b" : "df.r"},fract(${p.random() > 0.5 ? "coord.x" : "coord.y"}/${p.random() > 0.5 ? "dd5" : "dd4"}),${p.random() > 0.5 ? "sin" : "cos"}(${p.random() > 0.5 ? "df.b" : "df.g"}*${p.random() > 0.5 ? "u_frame" : p.random()}),1./${p.random()}); } `; p.createCanvas(HW, HW, p.WEBGL); const gl = p.canvas.getContext('webgl') gl.disable(gl.DEPTH_TEST) p.frameRate(30); SCALE = HW / 400; wHW = 400 sGreen = (p.random()*1000)+500 tShader = p.createShader(vShader, fShader); p.pixelDensity(1) p.background(sGreen) //----------------------------------------------------------------------// printMetadata(); } p.redraw(); }; p.draw = () => { //-------------------- ARTIST STARTS DRAWING HERE ----------------------// //if (frameCount == 75) noLoop(); p.push(); p.translate(-HW / 2, -HW / 2); p.scale(SCALE); p.pop(); tShader.setUniform('u_resolution', [HW, HW]); tShader.setUniform('u_frame', (sGreen+p.frameCount)*0.005); p.shader(tShader); p.square(0, 0, wHW); p.resetShadep.random(); //----------------------------------------------------------------------// } // ------------------------- CODE ENDS HERE --------------------------- // ```
// ----------------------- CODE STARTS HERE -------------------------- // let TX; let TXN; let EID; let DIM; let WIDTH; let HEIGHT; let decPairs; let perlinSeed; let metadataObj = {}; getHashData = (transactionID) => { let transactions = [TX]; let transactionForTokenId = transactionID - 1; let tokenData = { hash: transactions[transactionForTokenId] }; decPairs = []; for (let i = 0; i < 32; i++) { decPairs.push(parseInt(tokenData.hash.substr(2 * i + 2, 2), 16)); } console.log("decPairs :", decPairs); } printMetadata = () => { metadataObj.traitName1 = "Change traitName and put your value here"; metadataObj.traitName2 = "Change traitName and put your value here"; metadataObj.traitName3 = "Change traitName and put your value here"; metadataObj.transactionHash = TX; console.log("metadata: ", metadataObj); } //----------------- ARTIST STARTS CUSTOM FUNCTIONS HERE -----------------// let HW = Math.min(window.innerWidth, window.innerHeight); let tShader; let SCALE; let wHW; let sGreen; let vShader, fShader; //------------------ ARTIST ENDS CUSTOM FUNCTIONS HERE ------------------// p.myCustomRedrawAccordingToNewPropsHandler = (props) => { if (props.transactionHash && props.square) { TX = props.transactionHash; TXN = props.tokenId; EID = props.editionId; WIDTH = window.innerWidth / props.square * 0.8; HEIGHT = window.innerHeight / props.square * 0.8; DIM = Math.min(WIDTH, HEIGHT); getHashData(1); // SEEDING p.randomSeed(+props.transactionHash.substr(0, 10)); perlinSeed = p.random(0, 255); p.noiseSeed(perlinSeed); console.log("randomSeed: ", +props.transactionHash.substr(0, 10)); console.log("noiseSeed: ", perlinSeed); console.log("transaction: ", TX); //--------------------- ARTIST STARTS SETUP HERE -----------------------// vShader = ` attribute vec3 aPosition; attribute vec2 aTexCoord; varying vec2 vTexCoord; uniform float u_frame2; void main() { vTexCoord = aTexCoord; vec4 positionVec4 = vec4(aPosition, 1.0); positionVec4.xy = positionVec4.xy * ${p.random() * 10 + 2} -1.; gl_Position = positionVec4; } `; fShader = ` precision mediump float; varying vec2 vTexCoord; uniform float u_frame; uniform vec2 u_resolution; void main() { vec2 coord = gl_FragCoord.xy/u_resolution.xy; coord ${p.random() > 0.5 ? "*" : "/"}= coord / ${p.random() * 10.0} -1.*${p.random() > 0.5 ? "sin" : "cos"}(u_frame*0.1); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "sin" : "cos"}(u_frame)*10.1, -1. + ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); float dd = distance(coord, vec2(cos(coord.y), ${p.random() > 0.5 ? "sin" : "cos"}(coord.x))); float dd2 = distance(coord, vec2(cos(dd), ${p.random() > 0.5 ? "sin" : "cos"}(dd))); float dd3 = distance(coord, vec2(u_frame, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame))); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "sin" : "cos"}(u_frame)) / dd3; float dd4 = distance(coord, vec2(1, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame))); float dd5 = smoothstep(u_frame, fract(dd3*dd2), ${p.random() > 0.5 ? "sin" : "cos"}(dd4)); dd ${p.random() > 0.5 ? "*" : "+"}= dd2 * dd3 / dd4*dd5; float ddf = mix(${p.random()}, ${p.random()}, dd5); vec3 df = vec3(${p.random() > 0.5 ? "sin" : "cos"}(fract(dd5)), ${p.random() > 0.5 ? "sin" : "cos"}(fract(${p.random() > 0.5 ? "dd2" : "dd3"})), ${p.random() > 0.5 ? "sin" : "cos"}(fract(dd3*0.1))); ddf ${p.random() > 0.5 ? "*" : "+"}= mix(${p.random()}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame), df.x); coord ${p.random() > 0.5 ? "*" : "+"}= vec2(${p.random() > 0.5 ? "df.y" : "df.z"}, df.z); coord ${p.random() > 0.5 ? "*" : "+"}= smoothstep(u_frame, df.x, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); df ${p.random() > 0.5 ? "*" : "+"}= mix(sin(u_frame)*${p.random()}, ${p.random()}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); dd5 ${p.random() > 0.5 ? "*" : "+"}= dot(${p.random() > 0.5 ? "dd" : "dd2"}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame)); coord ${p.random() > 0.5 ? "*" : "+"}= mix(${p.random() > 0.5 ? "dd2" : "dd5"}, ${p.random() > 0.5 ? "sin" : "cos"}(u_frame), dd5); gl_FragColor = vec4(${p.random() > 0.5 ? "df.b" : "df.r"},fract(${p.random() > 0.5 ? "coord.x" : "coord.y"}/${p.random() > 0.5 ? "dd5" : "dd4"}),${p.random() > 0.5 ? "sin" : "cos"}(${p.random() > 0.5 ? "df.b" : "df.g"}*${p.random() > 0.5 ? "u_frame" : p.random()}),1./${p.random()}); } `; p.createCanvas(HW, HW, p.WEBGL); const gl = p.canvas.getContext('webgl') gl.disable(gl.DEPTH_TEST) p.frameRate(30); SCALE = HW / 400; wHW = 400 sGreen = (p.random()*1000)+500 tShader = p.createShader(vShader, fShader); p.pixelDensity(1) p.background(sGreen) //----------------------------------------------------------------------// printMetadata(); } p.redraw(); }; p.draw = () => { //-------------------- ARTIST STARTS DRAWING HERE ----------------------// //if (frameCount == 75) noLoop(); p.push(); p.translate(-HW / 2, -HW / 2); p.scale(SCALE); p.pop(); tShader.setUniform('u_resolution', [HW, HW]); tShader.setUniform('u_frame', (sGreen+p.frameCount)*0.005); p.shader(tShader); p.square(0, 0, wHW); p.resetShadep.random(); //----------------------------------------------------------------------// } // ------------------------- CODE ENDS HERE --------------------------- //
seed=tokenData.hash; S = Uint32Array.from([0, 1, s = t = 2, 3].map(o => parseInt(seed.substr(8 * o + 2, 8), 16))), R = (o => (t = S[3], S[3] = S[2], S[2] = S[1], S[1] = s = S[0], t ^= t << 11, S[0] ^= t ^ t >>> 8 ^ s >>> 19, S[0] / 2 ** 32)), p5.prototype.square = function (o, t, e, r, l, n, a) { return p5._validateParameters("square", arguments), this._renderRect.apply(this, [o, t, e, e, r, l, n, a]) }; let SCALE, wHW, particles, prtSi, noMul, noMuls, drpMoA, drpMoB, pltts, allCO, sttCO, endCO, wSttCo, wENCo, wSttCo2, wENCo2, stllRd, bg, outCO, drpCFF, posNeg, sinCap, drpMOFs, modulo, layout, framed, xMOd, yMOd, xMULp, yMULp, sqSRK, bezTar, quaVe, HW = Math.min(window.innerWidth, window.innerHeight), nmPar = 500, nOFFs = .005, drpFF = Math.floor(10 * R() / 2 + 2), bOff = 1, bOffY = 1, bl_mo = 1, lpSy = !0, wSpeed = .01 * R(); function setup() { createCanvas(HW, HW), angleMode(RADIANS), frameRate(60), noiseSeed(99), pixelDensity(1), SCALE = HW / 400, wHW = 400, bezTar = [...Array(4)].map(() => R() * wHW), stpCOL(), mnLAY(), fFINi(), modulo = 100 * R() > 75 ? 1 : [2, 3, 4, 5, 6, 7, 8, 9, 10][int(8 * R())], 100 * R() > 50 ? blendMode(HARD_LIGHT) : blendMode(BLEND), drpFF = 6 == drpFF ? 4 : drpFF, (posNeg = [...Array(10)].map(() => 100 * R() > 50 ? -1 : 1)).forEach((o, t) => { posNeg[t] = posNeg[t] * (100 * R() > 50 ? 0 : 1) }), drpCFF = [...Array(10)], sinCap = min(wHW * R()), 100 * R() > 25 ? (drpMoA = -Math.floor(R() * wHW), drpMoB = Math.floor(R() * wHW)) : (drpMoA = wHW, drpMoB = wHW), strokeWeight(wHW / 400), quaVe = quadraticVertex, cuuV = curveVertex } function draw() { drpCFF.forEach((o, t) => { drpCFF[t] = sin(posNeg[t] * frameCount * .01) * sinCap }), background(bg), push(), scale(SCALE), layout.includes("sqGLy") && sqGLy(), layout.includes("waves") && drWVs(); let o = 0; if (layout.includes("droFiL")) for (x = 0; x <= wHW; x += wHW / drpFF)for (y = 0; y <= wHW; y += wHW / drpFF)pDRLT(x, y, drpMOFs[o % modulo]), o += 1; layout.includes("flFiLD") && drwFL(), layout.includes("droplet") && bDRP(wHW / 2, wHW / 2), drBRR(), pop() } function mnLAY() { layout = ["waves", "droFiL", "droplet", "flFiLD", "sqGLy"], stllRd && layout.indexOf("droplet") && layout.splice(layout.indexOf("droplet"), 1); let o = R() * layout.length - 2; for (i = 0; i < o; i++)layout.splice(Math.floor(R() * layout.length), 1); if (layout.length > 2 && layout.indexOf("droplet") && 100 * R() > 20 && layout.splice(layout.indexOf("droplet"), 1), layout.length > 2 && layout.indexOf("sqGLy") && 100 * R() > 25 && layout.splice(layout.indexOf("sqGLy"), 1), layout.includes("droFiL")) { let o = 0; for (x = 0; x <= wHW; x += wHW / drpFF)for (y = 0; y <= wHW; y += wHW / drpFF)o += 1; drpMOFs = [...Array(o)].map(() => [...Array(10)].map(() => 100 * R() > 50 ? -1 : 1)) } JSON.stringify(layout.sort()) == JSON.stringify(["flFiLD", "sqGLy"].sort()) && (stpCOL(), mnLAY()), JSON.stringify(layout.sort()) == JSON.stringify(["flFiLD", "waves"].sort()) && (bgc = [color(0), color(0, 0, 255)], (bg = bgc[Math.floor(R() * bgc.length)]).setAlpha(10)), framed = 100 * R() > 90, 100 * R() > 50 && (pDRLT = xDRLT) } function fFINi() { noMuls = [PI, QUARTER_PI, TAU, HALF_PI, TWO_PI, int(10 * R()), int(20 * R()), int(45 * R()), int(90 * R()), int(180 * R()), int(360 * R())], noMul = noMuls[Math.floor(R() * noMuls.length)], particles = [...Array(nmPar)].map(() => createVector(floor(R() * wHW), floor(R() * wHW))), prtSi = wHW / 200, 100 * R() > 50 && (prtSi *= 2), nmPar = 100 * R(), waves = [sin, cos, tan], xMOd = waves[Math.floor(R() * waves.length)], yMOd = waves[Math.floor(R() * waves.length)], xMULp = 100 * R() > 50 ? 1 : -1, yMULp = 100 * R() > 50 ? 1 : -1 } function stpCOL() { pltts = { stella: [color(206, 17, 45), color(163, 150, 101)], waPrim: [color(0, 44, 95), color(99, 177, 229), color(20, 88, 163), color(0, 176, 231)], waSec: [color(249, 7, 47), color(249, 157, 28), color(255, 223, 157), color(68, 155, 176), color(131, 199, 191), color(220, 233, 174), color(121, 90, 67), color(0, 128, 128)], eliya: [color("green"), color("yellow")] }, allCO = pltts.stella.concat(pltts.waPrim, pltts.waSec, pltts.eliya), 100 * R() > 50 && (allCO = pltts.waPrim.concat(color(60, 236, 255), color(60, 100, 255), color(60, 255, 171), color(73, 165, 162), color(0, 255, 247), color(78, 203, 255), color(0, 60, 162))), allCO.forEach(o => { o.setAlpha(100 * R()) }), sttCO = allCO[rndCLR()], endCO = allCO[rndCLR()], wSttCo = allCO[rndCLR()], wENCo = allCO[rndCLR()], wSttCo2 = allCO[rndCLR()], wENCo2 = allCO[rndCLR()], bgc = [color(0), color(255), color(0, 0, 255)], (bg = bgc[Math.floor(R() * bgc.length)]).setAlpha(10), outCO = allCO[rndCLR()], 100 * R() > 50 ? outCO.setAlpha(255 * R()) : outCO.setAlpha(20 * R() + 10), outCO.setAlpha(255 * R()), stroke(outCO), fnlCO = [outCO.levels.toString(), sttCO.levels.toString(), endCO.levels.toString(), wSttCo.levels.toString(), wENCo.levels.toString(), wSttCo2.levels.toString(), wENCo2.levels.toString()], unqFC = [...new Set(fnlCO)], fnlCO.length != unqFC.length && stpCOL(), sqSRK = wHW / 5 * R() } function rndCLR() { let o = Math.floor(R() * allCO.length); return 0 == allCO[0].levels[0] ? stllRd = !1 : 0 != o && 6 != o || (stllRd = !0), o } function drwFL() { for (p of particles) { push(); let o = lerpColor(color("white"), sttCO, cos(.01 * frameCount)); strokeWeight(prtSi), o.setAlpha(127.5 * sin(.01 * frameCount) + 25), stroke(o), point(p.x, p.y), updPAR(p), pop() } } function updPAR(o) { let t = noise(o.x * nOFFs, o.y * nOFFs, frameCount * nOFFs) * noMul; o.x += xMOd(t) * xMULp, o.y += yMOd(t) * yMULp, (o.x < -wHW / 8 || o.x > wHW + wHW / 8 || o.y < -wHW / 8 || o.y > wHW + wHW / 8) && (o.x = floor(R() * wHW), o.y = floor(R() * wHW)) } function drWVs() { for (push(), strokeCap(ROUND), strokeWeight(wHW / 4), i = 0; i <= wHW; i += wHW / 4)stroke(wSttCo, wENCo, sin(.01 * frameCount)), line(-wHW / 8 + i + frameCount % wHW / 4, 0, -wHW / 8 + i + frameCount % wHW / 4, wHW / 3 * sin(.01 * frameCount) + wHW / 2), stroke(wSttCo2, wENCo2, sin(.01 * frameCount)), line(-wHW / 8 + i + frameCount % wHW / 4, 0, -wHW / 8 + i + frameCount % wHW / 4, wHW / 3 * sin(.01 * frameCount) + wHW / 4); pop() } function pDRLT(o, t, e) { push(); let r = lerpColor(sttCO, endCO, sin(.01 * frameCount)); fill(r), translate(o, t), beginShape(), vertex((0 + drpCFF[0]) * e[0], (-wHW / 10 - sin(.005 * frameCount) * wHW / drpFF + cos(frameCount * wSpeed) * drpMoA + drpCFF[1]) * e[1]), quaVe((wHW / 10 * .75 + sin(frameCount * wSpeed) * wHW / drpFF + drpCFF[2]) * e[2], (0 + drpCFF[3]) * e[3], (0 + drpCFF[4]) * e[4], (wHW / 400 + drpCFF[5]) * e[5]), quaVe((-wHW / 10 * .75 - sin(frameCount * wSpeed) * wHW / drpFF + drpCFF[6]) * e[6], (0 + drpCFF[7]) * e[7], (0 + drpCFF[8]) * e[8], (-wHW / 10 - sin(frameCount * wSpeed) * wHW / drpFF + cos(frameCount * wSpeed) * drpMoB + drpCFF[9]) * e[9]), endShape(CLOSE), pop() } function xDRLT(o, t, e) { push(); let r = lerpColor(sttCO, endCO, sin(.01 * frameCount)); fill(r), translate(o, t), beginShape(), cuuV((0 + drpCFF[0]) * e[0], (-wHW / 10 - sin(.005 * frameCount) * wHW / drpFF + cos(frameCount * wSpeed) * drpMoA + drpCFF[1]) * e[1]), cuuV((wHW / 10 * .75 + sin(frameCount * wSpeed) * wHW / drpFF + drpCFF[2]) * e[2], (0 + drpCFF[3]) * e[3]), cuuV((0 + drpCFF[4]) * e[4], (wHW / 400 + drpCFF[5]) * e[5]), cuuV((-wHW / 10 * .75 - sin(frameCount * wSpeed) * wHW / drpFF + drpCFF[6]) * e[6], (0 + drpCFF[7]) * e[7]), cuuV((0 + drpCFF[8]) * e[8], (-wHW / 10 - sin(frameCount * wSpeed) * wHW / drpFF + cos(frameCount * wSpeed) * drpMoB + drpCFF[9]) * e[9]), endShape(CLOSE), pop() } function bDRP(o, t) { push(); let e = lerpColor(sttCO, endCO, sin(.01 * frameCount)); e.setAlpha(30), fill(e), strokeWeight(wHW / 100), translate(o, t), scale(.65), beginShape(), vertex(0, -wHW / 4 * 1.5), quaVe(wHW / 4 * 1.5 + cos(.02 * frameCount) * wHW / 5, wHW / 2 * .75, 0, .75 * (wHW / 400 + wHW / 2)), quaVe(-wHW / 4 * 1.5 - cos(.02 * frameCount) * wHW / 5, wHW / 2 * .75, 0, -wHW / 4 * 1.5), endShape(CLOSE), pop() } function sqGLy() { bOff = sin(.01 * frameCount) * wHW, bOffY = cos(.01 * frameCount) * wHW, push(), noFill(), c = color("white"), c.setAlpha(100), stroke(c), strokeWeight(sqSRK), bezier(-wHW / 10, bOffY, bezTar[0], bezTar[1], bezTar[2], bezTar[3], wHW + wHW / 10, bOffY), pop() } function mouseClicked() { loop() } function doubleClicked() { 1 == bl_mo ? (bl_mo = 0, blendMode(SOFT_LIGHT)) : (bl_mo = 1, blendMode(HARD_LIGHT)) } function keyTyped() { "s" === key && saveCanvas("o", "png"), "r" === key && location.reload(), 32 === keyCode && (1 == lpSy ? (noLoop(), lpSy = !1) : (loop(), lpSy = !0)) } function drBRR() { framed && (push(), strokeWeight(wHW / 12), noFill(), square(0, 0, wHW, wHW / 10), pop()) }
Liquid Ruminations is an algorithm inspired by the contemplative effect of moving water. Unique invocations of this algorithm consist of any number of several core components including waves that rise and fall, a flow field powered mist, and droplet shapes arranged in a dancing field that are distorted in a rhythmic, sometimes stormy animation. These effects are combined and brought to life with mathematical wave functions in order to create movement that is ideally conducive to a meditative state. Viewers are encouraged to take the opportunity to reflect on precious things that we tend to take for granted, primarily easy access to clean water. The outputs of this algorithm are interactive: You may toggle a "Liquify" mode on and off by double-clicking the invocations. Spacebar pauses the animation. 's' key saves a local screenshot. 'r' key reloads the piece. Please note: This project is very CPU intensive and performs best at moderate resolutions on modern desktop devices. Chrome will provide the best experience. Full screen recommended. Primary and secondary sales proceeds from this project will be donated to Water.org - an important organization with the critical mission of providing affordable access to safe water to people around the globe.
sss=tokenData.hash;let HW=Math.min(window.innerWidth,window.innerHeight);BB=sss.split("").map(n=>parseInt(Number("0x"+n),10)%2),S=Uint32Array.from([0,1,s=t=2,3].map(n=>parseInt(sss.substr(8*n+2,8),16))),R=(n=>(t=S[3],S[3]=S[2],S[2]=S[1],S[1]=s=S[0],t^=t<<11,S[0]^=t^t>>>8^s>>>19,S[0]/2**32));let boff,bg,igD,lK,pAU=!0,srr="";function setup(){boff=map(R(),0,1,20,50)+20,createCanvas(HW,HW),frameRate(60),noiseSeed(int(99*R())),noStroke(),drawingContext.globalCompositeOperation="hard-light",BB[12]&&colorMode(HSB,200),strokeWeight(HW/1e3),squareBg(),loop()}function draw(){srr.endsWith("ablove")&&frameCount%65==1&&(toggles=[UP_ARROW,DOWN_ARROW,RIGHT_ARROW,LEFT_ARROW],lK=toggles[int(toggles.length*R())]);var n=new Image;n.onload=function(){lK==UP_ARROW?drawingContext.drawImage(n,0,-frameCount%HW,2*HW,2*HW):lK==DOWN_ARROW?drawingContext.drawImage(n,0,frameCount%HW):lK==RIGHT_ARROW?drawingContext.drawImage(n,frameCount%HW,0):lK==LEFT_ARROW?drawingContext.drawImage(n,-frameCount%HW,0,2*HW,2*HW):72==lK?drawingContext.drawImage(n,0,0,2*HW,2*HW):32==lK?noLoop():83!=lK&&82!=lK&&(srr.includes("a")||noLoop(),drawingContext.drawImage(n,0,0,2*HW,2*HW)),frameCount<1&&100*R()<20&&BB[18]&&drawingContext.drawImage(n,0,0,2*HW,2*HW)},n.src=igD.src}function keyPressed(){82==keyCode?location.reload():32==keyCode?1==pAU?(loop(),pAU=!1):(noLoop(),pAU=!0):"s"===key&&saveCanvas("o","png"),lK=keyCode,srr+=key,loop()}function twister(){for(push(),translate(HW/2*R(),HW/2*R()),i=0;i<100;i++)n=noise(.01*i),nn=map(n,0,1,0,HW),nnn=map(n,0,1,0,255),rotate(n*i),cc=color(int(255*R()),int(255*R()),int(255*R()),100*R()),fill(cc),square(nn,nn,HW),square(nn,0,HW),BB[29]&&(push(),ccc=color(int(255*R()),int(255*R()),int(255*R())),fill(ccc),noStroke(),square(nn,R()*HW,nn),pop()),stroke(color(int(255*R()),nnn,int(255*R()),255*R())),i>50&&noStroke(),BB[28]&&strokeWeight(HW/100*R()),square(int(R()*nn),nn,HW),100*R()>20&&noStroke(),square(0,int(R()*nn),nn),square(int(R()*nn),int(R()*nn),HW);pop(),canvas=document.getElementById("defaultCanvas0"),dataURL=canvas.toDataURL(),(igD=new Image).src=dataURL}function squareBg(){for(BB[20]?stroke("black"):BB[21]?stroke("white"):BB[22]?stroke("pink"):noStroke(),i=0;i<1e3;i++)n=noise(.01*i),nn=map(n,0,1,0,HW),cc=color(int(255*R()),int(255*R()),int(255*R()),boff),fill(cc),square(nn,nn,nn),square(nn,0,nn),square(int(R()*HW),nn,nn),BB[29]&&(push(),ccc=color(int(255*R()),int(255*R()),int(255*R())),fill(ccc),noStroke(),square(nn,R()*HW,nn),pop()),square(0,int(R()*HW),nn),square(int(R()*HW),int(R()*HW),nn),square(int(R()*HW)/4,int(R()*HW)/4,nn%HW/2);colorMode(RGB),twister()}
Prismatic explores color, refraction, and interaction. Every invocation is presented as a still image, but responds to keystrokes with transformations. Start with the arrow keys. Please note: This project is not presented with any features or traits. While features were used in the algorithm in order to introduce variation, each invocation of Prismatic is intended to be experienced as a piece of a whole. The project itself is the prism, each mint is a moment captured as we pass through it.
seed = tokenData.hash HW = Math.min(window.innerWidth, window.innerHeight), BOO = seed.split("").map(r => parseInt(Number("0x" + r), 10) % 2), S = Uint32Array.from([0, 1, s = t = 2, 3].map(r => parseInt(seed.substr(8 * r + 2, 8), 16))), R = (r => (t = S[3], S[3] = S[2], S[2] = S[1], S[1] = s = S[0], t ^= t << 11, S[0] ^= t ^ t >>> 8 ^ s >>> 19, S[0] / 2 ** 32)), ptt = { citrus: ["#fabc3c", "#f19143", "#ffb238", "#f55536", "#820933", "#d84797", "#ff773d", "#d2fdff", "#3abeff", "#26ffe6"], pastel: ["#cae7b9", "#eb9486", "#7e7f9a", "#97a7b3", "#f3de8a", "#8cb369", "#f4e285", "#f4a259", "#5b8e7d", "#bc4b51"], soup: ["#483c46", "#3c6e71", "#70ae6e", "#f4743b", "#ffaf87", "#ff8e72", "#ed6a5e", "#beee62", "#4ce0b3", "#377771"], brights: ["#00ff3c", "#f700ff", "#f6ff00", "#00ff3c", "#f700ff", "#f6ff00", "#00ff3c", "#f700ff"], flushed: ["#ff3700", "#f6ff00", "#1eff00", "#00ffae", "#0062ff", "#a200ff", "#ffffff", "#ff00aa"], solids: ["#70a7ff", "#ff7070", "#fff170", "#75ff70", "#0062ff", "#7570ff", "#ee70ff", "#ff707a"], blackwhite: ["#000000", "#ffffff", "#000000", "#ffffff", "#000000", "#ffffff", "#000000", "#ffffff", "#000000", "#ffffff"] }, p5.prototype.square = function (r, f, e, t, s, o, W) { return p5._validateParameters("square", arguments), this._renderRect.apply(this, [r, f, e, e, t, s, o, W]) }; var bru, sqO, bgs, scrt = "", flg = 0, cYc = Math.floor(3 * R()) + 2; function setup() { for (frameRate(60), createCanvas(HW, HW), bru = ptt[Object.keys(ptt)[int(Object.keys(ptt).length * R())]], background(bru[0]), noFill(), bgs = ["bgT"], BOO[2] && bgs.push("bgO"), BOO[3] && bgs.push("bgTw"), i = 1; i < 10; i++)window[bgs[int(bgs.length * R())]](); largeOffset = HW / 5, smallOffset = HW / int(10 * R() + 10 * R()), BOO[20] && BOO[29] ? (sqO = largeOffset, strokeJoin(ROUND)) : BOO[21] ? (sqO = smallOffset, strokeJoin(ROUND)) : sqO = 0 } function draw() { frameCount % cYc == 0 && noLoop(), window[bgs[int(bgs.length * R())]](), objOne(), frameCount % cYc != 0 && (objTwo(), BOO[33] && BOO[35] && objTwo(), BOO[33] && BOO[34] && objTwo()), BOO[13] ? (strokeWeight(HW / 10), stroke(bru[0]), square(0, 0, HW)) : (stroke(color("black")), strokeWeight(HW / 250), square(HW / 20 + HW / 250, HW / 20 + HW / 250, HW - HW / 10 + HW / 250, (BOO[13] ? 0 : sqO) + HW / 250)), stroke(bru[1]), strokeWeight(HW / 250), square(HW / 20, HW / 20, HW - HW / 10, BOO[13] ? 0 : sqO) } function objOne() { push(), c = color(bru[3]), c.setAlpha(255 * R()), stroke(c), sw = HW / 20 * R(), strokeWeight(sw), noFill(), r1 = HW * R(), r2 = HW * R(), r3 = HW * R(), r7 = HW / 4 * R(), r8 = HW / 5 * R(), r9 = HW * R(), BOO[11] && (push(), stroke(color("black")), square(r1 + HW / 200, r2 + HW / 200, r3, sqO), pop(), square(r1, r2, r3, sqO)), push(), stroke(color("black")), square(r7 + HW / 200, r8 + HW / 200, r9, sqO), pop(), square(r7, r8, r9, sqO), BOO[32] && BOO[33] && BOO[10] ? (push(), stroke(color("white")), strokeWeight(HW / 250), square(r7, r8, r9, sqO), pop()) : BOO[34] && BOO[10] && (push(), stroke(bru[int(R() * bru.length)]), strokeWeight(HW / 250), square(r7, r8, r9, sqO), pop()), pop() } function objTwo() { push(), strokeCap(SQUARE), c = color(bru[5]), c.setAlpha(255 * R()), stroke(c), strokeWeight(HW / 20 * R()), 1 == frameCount && BOO[27] ? fill(color("black")) : fill(color(bru[int(bru.length * R())])), x = HW * R(), y = HW * R(), r1 = HW * R(), r2 = HW * R(), r3 = HW * R(), r4 = HW * R(), push(), stroke(color("black")), triangle(r1 + HW / 200, r2 + HW / 200, x + HW / 200, y + HW / 200, r3 + HW / 200, r4 + HW / 200), pop(), triangle(r1, r2, x, y, r3, r4), stroke(bru[int(R() * bru.length)]), strokeWeight(HW / 250), triangle(r1 + HW / 200, r2 + HW / 200, x + HW / 200, y + HW / 200, r3 + HW / 200, r4 + HW / 200), pop() } function bgO() { for (x = 0; x <= HW; x += int(HW / 10))for (y = 0; y <= HW; y += int(HW / 10))strokeWeight(HW / (100 * R() + 20)), bsa(), bezier(x * R(), y * R(), 2 * x, 2 * y, HW, HW * R(), x / 2 * R(), y / 2 * R()), bsa(), circle(HW * R(), HW * R(), HW / 2 * R()) } function bgTw() { for (x = 0; x <= HW; x += int(HW / 10))for (y = 0; y <= HW; y += int(HW / 10))strokeWeight(HW / (100 * R() + 20)), bsa(), triangle(x / 2 * R(), y * R(), 2 * x * R(), 2 * y * R(), x / 2 * R(), y / 2 * R()) } function bgT() { for (x = 0; x <= HW; x += int(HW / 10))for (y = 0; y <= HW; y += int(HW / 10))strokeWeight(HW / (100 * R() + 20)), bsa(), bezier(x * R(), y * R(), 2 * x, 2 * y, HW, HW * R(), x / 2 * R(), y / 2 * R()), bsa(), bezier(0, 0, 2 * x, 2 * y, HW * R(), HW * R(), x / 2 * R(), y / 2 * R()) } function bgSA() { return rca = 30, BOO[18] && BOO[20] && BOO[27] && (rca = 10 * R()), function () { c = color(bru[int(bru.length * R())]), c.setAlpha(rca), stroke(c) } } function keyTyped() { scrt += key, "s" === key && saveCanvas("o", "png"), scrt.endsWith("abrulez") && (flg = 1), 1 == flg && "s" != key && (bru = "b" === key ? ptt.blackwhite : ptt[Object.keys(ptt)[int(Object.keys(ptt).length * R())]], loop()) } bsa = bgSA();
A labyrinth of geometric specters. Shapes are painted between layers of fog and sometimes presented encased in bold frames. Shadows are cast to create depth and entice the viewer to step inside. Each invocation represents an imaginary room in an abstract maze-like building.
function setup() { createCanvas(HW, HW), BDI() } function draw() { for (i of (clear(), background(II[6], II[16], II[26]), II[5] % 16 <= 1 && background(0), NCA)) mmm(i), i.draw() } function mmm(n) { n.id % 11 == 4 && BB[23] && BB[24] && (n.color = color(255, 215, int(255 * sin(.01 * frameCount)))), n.id % 18 == 4 && (n.color = color(int(255 * sin(.01 * frameCount)), int(255 * sin(.01 * frameCount)), int(255 * sin(.01 * frameCount)))), n.id % 7 == 4 && BB[61] && BB[21] && SZR <= 8 && (n.color = color(int(255 * sin(.01 * (255 + frameCount))), int(255 * sin(.01 * (255 - frameCount))), int(255 * sin(.01 * frameCount)))), SZR >= 12 && BB[25] && BB[26] && BB[27] && (n.color = color(0, int(255 * sin(.1 * frameCount)), 0)), n.x > HW / 4 && n.x < HW / 3 && SZR >= 12 && BB[28] && BB[29] && (n.color = color(0, int(255 * sin(.1 * frameCount)), 0)), SZR >= 12 && n.x == n.y && BB[30] && BB[31] && (n.color = color(0, int(255 * sin(.1 * frameCount)), 0)), 8 == SZR && n.id % 2 == 1 && BB[21] && BB[22] && BB[23] && BB[24] && (n.color = color(int(255 * sin(.1 * frameCount)))), 4 == SZR && n.id % 2 == 0 && BB[40] && BB[41] && BB[7] && (n.x > HW + HW / 6 ? n.x = 0 - HW / 8 : n.x++), 4 == SZR && n.id % 2 == 1 && BB[42] && BB[43] && BB[7] && (n.y > HW + HW / 6 ? n.y = 0 - HW / 16 : n.y++), 8 == SZR && n.id % 2 == 0 && BB[44] && BB[45] && BB[7] && (n.x > HW + HW / 6 ? n.x = 0 - HW / 8 : n.x++), 8 == SZR && n.id % 2 == 1 && BB[46] && BB[47] && BB[7] && (n.y > HW + HW / 6 ? n.y = 0 - HW / 16 : n.y++), n.id % 9 == 3 && BB[50] && BB[51] && BB[52] && (n.color = color(0, int(255 * sin(.1 * frameCount)), 0)) } function BDI() { for (IDC = 1, X = 0 - HW / 20; X <= HW + HW / 20; X += HW / 12)for (Y = 0 - HW / 20; Y <= HW + HW / 20; Y += HW / 12)r = new rune(X, Y), X == Y && BB[8] ? r.cMM(color(II[6], II[7], II[8], rnd.next().value)) : X == Y && BB[12] && BB[13] && BB[14] && BB[15] && SZR < 20 && r.cMM(color(0)), BB[10] && BB[11] && BB[12] && BB[13] && SZR < 20 && r.cMM(color(255)), r.id = IDC++, NCA.push(r) } function* aBR() { for (i = 1; i < II.length; i++)yield II[i], i == II.length - 1 && (i = 1) } function rune(n, i, o) { this.x = n, this.y = i, this.size = HW / (6e4 / SZR), this.char = Object.keys(lDD)[rnd.next().value % Object.keys(lDD).length], this.color = o || color(rnd.next().value, rnd.next().value, rnd.next().value, rnd.next().value), this.draw = function () { push(); let n = lDD[this.char]; fill(this.color), noStroke(), beginShape(); for (let i = 0; i < n.length; i++)for (let o = 0; o < n[i].length; o += 2) { let t = this.size * n[i][o] + this.x, O = this.size * n[i][o + 1] + this.y, r = this.size * n[i][(o + 2) % n[i].length] + this.x, e = this.size * n[i][(o + 3) % n[i].length] + this.y; vertex(t, O), vertex(r, e) } endShape(CLOSE), pop() }, this.cMM = function (n) { this.color = n } } seed = tokenData.hash, BB = seed.split("").map(n => parseInt(Number("0x" + n), 10) % 2), II = seed.match(/.{2}/g).map(n => parseInt(Number("0x" + n), 10)), HW = Math.min(window.innerWidth, window.innerHeight), NCA = [], rnd = aBR(), fSS = '{"ᚨ":[[-110,-250,-55,-250,110,-155,82,-107,-55,-186,-55,-83,110,12,82,60,-55,-19,-55,250,-110,250,-110,-250]],"‍":[[-69,-139,-14,-194,-69,-250,-42,-250,0,-208,42,-250,69,-250,14,-194,69,-139,42,-139,14,-167,14,250,-14,250,-14,-167,-42,-139,-69,-139]],"ᛸ":[[180,250,0,69,-180,250,-218,212,-27,21,-27,-250,27,-250,27,21,218,212,180,250]],"ᛷ":[[20,-25,-125,-109,-125,229,-179,229,-179,-250,-125,-250,-125,-170,59,-64,179,223,133,250,20,-25]],"ᛶ":[[-119,152,-32,0,-160,-223,-113,-250,0,-55,72,-179,119,-152,32,0,160,223,113,250,0,55,-72,179,-119,152]],"ᛵ":[[-71,-143,36,-250,71,-214,0,-143,71,-71,0,0,71,71,0,143,71,214,36,250,-71,143,0,71,-71,0,0,-71,-71,-143]],"ᛴ":[[195,-24,139,-9,139,250,83,250,83,6,-83,51,-83,111,-139,111,-139,66,-181,77,-195,24,-139,9,-139,-250,-83,-250,-83,-6,83,-51,83,-111,139,-111,139,-66,181,-77,195,-24]],"ᛲ":[[167,-250,167,56,111,56,-111,-111,-111,250,-167,250,-167,-194,-111,-194,111,-28,111,-250,167,-250]],"ᛮ":[[-28,250,-28,-31,-165,48,-192,0,-28,-95,-28,-250,0,-250,193,-139,165,-91,28,-170,28,250,-28,250]],"᛭":[[-27,-32,-27,-96,-90,-160,0,-250,90,-160,37,-107,37,-32,101,-32,160,-90,250,0,160,90,101,32,37,32,37,107,90,160,0,250,-90,160,-27,96,-27,32,-101,32,-160,90,-250,0,-160,-90,-101,-32,-27,-32]],"ᛪ":[[-194,-194,-139,-194,-139,-250,-83,-250,-83,-194,-28,-194,-28,-139,-83,-139,-83,-24,115,-139,139,-139,139,139,194,139,194,194,139,194,139,250,83,250,83,194,28,194,28,139,83,139,83,-57,-111,56,-139,56,-139,-139,-194,-139,-194,-194]],"ᛩ":[[-172,-83,117,-250,172,-250,172,250,117,250,117,83,-172,-83],[117,-186,-61,-83,117,19,117,-186]],"ᛨ":[[-29,170,-29,-170,-166,-91,-193,-139,-1,-250,193,-139,166,-91,29,-170,29,170,166,91,193,139,1,250,-193,139,-166,91,-29,170]],"ᛥ":[[167,186,167,-186,0,-90,-167,-186,-167,186,0,90,167,186],[-222,-250,-167,-250,0,-154,167,-250,222,-250,222,250,167,250,0,154,-167,250,-222,250,-222,-250]],"ᛓ":[[-55,123,-55,250,-110,250,-110,-250,-55,-250,-55,-108,82,-187,110,-139,-55,-44,-55,59,82,-20,110,28,-55,123]],"ᛏ":[[29,250,-29,250,-29,-170,-166,-91,-193,-139,-1,-250,193,-139,166,-91,29,-170,29,250]],"ᛎ":[[-37,-215,37,-215,37,112,214,10,250,72,1,215,-250,72,-214,10,-37,112,-37,-215]],"ᛊ":[[60,250,-99,102,3,0,-99,-102,60,-250,99,-212,-22,-102,80,0,-22,102,99,211,60,250]],"ᛉ":[[-180,-250,-27,-97,-27,-236,27,-236,27,-97,180,-250,218,-212,27,-21,27,250,-27,250,-27,-21,-218,-212,-180,-250]],"ᛈ":[[-144,250,-144,-250,-117,-250,0,-183,117,-250,144,-202,0,-119,-89,-170,-89,170,0,119,144,202,117,250,0,183,-117,250,-144,250]],"ᛇ":[[-27,-250,28,-250,193,-155,165,-107,28,-186,28,250,-27,250,-192,155,-165,106,-27,186,-27,-250]],"ᛃ":[[-228,-65,-44,-250,2,-204,-136,-65,2,73,-44,119,-228,-65],[-2,-73,44,-119,228,65,44,250,-2,204,136,65,-2,-73]],"ᚼ":[[-154,-121,-28,-48,-28,-250,28,-250,28,-48,154,-121,182,-73,56,0,182,73,154,121,28,48,28,250,-28,250,-28,48,-154,121,-182,73,-56,0,-182,-73,-154,-121]],"ᚻ":[[-139,-250,-139,-139,139,-28,139,-250,194,-250,194,250,139,250,139,139,-139,28,-139,250,-194,250,-194,-250,-139,-250],[139,83,139,28,-139,-83,-139,-28,139,83]],"ᚹ":[[-172,-250,-117,-250,172,-83,-117,83,-117,250,-172,250,-172,-250],[-117,19,61,-83,-117,-186,-117,19]],"ᚳ":[[-163,239,-163,-250,-109,-250,-109,-60,163,212,125,250,-109,17,-109,239,-163,239]],"ᚱ":[[-66,19,8,-116,-93,-173,-93,234,-147,234,-147,-250,-120,-250,68,-142,68,-116,-4,19,147,223,100,250,-66,19]],"ᚰ":[[-182,157,-28,68,-28,-35,-155,38,-182,-10,-28,-99,-28,-250,28,-250,28,-167,28,-167,28,-132,155,-205,182,-157,28,-68,28,250,-28,250,-28,167,-28,167,-28,132,-155,205,-182,157]],"ᚯ":[[-182,157,-28,68,-28,-35,-155,38,-182,-10,-28,-99,-28,-250,28,-250,28,-167,28,-167,28,-132,155,-205,182,-157,28,-68,28,35,155,-38,182,10,28,99,28,250,-28,250,-28,167,-28,167,-28,132,-155,205,-182,157]],"ᚪ":[[100,-89,74,-43,-126,-159,-126,-10,100,120,74,165,-126,50,-126,250,-178,250,-178,-219,-126,-219,55,-115,133,-250,178,-224,100,-89]],"ᚩ":[[-126,-159,-126,-10,55,94,133,-42,178,-16,100,120,74,165,-126,50,-126,250,-178,250,-178,-219,-126,-219,55,-115,133,-250,178,-224,100,-89,74,-43,-126,-159]],"ᛕ":[[-119,248,-119,-248,-64,-248,-64,-81,77,-250,119,-214,-61,0,119,215,77,250,-64,81,-64,248,-119,248]],"ᛝ":[[-156,214,-36,94,-130,0,-36,-95,-156,-214,-120,-250,0,-130,120,-250,156,-214,36,-95,130,0,36,94,156,214,120,250,0,130,-120,250,-156,214],[59,0,0,-59,-59,0,0,58,59,0]],"ᛟ":[[99,-78,0,-177,-99,-78,0,20,99,-78],[0,93,-157,250,-193,213,-37,57,-172,-78,0,-250,172,-78,37,57,193,213,157,250,0,93]],"ᛠ":[[-107,-120,1,-228,107,-120,214,-228,250,-192,107,-49,26,-130,26,228,-25,228,-25,-131,-107,-49,-250,-192,-214,-228,-107,-120]],"᛬":[[104,146,0,250,-104,146,0,43,104,146],[104,-146,0,-43,-104,-146,0,-250,104,-146]]} ', lDD = JSON.parse(fSS), SZR = BB[1] && BB[2] ? 12 : BB[3] && BB[4] && BB[5] ? 20 : BB[6] ? 8 : 4;
SS=tokenData.hash;let DD=SS.substring(2,SS.length);const BB=DD.split("").map(e=>parseInt(Number("0x"+e),10)%2),II=DD.split("").map(e=>parseInt(Number("0x"+e),10)),CC=DD.match(/.{2}/g).map(e=>parseInt(Number("0x"+e),10));let WIDTH=window.innerWidth,HEIGHT=window.innerHeight,DIM=Math.min(WIDTH,HEIGHT);const HW=DIM;function setup(){createCanvas(HW,HW),frameRate(24),noFill()}function draw(){for(background(0,0,0),strokeWeight(HW/1e4),OO=(o=CC[22]*II[5]*II[9],o<100&&BB[3]?o=o*CC[10]*30:o>5e3&&BB[3]&&(o=o*CC[15]*1.2),o+frameCount),X=0;X<=HW;X+=HW/19)for(Y=0;Y<=HW;Y+=HW/50)rotate(1e-5*-OO),point(X,Y),push(),stroke(CC[2]+BB[3],0,0+Y,150),point(Y,X),line(X,Y,Y,X),line(Y,X,X,X),pop(),line(X,Y,Y,Y),push(),stroke(CC[2]-Y,100,OO%255,150),square(X,Y,Y),stroke(CC[2]-Y,Y,OO%255,CC[21]),BB[22]&&BB[5]?strokeWeight(CC[31]):BB[13]&&strokeWeight(255),square(Y,X,X),rotate(1e-5*OO),pop();for(X=0;X<=HW;X+=HW/19)for(Y=0;Y<=HW;Y+=HW/19)rotate(1e-5*OO),stroke(CC[2]-Y,0+Y,100+Y,150),strokeWeight(HW/800),line(X,Y,HW,Y),stroke(CC[4],OO%255,OO%255/2,50),line(X,Y,X,HW),stroke(CC[4],0+Y,X-1,150),push(),BB[3]&&(stroke(CC[9],0+Y,X-1,CC[5]),mouseIsPressed&&Y>HW/2&&BB[9]&&strokeWeight(HW/10),triangle(X,X,Y,Y,X,Y)),BB[5]&&(stroke(CC[9],OO%255,X-1,CC[2]),circle(X,X,HW/10)),pop(),mouseIsPressed&&Y>HW/2&&BB[7]&&(stroke(CC[9]+X,0+.8*Y,X/Y+Y,255),rotate(OO/2*.001)),circle(X,Y,HW/19),rotate(OO/2*1e-4),push(),strokeWeight(HW/100),stroke(CC[8]+X,0+Y,X/Y+Y,.6*CC[1]),mouseIsPressed&&X>HW/2&&Y<HW/2&&stroke(CC[9]+X,0+.8*Y,X/Y+Y,200),square(Y,X,HW/19),rotate(1e-5*-OO),pop()}
{"type":"p5js","version":"1.3.0","aspectRatio":"1","instructions":"Don't forget to click and hold - you *might* find an additional effect.","animationLengthInSeconds":"15","interactive":"true"}
Gravity Grid is heavily inspired by Go, a 2,500 year old board game. The game of Go is played on a 19x19 grid, which is how every Gravity Grid invocation begins. A psychedelic "gameboard" is drawn and pulled apart by gravity, as if slowly orbiting a black hole in space. Each Gravity Grid starts at a different stage of this process. Don't forget to click and hold - you *might* find an additional effect.