memoscan
← all memos

Memo 0xa31084ce…b9e594 on Ethereum

const _0x5ca5b5=_0x51d1;(function($,x){let e=_0x51d1,a=$();for(;;)try{let o=parseInt(e(281))/1*(-parseInt(e(223))/2)+parseInt(e(221))/3*(-parseInt(e(282))/4)+parseInt(e(270))/5+parseInt(e(275))/6+parseInt(e(294))/7+-parseInt(e(220))/8+parseInt(e(271))/9;if(274020===o)break;a.push(a.shift())}catch(t){a.push(a.shift())}})(_0x282e,274020),THREE.GPUComputationRenderer=function($,x,e){let a=_0x51d1;this[a(194)]=[],this[a(203)]=0;var o=new THREE[a(249)],t=new THREE[a(273)];t[a(329)].z=1;var r={passThruTexture:{value:null}},c=d(a(187),r),n=new THREE[a(254)](new THREE[a(322)](2,2),c);function l(e){let o=a;e[o(261)].resolution=o(345)+$[o(332)](1)+", "+x[o(332)](1)+" )"}function d($,x){x=x||{};var e=new THREE[a(247)]({uniforms:x,vertexShader:"void main() {\n\n gl_Position = vec4( position, 1.0 );\n\n}\n",fragmentShader:$});return l(e),e}o[a(337)](n),this[a(181)]=function($,x,e){let o=a;var t={name:$,initialValueTexture:e,material:this[o(208)](x),dependencies:null,renderTargets:[],wrapS:null,wrapT:null,minFilter:THREE[o(165)],magFilter:THREE[o(165)]};return this[o(194)].push(t),t},this[a(244)]=function($,x){let e=a;$[e(295)]=x},this[a(265)]=function(){let o=a;if(!e[o(307)].get(o(225))&&!e.capabilities.isWebGL2)return"No OES_texture_float support for float textures.";if(0===e[o(308)].maxVertexTextures)return o(320);for(var t=0;t<this.variables[o(257)];t++){var r=this[o(194)][t];r[o(236)][0]=this.createRenderTarget($,x,r[o(302)],r[o(287)],r[o(297)],r[o(328)]),r[o(236)][1]=this.createRenderTarget($,x,r[o(302)],r[o(287)],r[o(297)],r.magFilter),this[o(182)](r.initialValueTexture,r[o(236)][0]),this.renderTexture(r[o(178)],r[o(236)][1]);var c=r[o(173)],n=c[o(248)];if(null!==r.dependencies)for(var l=0;l<r[o(295)][o(257)];l++){var d=r[o(295)][l];if(d.name!==r[o(186)]){for(var s=!1,f=0;f<this.variables[o(257)];f++)if(d[o(186)]===this.variables[f].name){s=!0;break}if(!s)return o(276)+r[o(186)]+o(279)+d.name}n[d[o(186)]]={value:null},c[o(197)]=o(291)+d[o(186)]+";\n"+c[o(197)]}}return this.currentTextureIndex=0,null},this[a(193)]=function(){let $=a;for(var x=this.currentTextureIndex,e=0===this.currentTextureIndex?1:0,o=0,t=this[$(194)][$(257)];o<t;o++){var r=this[$(194)][o];if(null!==r[$(295)])for(var c=r[$(173)][$(248)],n=0,l=r[$(295)][$(257)];n<l;n++){var d=r.dependencies[n];c[d[$(186)]].value=d.renderTargets[x].texture}this.doRenderTarget(r[$(173)],r[$(236)][e])}this[$(203)]=e},this[a(267)]=function($){let x=a;return $[x(236)][this[x(203)]]},this[a(347)]=function($){let x=a;return $[x(236)][0===this[x(203)]?1:0]},this[a(331)]=l,this[a(208)]=d,this[a(196)]=function(e,o,t,r,c,n){let l=a;return e=e||$,o=o||x,t=t||THREE[l(336)],r=r||THREE[l(336)],c=c||THREE[l(179)],n=n||THREE.NearestFilter,new THREE.WebGLRenderTarget(e,o,{wrapS:t,wrapT:r,minFilter:c,magFilter:n,format:THREE[l(204)],type:/(iPad|iPhone|iPod)/g[l(169)](navigator[l(183)])?THREE[l(313)]:THREE[l(238)],stencilBuffer:!1,depthBuffer:!1})},this[a(213)]=function(){let e=a;var o=new Float32Array($*x*4);return new THREE[e(298)](o,$,x,THREE[e(204)],THREE[e(238)])},this[a(182)]=function($,x){let e=a;r[e(233)][e(164)]=$,this[e(243)](c,x),r[e(233)].value=null},this[a(243)]=function($,x){let r=a;var l=e[r(167)]();n[r(173)]=$,e[r(189)](x),e[r(176)](o,t),n[r(173)]=c,e[r(189)](l)}};let render_vertex=_0x5ca5b5(226),render_fragment=_0x5ca5b5(171),reaction_diffusion_fragment=_0x5ca5b5(188);const width=window[_0x5ca5b5(200)],height=window[_0x5ca5b5(210)],actual_width=Math[_0x5ca5b5(222)](width),actual_height=Math[_0x5ca5b5(222)](height),simulation_width=Math[_0x5ca5b5(222)](actual_width/1.75),simulation_height=Math.round(actual_height/1.75),aspectRatio=window.innerWidth/window[_0x5ca5b5(210)];class Random{constructor(){let $=_0x5ca5b5;this[$(190)]=!1;let x=function(x){let e=$,a=parseInt(x[e(309)](0,8),16),o=parseInt(x.substring(8,16),16),t=parseInt(x[e(309)](16,24),16),r=parseInt(x.substring(24,32),16);return function(){a|=0,o|=0,t|=0;let $=(a+o|0)+(r|=0)|0;return r=r+1|0,a=o^o>>>9,o=t+(t<<3)|0,t=(t=t<<21|t>>>11)+$|0,($>>>0)/4294967296}};this[$(321)]=new x(tokenData[$(215)].substring(2,34)),this[$(201)]=new x(tokenData.hash.substring(34,66));for(let e=0;e<1e6;e+=2)this[$(321)](),this[$(201)]()}[_0x5ca5b5(168)](){let $=_0x5ca5b5;return this[$(190)]=!this[$(190)],this[$(190)]?this[$(321)]():this[$(201)]()}[_0x5ca5b5(206)]($,x){return $+(x-$)*this[_0x5ca5b5(168)]()}[_0x5ca5b5(258)]($,x){return Math.floor(this[_0x5ca5b5(206)]($,x+1))}[_0x5ca5b5(237)]($){return this[_0x5ca5b5(168)]()<$}[_0x5ca5b5(177)]($){let x=_0x5ca5b5;return $[this[x(258)](0,$[x(257)]-1)]}}class SimplexNoise{constructor($){let x=_0x5ca5b5;this[x(239)]=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let e=0;e<256;e++)this.p[e]=Math[x(246)](256*$[x(168)]());this[x(219)]=Array(512);for(let a=0;a<512;a++)this[x(219)][a]=this.p[255&a]}[_0x5ca5b5(274)]($,x,e,a){return $[0]*x+$[1]*e+$[2]*a}[_0x5ca5b5(310)]($,x,e){let a=_0x5ca5b5,o=1/6,t,r,c,n,l=($+x+e)*(1/3),d=Math[a(246)]($+l),s=Math.floor(x+l),f=Math[a(246)](e+l),u=(d+s+f)*o,_=$-(d-u),b=x-(s-u),m=e-(f-u),g,v,h,p,C,F;_>=b?b>=m?(g=1,v=0,h=0,p=1,C=1,F=0):_>=m?(g=1,v=0,h=0,p=1,C=0,F=1):(g=0,v=0,h=1,p=1,C=0,F=1):b<m?(g=0,v=0,h=1,p=0,C=1,F=1):_<m?(g=0,v=1,h=0,p=0,C=1,F=1):(g=0,v=1,h=0,p=1,C=1,F=0);let T=_-g+o,w=b-v+o,y=m-h+o,k=_-p+2*o,S=b-C+2*o,D=m-F+2*o,A=_-1+3*o,P=b-1+3*o,V=m-1+3*o,E=255&d,B=255&s,z=255&f,W=this[a(219)][E+this[a(219)][B+this[a(219)][z]]]%12,K=this[a(219)][E+g+this[a(219)][B+v+this[a(219)][z+h]]]%12,I=this[a(219)][E+p+this[a(219)][B+C+this[a(219)][z+F]]]%12,U=this[a(219)][E+1+this[a(219)][B+1+this.perm[z+1]]]%12,M=.6-_*_-b*b-m*m;M<0?t=0:(M*=M,t=M*M*this[a(274)](this.grad3[W],_,b,m));let G=.6-T*T-w*w-y*y;G<0?r=0:(G*=G,r=G*G*this[a(274)](this.grad3[K],T,w,y));let H=.6-k*k-S*S-D*D;H<0?c=0:(H*=H,c=H*H*this[a(274)](this[a(239)][I],k,S,D));let L=.6-A*A-P*P-V*V;return L<0?n=0:(L*=L,n=L*L*this[a(274)](this.grad3[U],A,P,V)),32*(t+r+c+n)}}let R=new Random;function getRandomArbitrary($,x){return R.random_dec()*(x-$)+$}function _0x51d1($,x){let e=_0x282e();return(_0x51d1=function($,x){return e[$-=160]})($,x)}let diffScaleArray=[.25,.375,.5],diffScale=selectFromArray(diffScaleArray),diffScaleVar=selectFromArray([diffScale-.125,diffScale-.125]),diffScaleArrayWide=[.5,.625,.75,.875,1],diffScaleWide=selectFromArray(diffScaleArrayWide),diffScaleVarWide=selectFromArray([0,diffScale-.125]),feedVar=getRandomArbitrary(0,.01),killVar=getRandomArbitrary(0,.01),randomRect,randomCirc;function selectFromArray($){let x=_0x5ca5b5;return $[Math[x(246)](R[x(168)]()*$[x(257)])]}function selectNumberFromArray($){let x=_0x5ca5b5;return Math[x(246)](R[x(168)]()*$.length)}function _0x282e(){let $=["#f5f5f0","minFilter","DataTexture","RGBFormat","background","reaction_diffusion","wrapS","kill_variation","preventDefault","getElementById","info","extensions","capabilities","substring","noise3d","reset","texture","HalfFloatType","keys","from","kill_modifier","GPUComputationRenderer","save-link","u_time","No support for vertex shader textures.","prngA","PlaneBufferGeometry","Growth:","#0000FF","fromArray","Vector3","c4_color","magFilter","position","setSize","addResolutionDefine","toFixed","divideScalar","environment","#FFFFFF","ClampToEdgeWrapping","add","Vector2","#C7AFF0","now","#ffff00","appendChild","substance_color","frame","vec2( ","field","getAlternateRenderTarget","time","#AE2029","#DE87B7","substance","value","LinearFilter","mouse_pos","getRenderTarget","random_dec","test","#f2f2f2","\n\n varying vec2 vUv;\n\n uniform sampler2D reaction_diffusion;\n uniform vec3 substance_color;\n uniform vec3 background_color;\n uniform vec3 middle_color;\n uniform vec3 c4_color;\n uniform vec3 c5_color;\n uniform vec4 randomRect;\n uniform vec3 circle;\n uniform sampler2D noiseTexture;\n\n void main() {\n vec4 texColor = texture2D(reaction_diffusion, vUv);\n float h = texColor.g;\n\n vec3 colorA = background_color;\n vec3 colorB = middle_color;\n vec3 colorC = substance_color;\n vec3 colorD = c4_color;\n vec3 colorE = c5_color;\n\n float baseEdge0 = 0.0;\n float baseEdge1 = 0.075;\n float baseEdge2 = 0.175;\n float baseEdge3 = 0.275;\n float baseEdge4 = 0.375;\n\n float noiseValue = texture2D(noiseTexture, vUv).r;\n float edgeVariation = noiseValue * 0.1;\n\n float edge0 = baseEdge0 + edgeVariation;\n float edge1 = baseEdge1 + edgeVariation;\n float edge2 = baseEdge2 + edgeVariation;\n float edge3 = baseEdge3 + edgeVariation;\n float edge4 = baseEdge4 + edgeVariation;\n\n vec3 finalColor;\n\n if (h < edge1) {\n float t = clamp((h - edge0) / (edge1 - edge0), 0.0, 1.0);\n finalColor = mix(colorA, colorB, t);\n } else if (h < edge2) {\n float t = clamp((h - edge1) / (edge2 - edge1), 0.0, 1.0);\n finalColor = mix(colorB, colorC, t);\n } else if (h < edge3) {\n float t = clamp((h - edge2) / (edge3 - edge2), 0.0, 1.0);\n finalColor = mix(colorC, colorD, t);\n } else if (h < edge4) {\n float t = clamp((h - edge3) / (edge4 - edge3), 0.0, 1.0);\n finalColor = mix(colorD, colorE, t);\n } else {\n finalColor = colorE;\n }\n\n gl_FragColor = vec4(finalColor, 1.0);\n }\n\n","#D03A20","material","sqrt","randomRectPos","render","random_choice","initialValueTexture","NearestFilter","#b42024","addVariable","renderTexture","userAgent","setPixelRatio","prev_scale","name","uniform sampler2D passThruTexture;\n\nvoid main() {\n\n vec2 uv = gl_FragCoord.xy / resolution.xy;\n\n gl_FragColor = texture2D( passThruTexture, uv );\n\n}\n","\n\n uniform sampler2D environment;\n\n uniform float feed;\n uniform float kill;\n uniform float diffusion_scale;\n\n uniform float feed_variation;\n uniform float kill_variation;\n uniform bool isRect;\n uniform float diffusion_scale_variation;\n\n uniform float anisotropy;\n uniform bool field;\n\n uniform float feed_modifier;\n uniform float kill_modifier;\n\n uniform vec2 mouse_pos;\n uniform vec2 point_pos0;\n uniform vec2 point_pos1;\n uniform vec2 point_pos2;\n uniform vec2 point_pos3;\n uniform vec2 point_pos4;\n uniform vec2 point_pos5;\n uniform vec2 point_pos6;\n uniform vec2 point_pos7;\n uniform vec2 point_pos8;\n uniform vec2 point_pos9;\n uniform vec2 point_posR;\n uniform bool mouse_down;\n\n uniform bool reset;\n uniform bool add;\n\n uniform vec4 randomRect;\n uniform vec4 randomCirc;\n\n uniform vec2 randomRectPos;\n uniform vec2 randomRectSize;\n uniform vec2 randomCircPos;\n uniform vec2 randomCircSize;\n uniform float borderSize;\n\n uniform vec2 rect_top_left;\n uniform vec2 rect_bottom_right;\n\n uniform sampler2D ca_state;\n uniform float caThreshold;\n uniform float ca_factor;\n \n\n #define p2(v) v * v\n #define PI 3.14159265358979323846\n\n \n #define R 10.0\n #define borderWidth 20.0\n #define rectBorderWidth 2.0\n\n #define s(x, y) texture2D(reaction_diffusion, (gl_FragCoord.xy + vec2(x, y)) / resolution).xy\n\n vec2 anisotropicDiffusion(vec2 angles, float a1, vec2 center)\n {\n vec2\n v00 = s(-1, 1), v10 = s(0, 1), v20 = s(1, 1),\n v01 = s(-1, 0), v21 = s(1, 0),\n v02 = s(-1,-1), v12 = s(0,-1), v22 = s(1,-1);\n\n vec2 cos_t = cos(angles);\n vec2 sin_t = sin(angles);\n\n vec2 cos2_t = p2(cos_t);\n vec2 sin2_t = p2(sin_t);\n\n float a2 = 1.0 - a1;\n\n vec2 d = 4.0 * (a2 - a1) * p2(cos_t * sin_t);\n vec2 h = 8.0 * (a1 * cos2_t + a2 * sin2_t);\n vec2 v = 8.0 * (a2 * cos2_t + a1 * sin2_t);\n\n return ((1.0 - d) * (v00 + v22) + (1.0 + d) * (v20 + v02) + h * (v01 + v21) + v * (v10 + v12) - 20.0 * center) / 6.0;\n }\n\n float random (vec2 st) {\n return fract(sin(dot(st.xy,\n vec2(12.9898,78.233)))*\n 43758.5453123);\n }\n bool insideCircle(vec2 point, vec2 center, float radius) {\n return distance(point, center) <= radius;\n }\n\n\n void main() {\n vec4 env = texture2D(environment, (gl_FragCoord.xy / resolution).xy);\n vec2 st = gl_FragCoord.xy/resolution;\n vec3 ca_color = texture2D(ca_state, st).rgb;\n float ca_intensity = dot(ca_color, vec3(0.299, 0.587, 0.114));\n float caValue = texture2D(ca_state, (gl_FragCoord.xy / resolution)).r;\n\n\n float rnd = random( st );\n float pct = 0.0;\n\n vec2 randomRectPosA = randomRectPos * resolution;\n vec2 randomRectSizeA = randomRectSize * resolution;\n\n vec2 randomCircPosA = randomCircPos * resolution;\n vec2 randomCircSizeA = randomCircSize * resolution;\n\n pct = distance(st,vec2(0.5));\n\n float DS = diffusion_scale + env[2] * diffusion_scale_variation;\n vec2 angles = (1.0 + vec2(env[3], field ? env[0] : env[3])) * PI;\n float caInfluence = float(caValue > caThreshold);\n float F = feed + env[0] * feed_variation;\n float K = kill + env[1] * kill_variation;\n\n \n bool insideRectangle = (gl_FragCoord.x > randomRectPosA.x && gl_FragCoord.x < randomRectPosA.x + randomRectSizeA.x) &&\n (gl_FragCoord.y > randomRectPosA.y && gl_FragCoord.y < randomRectPosA.y + randomRectSizeA.y);\n\n bool insideCircle = insideCircle(gl_FragCoord.xy, randomCircPosA, randomCircSizeA.x); \n\n if (insideRectangle) {\n K += 0.003;\n }\n\n if (insideCircle) {\n K += 0.0025;\n }\n\n vec2 old = s(0, 0);\n\n vec2 reaction = vec2(-1.0, 1.0) * old[0] * old[1] * old[1] * (1.0 + caInfluence * ca_factor);\n vec2 dissipation = vec2(F * (1.0 - old[0]), -old[1] * (K + F));\n vec2 diffusion = anisotropicDiffusion(angles, anisotropy, old) * DS * vec2(1.0, 0.5);\n float dt = 1.0 / (4.0 * DS);\n gl_FragColor.xy = old + (reaction + dissipation + diffusion) * dt;\n float edgeDistX = min(gl_FragCoord.x, resolution.x - gl_FragCoord.x);\n float edgeDistY = min(gl_FragCoord.y, resolution.y - gl_FragCoord.y);\n float edgeDist = min(edgeDistX, edgeDistY);\n if (edgeDist <= borderSize) {\n gl_FragColor.x = 0.0;\n gl_FragColor.y = 0.0;\n }\n\n if (mouse_down) {\n gl_FragColor[1] += max(0.25 - old[1], 0.0) * max(R - distance(gl_FragCoord.xy, mouse_pos), 0.0) / R;\n }\n\n if (reset) {\n gl_FragColor = vec4(0.0);\n }\n\n if(add)\n {\n vec2 pointPositions[10];\n pointPositions[0] = point_pos1;\n pointPositions[1] = point_pos2;\n pointPositions[2] = point_pos3;\n pointPositions[3] = point_pos4;\n pointPositions[4] = point_pos5;\n pointPositions[5] = point_pos6;\n pointPositions[6] = point_pos7;\n pointPositions[7] = point_pos8;\n pointPositions[8] = point_pos9;\n pointPositions[9] = point_pos0;\n\n for (int i = 0; i < 10; i++) {\n vec2 pointPos = pointPositions[i];\n gl_FragColor[1] += max(0.25 - old[1], 0.0) * max(R - distance(gl_FragCoord.xy, pointPos), 0.0) / R;\n }\n gl_FragColor[1] += max(0.25 - old[1], 0.0) * max(R - distance(gl_FragCoord.xy, point_posR), 0.0) / R;\n\n }\n }\n\n","setRenderTarget","useA","WebGLRenderer","toDataURL","compute","variables","anisotropy","createRenderTarget","fragmentShader","ca_state","environment_noise_scale","innerWidth","prngB","needsUpdate","currentTextureIndex","RGBAFormat","#df2126","random_num","randomRectSize","createShaderMaterial","diffusion_scale","innerHeight","kill","Settings:","createTexture","middle_color","hash","feed_modifier","feed_variation","set","perm","123168kECKPV","33yVfHuz","round","7662hRmPLq","includes","OES_texture_float","\n varying vec2 vUv;\n void main() \n {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n\n","save_image","toString","diffusion_scale_variation","#000000","#00FF00","#98D82D","passThruTexture","padStart","randomCircSize","renderTargets","random_bool","FloatType","grad3","#FF0000","log","vec2(","doRenderTarget","setVariableDependencies","onmouseup","floor","ShaderMaterial","uniforms","Scene","#EBFF32","accent","noise_texture","ca_factor","Mesh","#ffffff","#FFC234","length","random_int","slice","touches","defines","warped","Vector4","devicePixelRatio","init","#FFFF99","getCurrentRenderTarget","clientY","borderSize","1068380DxziLC","3062466QqUSXW","#FFFFF1","Camera","dot","11724Evgkhm","Variable dependency not found. Variable=","#5BC2AC","savename",", dependency=","mouse_down","117cgzkYH","17676vkKtCU","#ff00ff","#F17401","palette:","background_color","wrapT","point_pos","#FF3C75","#e00000","\nuniform sampler2D ","domElement","download","1612436gppolJ","dependencies"];return(_0x282e=function(){return $})()}function getRandomBool($){return R[_0x5ca5b5(168)]()<$}function hexToRgb($){let x=parseInt($[_0x5ca5b5(259)](1),16),e=parseInt(x>>16&255),a=parseInt(x>>8&255),o=parseInt(255&x);return[e,a,o]}function getRandomBoolean(){return R[_0x5ca5b5(168)]()>=.5}let palettes={Candy:{background:"#E23DB3",accent:"#E23DB3",substance:_0x5ca5b5(256),c4:_0x5ca5b5(266),c5:_0x5ca5b5(335)},Color2:{background:_0x5ca5b5(161),accent:_0x5ca5b5(161),substance:_0x5ca5b5(232),c4:_0x5ca5b5(232),c5:_0x5ca5b5(232)},Color3:{background:_0x5ca5b5(284),accent:_0x5ca5b5(284),substance:"#EBFF32",c4:_0x5ca5b5(250),c5:_0x5ca5b5(250)},Color4:{background:_0x5ca5b5(289),accent:_0x5ca5b5(289),substance:"#FD97C4",c4:"#FD97C4",c5:"#FD97C4"},Color5:{background:_0x5ca5b5(230),accent:_0x5ca5b5(230),substance:_0x5ca5b5(335),c4:_0x5ca5b5(335),c5:"#FFFFFF"},Color6:{background:_0x5ca5b5(284),accent:_0x5ca5b5(284),substance:_0x5ca5b5(250),c4:"#EBFF32",c5:_0x5ca5b5(250)},Yayoi:{background:_0x5ca5b5(172),accent:"#D03A20",substance:_0x5ca5b5(335),c4:_0x5ca5b5(335),c5:_0x5ca5b5(335)},Gabee:{background:_0x5ca5b5(255),accent:_0x5ca5b5(296),substance:_0x5ca5b5(170),c4:"#f2f2f2",c5:_0x5ca5b5(255)},CMKY:{background:_0x5ca5b5(255),accent:(getRandomBoolean(),"#00ffff"),substance:_0x5ca5b5(283),c4:_0x5ca5b5(341),c5:_0x5ca5b5(255)},RGB:{background:_0x5ca5b5(230),accent:(getRandomBoolean(),_0x5ca5b5(231)),substance:_0x5ca5b5(240),c4:_0x5ca5b5(324),c5:_0x5ca5b5(335)},"30Rack":{background:_0x5ca5b5(180),accent:getRandomBoolean()?_0x5ca5b5(180):_0x5ca5b5(230),substance:"#b42024",c4:_0x5ca5b5(205),c5:"#df2126"},Mohun:{background:_0x5ca5b5(272),accent:(getRandomBoolean(),_0x5ca5b5(339)),substance:"#AFCDF0",c4:_0x5ca5b5(277),c5:_0x5ca5b5(162)},Q:{background:"#ffffff",accent:_0x5ca5b5(255),substance:_0x5ca5b5(290),c4:_0x5ca5b5(255),c5:"#ffffff"},Skeleton:{background:_0x5ca5b5(230),accent:_0x5ca5b5(255),substance:_0x5ca5b5(230),c4:_0x5ca5b5(230),c5:_0x5ca5b5(230)}};const defaultPallette={background:"#FF0000",accent:"#00FF00",substance:_0x5ca5b5(324)},traitColorKeys=Object[_0x5ca5b5(314)](palettes),randomColorIndex=R[_0x5ca5b5(258)](0,traitColorKeys[_0x5ca5b5(257)]-1),randomColorKey=traitColorKeys[randomColorIndex],randomColorTrait=palettes[randomColorKey],selectedColor={...defaultPallette,...randomColorTrait};console[_0x5ca5b5(241)](_0x5ca5b5(285),randomColorKey,"Colors:",selectedColor);let main_trait={Zebra:{diffusion_scale:diffScaleWide,diffusion_scale_variation:diffScaleVarWide,feed:.05,feed_variation:0,warped:getRandomBool(.2),kill:.061,kill_variation:0,feed_modifier:-.015,kill_modifier:-.001,anisotropy:selectFromArray([.25,.75]),environment_noise_scale:750,field:!0,substance_color:hexToRgb(selectedColor[_0x5ca5b5(163)]),middle_color:hexToRgb(selectedColor.accent),background_color:hexToRgb(selectedColor.background),c4_color:hexToRgb(selectedColor.c4),c5_color:hexToRgb(selectedColor.c5),simfrRate:64},Fingerprint:{diffusion_scale:diffScale,diffusion_scale_variation:diffScaleVar,feed:.037,feed_variation:0,warped:getRandomBool(.2),kill:.06,feed_modifier:.009,kill_modifier:.003,kill_modifier:0,anisotropy:.5,environment_noise_scale:250,field:getRandomBool(.3),substance_color:hexToRgb(selectedColor[_0x5ca5b5(163)]),middle_color:hexToRgb(selectedColor[_0x5ca5b5(251)]),background_color:hexToRgb(selectedColor[_0x5ca5b5(300)]),c4_color:hexToRgb(selectedColor.c4),c5_color:hexToRgb(selectedColor.c5),simfrRate:64},"Dots and Dashes":{diffusion_scale:diffScale,diffusion_scale_variation:diffScaleVar,feed:.034,feed_variation:0,warped:getRandomBool(.2),kill:.0618,kill_variation:0,feed_modifier:-.004,kill_modifier:.0012,anisotropy:.5,environment_noise_scale:250,field:getRandomBool(.3),substance_color:hexToRgb(selectedColor.substance),middle_color:hexToRgb(selectedColor[_0x5ca5b5(251)]),background_color:hexToRgb(selectedColor[_0x5ca5b5(300)]),c4_color:hexToRgb(selectedColor.c4),c5_color:hexToRgb(selectedColor.c5),simfrRate:64},Yayoi:{diffusion_scale:diffScaleWide,diffusion_scale_variation:diffScaleVarWide,feed:.03,feed_variation:0,warped:getRandomBool(.2),kill:.062,kill_variation:0,feed_modifier:0,kill_modifier:-.0065,anisotropy:.5,environment_noise_scale:250,field:getRandomBool(.3),substance_color:hexToRgb(selectedColor.substance),middle_color:hexToRgb(selectedColor[_0x5ca5b5(251)]),background_color:hexToRgb(selectedColor.background),c4_color:hexToRgb(selectedColor.c4),c5_color:hexToRgb(selectedColor.c5),simfrRate:64},Spillage:{diffusion_scale:diffScale,diffusion_scale_variation:diffScaleVar,feed:.035,feed_variation:.006,kill:.06,kill_variation:.006,feed_modifier:-.005,kill_modifier:-.0035,anisotropy:.5,environment_noise_scale:250,field:getRandomBool(.3),substance_color:hexToRgb(selectedColor.substance),middle_color:hexToRgb(selectedColor[_0x5ca5b5(251)]),background_color:hexToRgb(selectedColor.background),c4_color:hexToRgb(selectedColor.c4),c5_color:hexToRgb(selectedColor.c5),simfrRate:64},Coral:{diffusion_scale:diffScale,diffusion_scale_variation:diffScaleVar,feed:.046,feed_variation:0,warped:getRandomBool(.2),kill:.063,kill_variation:0,feed_modifier:-.009,kill_modifier:-.003,anisotropy:.5,environment_noise_scale:250,field:getRandomBool(.3),substance_color:hexToRgb(selectedColor[_0x5ca5b5(163)]),middle_color:hexToRgb(selectedColor[_0x5ca5b5(251)]),background_color:hexToRgb(selectedColor[_0x5ca5b5(300)]),c4_color:hexToRgb(selectedColor.c4),c5_color:hexToRgb(selectedColor.c5),simfrRate:64},"Squiggle Maze":{diffusion_scale:diffScale,diffusion_scale_variation:diffScaleVar,feed:.03,feed_variation:0,warped:getRandomBool(.2),kill:.0565,kill_variation:0,feed_modifier:0,kill_modifier:.0065,anisotropy:.5,environment_noise_scale:250,field:getRandomBool(.3),substance_color:hexToRgb(selectedColor.substance),middle_color:hexToRgb(selectedColor.accent),background_color:hexToRgb(selectedColor[_0x5ca5b5(300)]),c4_color:hexToRgb(selectedColor.c4),c5_color:hexToRgb(selectedColor.c5),simfrRate:64}};const defaultSettings={anisotropy:.8,simfrRate:64,environment_noise_scale:250,substance_color:[0,0,0],middle_color:[0,255,255],background_color:[255,255,255],c4_color:[0,255,255],background_color:[255,255,255],feed_modifier:0,kill_modifier:0,specular_color:[0,0,0],field:!1,warped:!1,diffusion_scale:.625,diffusion_scale_variation:.375,feed:.042,feed_variation:.001,kill:.06,kill_variation:.001},traitKeys=Object[_0x5ca5b5(314)](main_trait),randomIndex=Math.floor(R[_0x5ca5b5(168)]()*traitKeys[_0x5ca5b5(257)]),randomKey=traitKeys[randomIndex],randomTrait=main_trait[randomKey],settings={...defaultSettings,...randomTrait};console[_0x5ca5b5(241)](_0x5ca5b5(323),randomKey,_0x5ca5b5(212),settings);const scene=new THREE[_0x5ca5b5(249)],camera=new THREE[_0x5ca5b5(273)];camera.position.z=1;const renderer=new THREE[_0x5ca5b5(191)];renderer[_0x5ca5b5(184)](window[_0x5ca5b5(264)]),renderer[_0x5ca5b5(330)](width,height),document.body[_0x5ca5b5(342)](renderer.domElement);const getRandomInt=($,x)=>Math[_0x5ca5b5(246)](R[_0x5ca5b5(168)]()*($-x+1)+x),getRandomColor=()=>(16777215*R[_0x5ca5b5(168)]()<<0)[_0x5ca5b5(228)](16)[_0x5ca5b5(234)](6,"0");let elapsedTime=0,frameCounter=0;const updateFrequency=1;function getRandomFloat($,x){return R[_0x5ca5b5(168)]()*(x-$)+$}let isRect=R[_0x5ca5b5(177)]([1,2,3,4]);switch(isRect){case 1:randomRect=new THREE[_0x5ca5b5(263)](.5*R.random_dec(),0,.2,1),randomCirc=new THREE.Vector4(0,0,0,0);break;case 2:randomRect=new THREE[_0x5ca5b5(263)](0,0,0,0),randomCirc=new THREE[_0x5ca5b5(263)](.5,.5,.4,.4);break;case 3:randomRect=new THREE.Vector4(0,0,0,0),randomCirc=new THREE[_0x5ca5b5(263)](0,0,0,0);break;case 4:randomRect=new THREE.Vector4(.5*R.random_dec(),0,.2,1),randomCirc=new THREE[_0x5ca5b5(263)](.5,.5,.4,.4);break;default:randomRect=new THREE[_0x5ca5b5(263)](.5*R[_0x5ca5b5(168)](),0,.2,1),randomCirc=new THREE.Vector4(0,0,0,0)}const borderSizes=[10,30],borderSize=R.random_choice(borderSizes);let caEnabled=!!R[_0x5ca5b5(237)](.05);console.log("Aggressor: "+caEnabled);const ca_factor=!0===caEnabled?.8:0,caWidth=Math[_0x5ca5b5(246)](simulation_width/15),caHeight=Math[_0x5ca5b5(246)](simulation_height/15),caData=new Uint8Array(caWidth*caHeight*3);for(let i=0;i<caData[_0x5ca5b5(257)];i+=3){let $=.8>R.random_dec()?0:255;caData[i]=$,caData[i+1]=$,caData[i+2]=$}const caTexture=new THREE[_0x5ca5b5(298)](caData,caWidth,caHeight,THREE[_0x5ca5b5(299)]);caTexture[_0x5ca5b5(328)]=THREE[_0x5ca5b5(179)],caTexture.minFilter=THREE[_0x5ca5b5(179)],caTexture[_0x5ca5b5(302)]=THREE[_0x5ca5b5(336)],caTexture[_0x5ca5b5(287)]=THREE[_0x5ca5b5(336)],caTexture[_0x5ca5b5(202)]=!0;const material=new THREE[_0x5ca5b5(247)]({vertexShader:render_vertex,fragmentShader:render_fragment,uniforms:{reaction_diffusion:{value:null},substance_color:{value:new THREE[_0x5ca5b5(326)]()[_0x5ca5b5(325)](settings[_0x5ca5b5(343)])[_0x5ca5b5(333)](255)},middle_color:{value:new THREE[_0x5ca5b5(326)]().fromArray(settings[_0x5ca5b5(214)])[_0x5ca5b5(333)](255)},background_color:{value:new THREE[_0x5ca5b5(326)]()[_0x5ca5b5(325)](settings[_0x5ca5b5(286)])[_0x5ca5b5(333)](255)},c4_color:{value:new THREE[_0x5ca5b5(326)]()[_0x5ca5b5(325)](settings[_0x5ca5b5(327)])[_0x5ca5b5(333)](255)},c5_color:{value:new THREE.Vector3()[_0x5ca5b5(325)](settings.c5_color)[_0x5ca5b5(333)](255)},time:{value:0},noise_texture:{value:null},isRect:{value:isRect},randomRect:{value:randomRect},randomCirc:{value:randomCirc},ca_state:{value:caTexture}},defines:{frag2sim:"vec2("+simulation_width/actual_width+", "+simulation_height/actual_height+")",simulation_resolution:_0x5ca5b5(242)+simulation_width+", "+simulation_height+")"}});scene[_0x5ca5b5(337)](new THREE[_0x5ca5b5(254)](new THREE[_0x5ca5b5(322)](2,2),material));const gpu_compute=new THREE[_0x5ca5b5(317)](simulation_width,simulation_height,renderer),reaction_diffusion=gpu_compute.createTexture(),reaction_diffusion_variable=gpu_compute.addVariable(_0x5ca5b5(301),reaction_diffusion_fragment,reaction_diffusion);reaction_diffusion_variable[_0x5ca5b5(302)]=THREE[_0x5ca5b5(336)],reaction_diffusion_variable[_0x5ca5b5(287)]=THREE[_0x5ca5b5(336)],gpu_compute[_0x5ca5b5(244)](reaction_diffusion_variable,[reaction_diffusion_variable]);const rdu=reaction_diffusion_variable[_0x5ca5b5(173)][_0x5ca5b5(248)];rdu.mouse_pos={value:new THREE[_0x5ca5b5(338)](-100,-100)};for(let i=0;i<10;i++)rdu[_0x5ca5b5(288)+i]={value:new THREE[_0x5ca5b5(338)](getRandomInt(50,simulation_width-50),getRandomInt(50,simulation_height-50))};function updateCA(){let $=_0x5ca5b5,x=new Uint8Array(caWidth*caHeight*3),e=[1],a=[2,3];for(let o=0;o<caHeight;o++)for(let t=0;t<caWidth;t++){let r=(o*caWidth+t)*3,c=0;for(let n=-1;n<=1;n++)for(let l=-1;l<=1;l++){if(0===l&&0===n)continue;let d=(t+l+caWidth)%caWidth;255===caData[((o+n+caHeight)%caHeight*caWidth+d)*3]&&c++}let s=caData[r],f=c==e[0]||1==s&&a[$(224)](c)?1:0;f=255===s&&(2===c||3===c)?255:0===s&&3===c?255:0,x[r]=f,x[r+1]=f,x[r+2]=f}caData[$(218)](x),caTexture[$(202)]=!0}rdu[_0x5ca5b5(280)]={value:!1},rdu.feed={value:settings.feed},rdu[_0x5ca5b5(211)]={value:settings.kill},rdu[_0x5ca5b5(209)]={value:settings[_0x5ca5b5(209)]},rdu[_0x5ca5b5(217)]={value:settings[_0x5ca5b5(217)]},rdu[_0x5ca5b5(303)]={value:settings[_0x5ca5b5(303)]},rdu[_0x5ca5b5(216)]={value:settings[_0x5ca5b5(216)]},rdu.kill_modifier={value:settings[_0x5ca5b5(316)]},rdu[_0x5ca5b5(229)]={value:settings.diffusion_scale_variation},rdu.anisotropy={value:settings[_0x5ca5b5(195)]},rdu[_0x5ca5b5(311)]={value:!1},rdu[_0x5ca5b5(337)]={value:!1},rdu.field={value:settings[_0x5ca5b5(346)]},rdu.warped={value:settings[_0x5ca5b5(262)]},rdu[_0x5ca5b5(253)]={value:ca_factor},rdu[_0x5ca5b5(198)]={value:caTexture},rdu.caThreshold={value:.6},rdu[_0x5ca5b5(269)]={value:borderSize},rdu[_0x5ca5b5(175)]={value:new THREE.Vector2(randomRect.x,randomRect.y)},rdu[_0x5ca5b5(207)]={value:new THREE[_0x5ca5b5(338)](randomRect.z,randomRect.w)},rdu.randomCircPos={value:new THREE[_0x5ca5b5(338)](randomCirc.x,randomCirc.y)},rdu[_0x5ca5b5(235)]={value:new THREE[_0x5ca5b5(338)](randomCirc.z,randomCirc.w)};const caDuration=3e4,maxUpdateFrequency=10;let startTime=Date[_0x5ca5b5(340)]();function animate(){let $=_0x5ca5b5;if(requestAnimationFrame(animate),frameCounter++,caEnabled){let x=Date[$(340)]()-startTime;if(x<3e4){var e,a=0,o=3e4,t=1,r=10;let c=Math[$(246)]((e=x,t+(e-a)*(10-t)/(3e4-a)));frameCounter%c==0&&updateCA()}else caEnabled=!1}render()}function render($){let x=_0x5ca5b5;if(simulateReactionDiffusion(settings.simfrRate),material.uniforms[x(301)][x(164)]=gpu_compute[x(267)](reaction_diffusion_variable)[x(312)],elapsedTime+=.01,material[x(248)][x(160)][x(164)]=elapsedTime,rdu[x(319)]={value:.001*$},renderer[x(176)](scene,camera),!0===render[x(227)]){render[x(227)]=!1;let e=document[x(305)](x(318));e[x(293)]=render[x(278)],e.href=renderer[x(292)][x(192)](),e.click()}renderer[x(306)][x(176)].frame>=2e3&&renderer.info.render[x(344)]<5e3?rdu[x(337)]={value:!0}:rdu.add={value:!1}}function simulateReactionDiffusion($){for(let x=0;x<$;x++)gpu_compute.compute()}function createEnvironment($=!0){let x=_0x5ca5b5;if(!$&&void 0!==createEnvironment[x(185)]&&createEnvironment[x(185)]===Settings[x(199)])return;createEnvironment[x(185)]=settings[x(199)];let e=new SimplexNoise(R),a=Array[x(315)]({length:4},()=>1e3*R[x(168)]()),o=1/settings[x(199)],t={x:simulation_width/2,y:simulation_height/2},r=(t.x,t.y,new Float32Array(simulation_width*simulation_height*4));for(let c=0;c<simulation_height;c++)for(let n=0;n<simulation_width;n++)for(let l=0;l<4;l++)r[(c*simulation_width+n)*4+l]=e[x(310)]((n+.5)*o,(c+.5)*(!0===settings.warped?1:o),a[l]);rdu[x(334)]={value:new THREE[x(298)](r,simulation_width,simulation_height,THREE[x(204)],THREE[x(238)])},rdu.environment[x(164)][x(328)]=THREE[x(165)],rdu[x(334)][x(164)][x(297)]=THREE.LinearFilter;let d=new THREE[x(298)](r,simulation_width,simulation_height,THREE[x(204)],THREE[x(238)]);d[x(328)]=THREE[x(165)],d.minFilter=THREE[x(165)],material[x(248)][x(252)][x(164)]=d}function updateMousePos($){let x=_0x5ca5b5,e=$.clientX*(simulation_width/width),a=simulation_height-$[x(268)]*(simulation_height/height);rdu[x(166)][x(164)].fromArray([e,a])}function onMove($){let x=_0x5ca5b5;updateMousePos($),rdu[x(280)][x(164)]=mouse_down&&(brush_move=!0)}function onUp(){let $=_0x5ca5b5;mouse_down=brush_move=!1,rdu.mouse_down[$(164)]=!1}function onDown(){mouse_down=!0}function handleTouchEvent($,x){let e=_0x5ca5b5;1===$.touches[e(257)]&&($[e(304)](),x($[e(260)][0]))}createEnvironment(),gpu_compute[_0x5ca5b5(265)](),animate(),renderer[_0x5ca5b5(292)].onmousedown=onDown,renderer[_0x5ca5b5(292)][_0x5ca5b5(245)]=renderer[_0x5ca5b5(292)].onmouseleave=onUp,renderer[_0x5ca5b5(292)].onmousemove=onMove;