{"history":[{"breakpoints":[],"visible":true,"aspectRatio":1,"userDownsample":1,"layerType":"effect","type":"gradient","usesPingPong":false,"speed":0.25,"trackMouse":0,"mouseMomentum":0,"mouseSpring":0,"trackAxes":"xy","texture":false,"animating":false,"isMask":0,"compiledFragmentShaders":["#version 300 es\nprecision highp float;in vec2 vTextureCoord;uniform vec2 uMousePos;const float PI = 3.14159265359;vec2 rotate(vec2 coord, float angle) {\nfloat s = sin(angle);\nfloat c = cos(angle);\nreturn vec2(\ncoord.x * c - coord.y * s,\ncoord.x * s + coord.y * c\n);\n}out vec4 fragColor;vec3 getBgColor(vec2 uv) {return vec3(0, 0, 0);\n}void main() {vec2 uv = vTextureCoord;\nvec2 pos = vec2(0.5, 0.5) + mix(vec2(0), (uMousePos-0.5), 0.0000);\nuv -= pos;\nuv /= max(0.5000*2., 1e-5);\nuv = rotate(uv, (0.0000 - 0.5) * 2. * PI);\nvec4 color = vec4(getBgColor(uv), 1.0000);\nfragColor = color;\n}"],"compiledVertexShaders":["#version 300 es\nprecision mediump float;in vec3 aVertexPosition;\nin vec2 aTextureCoord;uniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;out vec2 vTextureCoord;\nout vec3 vVertexPosition;void main() {\ngl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);\nvTextureCoord = aTextureCoord;\n}"],"data":{"downSample":0.5,"depth":false,"uniforms":{},"isBackground":true},"id":"gradient"},{"layerType":"flattened","id":"flat_1","compiledFragmentShaders":["#version 300 es\nprecision highp float;\nin vec2 vTextureCoord;\nin vec3 vVertexPosition;\n\nuniform sampler2D uBgTexture;\nuniform float uL0_Time;\nuniform vec2 uMousePos;\nuniform vec2 uResolution;\nuniform float uL0_ElemOpacity;\nuniform sampler2D uL200_Texture;\nuniform vec2 uL201_MousePos;\nuniform float uL201_ElemOpacity;\nuniform float uL1_ElemOpacity;\nuniform sampler2D uL300_Texture;\nuniform vec2 uL301_MousePos;\nuniform float uL301_ElemOpacity;\nuniform float uL2_ElemOpacity;\nuniform sampler2D uL400_Texture;\nuniform vec2 uL401_MousePos;\nuniform float uL401_ElemOpacity;\nuniform float uL3_ElemOpacity;\nuniform sampler2D uL500_Texture;\nuniform vec2 uL501_MousePos;\nuniform float uL501_ElemOpacity;\nuniform float uL4_ElemOpacity;\nuniform sampler2D uL600_Texture;\nuniform vec2 uL601_MousePos;\nuniform float uL601_ElemOpacity;\nuniform float uL5_ElemOpacity;\nuniform sampler2D uL700_Texture;\nuniform vec2 uL701_MousePos;\nuniform float uL701_ElemOpacity;\nuniform float uL6_ElemOpacity;\n\nconst float PI = 3.14159265359;\nconst float TAU = 6.28318530718;\n\nout vec4 fragColor;\n\nvec4 permute_L0(vec4 t) {\nreturn t * (t * 34.0 + 133.0);\n}\nvec3 grad_L0(float hash) {\nvec3 cube = mod(floor(hash / vec3(1.0, 2.0, 4.0)), 2.0) * 2.0 - 1.0;\nvec3 cuboct = cube;\nfloat index0 = step(0.0, 1.0 - floor(hash / 16.0));\nfloat index1 = step(0.0, floor(hash / 16.0) - 1.0);\ncuboct.x *= 1.0 - index0;\ncuboct.y *= 1.0 - index1;\ncuboct.z *= 1.0 - (1.0 - index0 - index1);\nfloat type = mod(floor(hash / 8.0), 2.0);\nvec3 rhomb = (1.0 - type) * cube + type * (cuboct + cross(cube, cuboct));\nvec3 grad_L0 = cuboct * 1.22474487139 + rhomb;\ngrad_L0 *= (1.0 - 0.042942436724648037 * type) * 3.5946317686139184;\nreturn grad_L0;\n}\nvec4 bccNoiseDerivativesPart_L0(vec3 X) {\nvec3 b = floor(X);\nvec4 i4 = vec4(X - b, 2.5);\nvec3 v1 = b + floor(dot(i4, vec4(.25)));\nvec3 v2 = b + vec3(1, 0, 0) + vec3(-1, 1, 1) * floor(dot(i4, vec4(-.25, .25, .25, .35)));\nvec3 v3 = b + vec3(0, 1, 0) + vec3(1, -1, 1) * floor(dot(i4, vec4(.25, -.25, .25, .35)));\nvec3 v4 = b + vec3(0, 0, 1) + vec3(1, 1, -1) * floor(dot(i4, vec4(.25, .25, -.25, .35)));\nvec4 hashes = permute_L0(mod(vec4(v1.x, v2.x, v3.x, v4.x), 289.0));\nhashes = permute_L0(mod(hashes + vec4(v1.y, v2.y, v3.y, v4.y), 289.0));\nhashes = mod(permute_L0(mod(hashes + vec4(v1.z, v2.z, v3.z, v4.z), 289.0)), 48.0);\nvec3 d1 = X - v1;\nvec3 d2 = X - v2;\nvec3 d3 = X - v3;\nvec3 d4 = X - v4;\nvec4 a = max(0.75 - vec4(dot(d1, d1), dot(d2, d2), dot(d3, d3), dot(d4, d4)), 0.0);\nvec4 aa = a * a;\nvec4 aaaa = aa * aa;\nvec3 g1 = grad_L0(hashes.x);\nvec3 g2 = grad_L0(hashes.y);\nvec3 g3 = grad_L0(hashes.z);\nvec3 g4 = grad_L0(hashes.w);\nvec4 extrapolations = vec4(dot(d1, g1), dot(d2, g2), dot(d3, g3), dot(d4, g4));\nvec3 derivative = -8.0 * mat4x3(d1, d2, d3, d4) * (aa * a * extrapolations)\n+ mat4x3(g1, g2, g3, g4) * aaaa;\nreturn vec4(derivative, dot(aaaa, extrapolations));\n}\nvec4 bccNoiseDerivatives_XYBeforeZ_L0(vec3 X) {\nmat3 orthonormalMap = mat3(\n0.788675134594813, -0.211324865405187, -0.577350269189626,\n-0.211324865405187, 0.788675134594813, -0.577350269189626,\n0.577350269189626, 0.577350269189626, 0.577350269189626);\nX = orthonormalMap * X;\nvec4 result = bccNoiseDerivativesPart_L0(X) + bccNoiseDerivativesPart_L0(X + 144.5);\nreturn vec4(result.xyz * orthonormalMap, result.w);\n}\nfloat ease_L0 (int easingFunc, float t) {\nreturn t;\n}\nvec3 blend_L0 (int blendMode, vec3 src, vec3 dst) {\nreturn src + dst;\n}\nvec4 normalizeNoise_L0(vec4 noise, float amount) {\nreturn mix(noise, (noise + 0.5) * 0.5, amount);\n}\nmat2 rotate2d_L0(float angle) {\nreturn mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n}\nvec4 getNoise_L0(vec3 p) {\nvec4 noise = bccNoiseDerivatives_XYBeforeZ_L0(p);\nreturn normalizeNoise_L0(noise, 0.2500);\n}\nvec3 causticsP_L0(vec2 uv, vec2 aspect) {\nvec2 drift = vec2(0, 0.0000 * uL0_Time * 0.0125);\nvec2 pos = vec2(0.5, 0.5) + drift * rotate2d_L0(0.5319 * -2. * PI);\nuv -= pos;\nuv = uv * aspect * rotate2d_L0(0.5319 * 2. * PI) * vec2(1. - 0.0000, 1.) * 16.0 * 0.1200;\nreturn vec3(uv, uL0_Time * 0.05);\n}\nvec3 causticsColor_L0(vec3 p, vec4 noise) {\nfloat refraction = mix(0.25, 1.3, 0.5000);\nvec4 balanceNoise = getNoise_L0(p - vec3(noise.xyz / 32.0) * refraction);\nnoise = getNoise_L0(p - vec3(balanceNoise.xyz / 16.0) * refraction);\nfloat balancer = (0.5 + 0.5 * balanceNoise.w);\nfloat normalized = pow(0.5 + 0.5 * noise.w, 2.);\nreturn vec3(0.1568627450980392, 0.09411764705882353, 0.23137254901960785) * mix(0., normalized + 0.2 * (1.0 - normalized), balancer);\n}\nvec4 computeParentSrc_L1(vec2 uv) {\nvec2 pos = vec2(0);\npos = mix(vec2(0), (uMousePos - 0.5), 0.0000);\nuv -= pos;\nvec4 color = texture(uL200_Texture, uv);\nreturn color;\n}\nmat2 rot(float a) {\nreturn mat2(cos(a),-sin(a),sin(a),cos(a));\n}\nvec4 computeLayer_L201(vec2 uv, vec4 prevLayerColor) {\nvec4 color = prevLayerColor;\nfloat displacement = 0.0;\nvec2 aspectRatio = vec2(uResolution.x/uResolution.y, 1.0);\nvec2 skew = vec2(0.5000, 1.0 - 0.5000);\nfloat halfRadius = 0.5000 * 0.5;\nfloat innerEdge = halfRadius - 1.0000 * halfRadius * 0.5;\nfloat outerEdge = halfRadius + 1.0000 * halfRadius * 0.5;\nvec2 pos = vec2(0.5, 0.5);\npos += (uL201_MousePos - 0.5) * 1.0000;\nvec2 scaledUV = uv * aspectRatio * rot(0.0000 * TAU) * skew;\nvec2 scaledPos = pos * aspectRatio * rot(0.0000 * TAU) * skew;\nfloat radius = distance(scaledUV, scaledPos);\nfloat falloff = smoothstep(innerEdge + displacement, outerEdge + displacement, radius);\nvec4 vignetteColor;\nvignetteColor = vec4(vec3(0, 0, 0), 1.0) * falloff * 1.0000;\nvec4 col = mix(color * (1.-falloff), vec4(vignetteColor.rgb, vignetteColor.a), 1.0000);\nreturn col;\n}\nvec4 computeParentSrc_L2(vec2 uv) {\nvec2 pos = vec2(0);\npos = mix(vec2(0), (uMousePos - 0.5), 0.0000);\nuv -= pos;\nvec4 color = texture(uL300_Texture, uv);\nreturn color;\n}\nvec4 computeLayer_L301(vec2 uv, vec4 prevLayerColor) {\nvec4 color = prevLayerColor;\nfloat displacement = 0.0;\nvec2 aspectRatio = vec2(uResolution.x/uResolution.y, 1.0);\nvec2 skew = vec2(0.5000, 1.0 - 0.5000);\nfloat halfRadius = 0.4900 * 0.5;\nfloat innerEdge = halfRadius - 1.0000 * halfRadius * 0.5;\nfloat outerEdge = halfRadius + 1.0000 * halfRadius * 0.5;\nvec2 pos = vec2(0.5, 0.5);\npos += (uL301_MousePos - 0.5) * 1.0000;\nvec2 scaledUV = uv * aspectRatio * rot(0.0000 * TAU) * skew;\nvec2 scaledPos = pos * aspectRatio * rot(0.0000 * TAU) * skew;\nfloat radius = distance(scaledUV, scaledPos);\nfloat falloff = smoothstep(innerEdge + displacement, outerEdge + displacement, radius);\nvec4 vignetteColor;\nvignetteColor = vec4(vec3(0, 0, 0), 1.0) * falloff * 1.0000;\nvec4 col = mix(color * (1.-falloff), vec4(vignetteColor.rgb, vignetteColor.a), 1.0000);\nreturn col;\n}\nvec4 computeParentSrc_L3(vec2 uv) {\nvec2 pos = vec2(0);\npos = mix(vec2(0), (uMousePos - 0.5), 0.0000);\nuv -= pos;\nvec4 color = texture(uL400_Texture, uv);\nreturn color;\n}\nvec4 computeLayer_L401(vec2 uv, vec4 prevLayerColor) {\nvec4 color = prevLayerColor;\nfloat displacement = 0.0;\nvec2 aspectRatio = vec2(uResolution.x/uResolution.y, 1.0);\nvec2 skew = vec2(0.5000, 1.0 - 0.5000);\nfloat halfRadius = 0.5000 * 0.5;\nfloat innerEdge = halfRadius - 1.0000 * halfRadius * 0.5;\nfloat outerEdge = halfRadius + 1.0000 * halfRadius * 0.5;\nvec2 pos = vec2(0.5, 0.5);\npos += (uL401_MousePos - 0.5) * 1.0000;\nvec2 scaledUV = uv * aspectRatio * rot(0.0000 * TAU) * skew;\nvec2 scaledPos = pos * aspectRatio * rot(0.0000 * TAU) * skew;\nfloat radius = distance(scaledUV, scaledPos);\nfloat falloff = smoothstep(innerEdge + displacement, outerEdge + displacement, radius);\nvec4 vignetteColor;\nvignetteColor = vec4(vec3(0, 0, 0), 1.0) * falloff * 1.0000;\nvec4 col = mix(color * (1.-falloff), vec4(vignetteColor.rgb, vignetteColor.a), 1.0000);\nreturn col;\n}\nvec4 computeParentSrc_L4(vec2 uv) {\nvec2 pos = vec2(0);\npos = mix(vec2(0), (uMousePos - 0.5), 0.0000);\nuv -= pos;\nvec4 color = texture(uL500_Texture, uv);\nreturn color;\n}\nvec4 computeLayer_L501(vec2 uv, vec4 prevLayerColor) {\nvec4 color = prevLayerColor;\nfloat displacement = 0.0;\nvec2 aspectRatio = vec2(uResolution.x/uResolution.y, 1.0);\nvec2 skew = vec2(0.5000, 1.0 - 0.5000);\nfloat halfRadius = 0.5000 * 0.5;\nfloat innerEdge = halfRadius - 1.0000 * halfRadius * 0.5;\nfloat outerEdge = halfRadius + 1.0000 * halfRadius * 0.5;\nvec2 pos = vec2(0.5, 0.5);\npos += (uL501_MousePos - 0.5) * 1.0000;\nvec2 scaledUV = uv * aspectRatio * rot(0.0000 * TAU) * skew;\nvec2 scaledPos = pos * aspectRatio * rot(0.0000 * TAU) * skew;\nfloat radius = distance(scaledUV, scaledPos);\nfloat falloff = smoothstep(innerEdge + displacement, outerEdge + displacement, radius);\nvec4 vignetteColor;\nvignetteColor = vec4(vec3(0, 0, 0), 1.0) * falloff * 1.0000;\nvec4 col = mix(color * (1.-falloff), vec4(vignetteColor.rgb, vignetteColor.a), 1.0000);\nreturn col;\n}\nvec4 computeParentSrc_L5(vec2 uv) {\nvec2 pos = vec2(0);\npos = mix(vec2(0), (uMousePos - 0.5), 0.0000);\nuv -= pos;\nvec4 color = texture(uL600_Texture, uv);\nreturn color;\n}\nvec4 computeLayer_L601(vec2 uv, vec4 prevLayerColor) {\nvec4 color = prevLayerColor;\nfloat displacement = 0.0;\nvec2 aspectRatio = vec2(uResolution.x/uResolution.y, 1.0);\nvec2 skew = vec2(0.5000, 1.0 - 0.5000);\nfloat halfRadius = 0.5000 * 0.5;\nfloat innerEdge = halfRadius - 1.0000 * halfRadius * 0.5;\nfloat outerEdge = halfRadius + 1.0000 * halfRadius * 0.5;\nvec2 pos = vec2(0.5, 0.5);\npos += (uL601_MousePos - 0.5) * 1.0000;\nvec2 scaledUV = uv * aspectRatio * rot(0.0000 * TAU) * skew;\nvec2 scaledPos = pos * aspectRatio * rot(0.0000 * TAU) * skew;\nfloat radius = distance(scaledUV, scaledPos);\nfloat falloff = smoothstep(innerEdge + displacement, outerEdge + displacement, radius);\nvec4 vignetteColor;\nvignetteColor = vec4(vec3(0, 0, 0), 1.0) * falloff * 1.0000;\nvec4 col = mix(color * (1.-falloff), vec4(vignetteColor.rgb, vignetteColor.a), 1.0000);\nreturn col;\n}\nvec4 computeParentSrc_L6(vec2 uv) {\nvec2 pos = vec2(0);\npos = mix(vec2(0), (uMousePos - 0.5), 0.0000);\nuv -= pos;\nvec4 color = texture(uL700_Texture, uv);\nreturn color;\n}\nvec4 computeLayer_L701(vec2 uv, vec4 prevLayerColor) {\nvec4 color = prevLayerColor;\nfloat displacement = 0.0;\nvec2 aspectRatio = vec2(uResolution.x/uResolution.y, 1.0);\nvec2 skew = vec2(0.5000, 1.0 - 0.5000);\nfloat halfRadius = 0.5000 * 0.5;\nfloat innerEdge = halfRadius - 1.0000 * halfRadius * 0.5;\nfloat outerEdge = halfRadius + 1.0000 * halfRadius * 0.5;\nvec2 pos = vec2(0.5, 0.5);\npos += (uL701_MousePos - 0.5) * 1.0000;\nvec2 scaledUV = uv * aspectRatio * rot(0.0000 * TAU) * skew;\nvec2 scaledPos = pos * aspectRatio * rot(0.0000 * TAU) * skew;\nfloat radius = distance(scaledUV, scaledPos);\nfloat falloff = smoothstep(innerEdge + displacement, outerEdge + displacement, radius);\nvec4 vignetteColor;\nvignetteColor = vec4(vec3(0, 0, 0), 1.0) * falloff * 1.0000;\nvec4 col = mix(color * (1.-falloff), vec4(vignetteColor.rgb, vignetteColor.a), 1.0000);\nreturn col;\n}\n\nvec4 computeLayer_L0(vec2 uv) {\nvec2 aspect = vec2(uResolution.x/uResolution.y, 1);\nvec2 mPos = vec2(0.5, 0.5) + mix(vec2(0), (uMousePos-0.5), 0.0000);\nfloat mDist = ease_L0(0, max(0.,1. - distance(uv * aspect, mPos * aspect) * 4. * (1. - 1.0000)));\nvec3 causticP = causticsP_L0(uv, aspect);\nvec4 causticNoise = getNoise_L0(causticP) * mDist;\nvec3 causticColor = causticsColor_L0(causticP, causticNoise) * mDist;\nvec4 color;\ncolor = texture(uBgTexture, uv + causticNoise.xy * 0.01 * 0.2500);\nvec3 blended = blend_L0(1, color.rgb, causticColor);\ncolor.rgb = mix(color.rgb, blended, 0.8300);\nreturn color;\n}\nvec4 computeLayer_L1(vec2 uv) {\nvec4 stackResult = computeParentSrc_L1(uv);\nif (stackResult.a < 0.001) return vec4(0.0);\nvec4 sc0 = computeLayer_L201(uv, stackResult);\nsc0 *= uL201_ElemOpacity;\nstackResult = sc0 + stackResult * (1.0 - sc0.a);\nreturn stackResult;\n}\nvec4 computeLayer_L2(vec2 uv) {\nvec4 stackResult = computeParentSrc_L2(uv);\nif (stackResult.a < 0.001) return vec4(0.0);\nvec4 sc0 = computeLayer_L301(uv, stackResult);\nsc0 *= uL301_ElemOpacity;\nstackResult = sc0 + stackResult * (1.0 - sc0.a);\nreturn stackResult;\n}\nvec4 computeLayer_L3(vec2 uv) {\nvec4 stackResult = computeParentSrc_L3(uv);\nif (stackResult.a < 0.001) return vec4(0.0);\nvec4 sc0 = computeLayer_L401(uv, stackResult);\nsc0 *= uL401_ElemOpacity;\nstackResult = sc0 + stackResult * (1.0 - sc0.a);\nreturn stackResult;\n}\nvec4 computeLayer_L4(vec2 uv) {\nvec4 stackResult = computeParentSrc_L4(uv);\nif (stackResult.a < 0.001) return vec4(0.0);\nvec4 sc0 = computeLayer_L501(uv, stackResult);\nsc0 *= uL501_ElemOpacity;\nstackResult = sc0 + stackResult * (1.0 - sc0.a);\nreturn stackResult;\n}\nvec4 computeLayer_L5(vec2 uv) {\nvec4 stackResult = computeParentSrc_L5(uv);\nif (stackResult.a < 0.001) return vec4(0.0);\nvec4 sc0 = computeLayer_L601(uv, stackResult);\nsc0 *= uL601_ElemOpacity;\nstackResult = sc0 + stackResult * (1.0 - sc0.a);\nreturn stackResult;\n}\nvec4 computeLayer_L6(vec2 uv) {\nvec4 stackResult = computeParentSrc_L6(uv);\nif (stackResult.a < 0.001) return vec4(0.0);\nvec4 sc0 = computeLayer_L701(uv, stackResult);\nsc0 *= uL701_ElemOpacity;\nstackResult = sc0 + stackResult * (1.0 - sc0.a);\nreturn stackResult;\n}\n\nvoid main() {\nvec2 uv = vTextureCoord;\nvec4 topOcc = vec4(0.0);\nvec4 occ6 = computeLayer_L6(uv);\nocc6 *= uL6_ElemOpacity;\ntopOcc = topOcc + occ6 * (1.0 - topOcc.a);\nif (topOcc.a >= 0.9999) { fragColor = topOcc; return; }\nvec4 occ5 = computeLayer_L5(uv);\nocc5 *= uL5_ElemOpacity;\ntopOcc = topOcc + occ5 * (1.0 - topOcc.a);\nif (topOcc.a >= 0.9999) { fragColor = topOcc; return; }\nvec4 occ4 = computeLayer_L4(uv);\nocc4 *= uL4_ElemOpacity;\ntopOcc = topOcc + occ4 * (1.0 - topOcc.a);\nif (topOcc.a >= 0.9999) { fragColor = topOcc; return; }\nvec4 occ3 = computeLayer_L3(uv);\nocc3 *= uL3_ElemOpacity;\ntopOcc = topOcc + occ3 * (1.0 - topOcc.a);\nif (topOcc.a >= 0.9999) { fragColor = topOcc; return; }\nvec4 occ2 = computeLayer_L2(uv);\nocc2 *= uL2_ElemOpacity;\ntopOcc = topOcc + occ2 * (1.0 - topOcc.a);\nif (topOcc.a >= 0.9999) { fragColor = topOcc; return; }\nvec4 occ1 = computeLayer_L1(uv);\nocc1 *= uL1_ElemOpacity;\ntopOcc = topOcc + occ1 * (1.0 - topOcc.a);\nif (topOcc.a >= 0.9999) { fragColor = topOcc; return; }\nvec4 occ0 = computeLayer_L0(uv);\nocc0 *= uL0_ElemOpacity;\ntopOcc = topOcc + occ0 * (1.0 - topOcc.a);\nif (topOcc.a >= 0.9999) { fragColor = topOcc; return; }\nvec4 result = vec4(0.0);\nvec4 c0 = occ0;\nresult = c0 + result * (1.0 - c0.a);\nvec4 c1 = occ1;\nresult = c1 + result * (1.0 - c1.a);\nvec4 c2 = occ2;\nresult = c2 + result * (1.0 - c2.a);\nvec4 c3 = occ3;\nresult = c3 + result * (1.0 - c3.a);\nvec4 c4 = occ4;\nresult = c4 + result * (1.0 - c4.a);\nvec4 c5 = occ5;\nresult = c5 + result * (1.0 - c5.a);\nvec4 c6 = occ6;\nresult = c6 + result * (1.0 - c6.a);\nfragColor = result;\n}"],"compiledVertexShaders":["#version 300 es\nprecision highp float;\nin vec3 aVertexPosition;\nin vec2 aTextureCoord;\nuniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\nout vec2 vTextureCoord;\nout vec3 vVertexPosition;\nvoid main() {\ngl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);\nvVertexPosition = aVertexPosition;\nvTextureCoord = aTextureCoord;\n}"],"sublayers":[{"id":"caustics","layerType":"effect","type":"caustics","sublayerIndex":0,"opacity":1,"animating":true},{"id":"text","layerType":"text","sublayerIndex":200,"opacity":0.5,"animating":false,"textContent":"eSIM","fontFamily":"Inter","fontStyle":"regular","fontWeight":"400","fontSize":24,"fontSizeMode":"fixed","lineHeight":45.25,"letterSpacing":0,"textAlign":"center","fill":["#d2a6ff"],"fontCSS":{"family":"Inter","src":"https://assets.unicorn.studio/fonts/google_fonts/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfMZhrib2Bg-4.ttf"},"width":0.1875,"widthMode":"relative","height":90.5,"heightMode":"fixed","left":0.12201388888888887,"top":0.33555926544240405,"rotation":0,"anchorPoint":"center","noTextAsHtml":false,"windowWidth":390},{"id":"vignette1","layerType":"effect","type":"vignette","sublayerIndex":201,"opacity":1,"animating":false},{"id":"text1","layerType":"text","sublayerIndex":300,"opacity":0.5,"animating":false,"textContent":"AI Auto-switching","fontFamily":"Inter","fontStyle":"regular","fontWeight":"400","fontSize":24,"fontSizeMode":"fixed","lineHeight":49,"letterSpacing":0,"textAlign":"left","fill":["#d2a6ff"],"fontCSS":{"src":"https://assets.unicorn.studio/fonts/google_fonts/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfMZhrib2Bg-4.ttf","family":"Inter"},"width":270,"widthMode":"fixed","height":49,"heightMode":"fixed","left":0.23819444444444443,"top":0.5046784122473261,"rotation":0,"anchorPoint":"center","noTextAsHtml":false,"windowWidth":390},{"id":"vignette","layerType":"effect","type":"vignette","sublayerIndex":301,"opacity":1,"animating":false},{"id":"text2","layerType":"text","sublayerIndex":400,"opacity":0.5,"animating":false,"textContent":"No Roaming Fee","fontFamily":"Inter","fontStyle":"regular","fontWeight":"400","fontSize":24,"fontSizeMode":"fixed","lineHeight":49,"letterSpacing":0,"textAlign":"left","fill":["#d2a6ff"],"fontCSS":{"src":"https://assets.unicorn.studio/fonts/google_fonts/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfMZhrib2Bg-4.ttf","family":"Inter"},"width":270,"widthMode":"fixed","height":49,"heightMode":"fixed","left":0.18392227787052493,"top":0.6722222222222223,"rotation":0,"anchorPoint":"center","noTextAsHtml":false,"windowWidth":390},{"id":"vignette2","layerType":"effect","type":"vignette","sublayerIndex":401,"opacity":1,"animating":false},{"id":"text3","layerType":"text","sublayerIndex":500,"opacity":0.5,"animating":false,"textContent":"Global Connectivity","fontFamily":"Inter","fontStyle":"regular","fontWeight":"400","fontSize":24,"fontSizeMode":"fixed","lineHeight":42.75,"letterSpacing":0,"textAlign":"center","fill":["#d2a6ff"],"fontCSS":{"family":"Inter","src":"https://assets.unicorn.studio/fonts/google_fonts/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfMZhrib2Bg-4.ttf"},"width":0.1875,"widthMode":"relative","height":42.75,"heightMode":"fixed","left":0.8250000000000001,"top":0.33555926544240405,"rotation":0,"anchorPoint":"center","noTextAsHtml":false,"windowWidth":390},{"id":"vignette3","layerType":"effect","type":"vignette","sublayerIndex":501,"opacity":1,"animating":false},{"id":"text4","layerType":"text","sublayerIndex":600,"opacity":0.5,"animating":false,"textContent":"PayFi","fontFamily":"Inter","fontStyle":"regular","fontWeight":"400","fontSize":24,"fontSizeMode":"fixed","lineHeight":40.0625,"letterSpacing":0,"textAlign":"center","fill":["#d2a6ff"],"fontCSS":{"src":"https://assets.unicorn.studio/fonts/google_fonts/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfMZhrib2Bg-4.ttf","family":"Inter"},"width":0.1875,"widthMode":"relative","height":40.0625,"heightMode":"fixed","left":0.6951388888888889,"top":0.5,"rotation":0,"anchorPoint":"center","noTextAsHtml":false,"windowWidth":390},{"id":"vignette4","layerType":"effect","type":"vignette","sublayerIndex":601,"opacity":1,"animating":false},{"id":"text5","layerType":"text","sublayerIndex":700,"opacity":0.5,"animating":false,"textContent":"DePIN","fontFamily":"Poppins","fontStyle":"regular","fontWeight":"400","fontSize":24,"fontSizeMode":"fixed","lineHeight":40.0625,"letterSpacing":0,"textAlign":"center","fill":["#e4caff"],"fontCSS":{"src":"https://assets.unicorn.studio/fonts/google_fonts/pxiEyp8kv8JHgFVrFJDUc1NECPY.ttf","family":"Poppins"},"width":0.1875,"widthMode":"relative","height":40.0625,"heightMode":"fixed","left":0.8250208681135226,"top":0.6599656835466517,"rotation":0,"anchorPoint":"center","noTextAsHtml":false,"windowWidth":390},{"id":"vignette5","layerType":"effect","type":"vignette","sublayerIndex":701,"opacity":1,"animating":false}],"data":{"uniforms":{"resolution":{"name":"uResolution","type":"2f","value":{"type":"Vec2","_x":1080,"_y":1080}},"mousePos":{"name":"uMousePos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}},"L0_time":{"name":"uL0_Time","type":"1f","value":0},"L0_elemOpacity":{"name":"uL0_ElemOpacity","type":"1f","value":1},"L201_elemOpacity":{"name":"uL201_ElemOpacity","type":"1f","value":1},"L301_elemOpacity":{"name":"uL301_ElemOpacity","type":"1f","value":1},"L401_elemOpacity":{"name":"uL401_ElemOpacity","type":"1f","value":1},"L501_elemOpacity":{"name":"uL501_ElemOpacity","type":"1f","value":1},"L601_elemOpacity":{"name":"uL601_ElemOpacity","type":"1f","value":1},"L701_elemOpacity":{"name":"uL701_ElemOpacity","type":"1f","value":1},"L201_mousePos":{"name":"uL201_MousePos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}},"L301_mousePos":{"name":"uL301_MousePos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}},"L401_mousePos":{"name":"uL401_MousePos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}},"L501_mousePos":{"name":"uL501_MousePos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}},"L601_mousePos":{"name":"uL601_MousePos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}},"L701_mousePos":{"name":"uL701_MousePos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}},"L1_elemOpacity":{"name":"uL1_ElemOpacity","type":"1f","value":0.5},"L2_elemOpacity":{"name":"uL2_ElemOpacity","type":"1f","value":0.5},"L3_elemOpacity":{"name":"uL3_ElemOpacity","type":"1f","value":0.5},"L4_elemOpacity":{"name":"uL4_ElemOpacity","type":"1f","value":0.5},"L5_elemOpacity":{"name":"uL5_ElemOpacity","type":"1f","value":0.5},"L6_elemOpacity":{"name":"uL6_ElemOpacity","type":"1f","value":0.5}},"textures":[{"sampler":"uL200_Texture","type":"canvas","sublayerIndex":200},{"sampler":"uL300_Texture","type":"canvas","sublayerIndex":300},{"sampler":"uL400_Texture","type":"canvas","sublayerIndex":400},{"sampler":"uL500_Texture","type":"canvas","sublayerIndex":500},{"sampler":"uL600_Texture","type":"canvas","sublayerIndex":600},{"sampler":"uL700_Texture","type":"canvas","sublayerIndex":700}],"timeUniforms":[{"key":"L0_time","speed":0.12,"animating":true}],"mouseUniforms":[{"key":"L201_mousePos","momentum":1,"spring":0,"trackAxes":"xy"},{"key":"L301_mousePos","momentum":1,"spring":0,"trackAxes":"xy"},{"key":"L401_mousePos","momentum":1,"spring":0,"trackAxes":"xy"},{"key":"L501_mousePos","momentum":1,"spring":0,"trackAxes":"xy"},{"key":"L601_mousePos","momentum":1,"spring":0,"trackAxes":"xy"},{"key":"L701_mousePos","momentum":1,"spring":0,"trackAxes":"xy"}],"hasMouseTracking":true,"hasVideoSublayers":false,"estimatedSublayerWorkRaw":411,"occlusion":{"candidateLayers":0}},"states":{"appear":[],"scroll":[],"hover":[],"mousemove":[]},"breakpoints":[{"name":"Desktop","min":992,"max":null,"props":{"L1_top":0.33555926544240405,"L1_left":0.12201388888888887,"L1_width":0.1875,"L2_top":0.5046784122473261,"L2_left":0.23819444444444443,"L3_top":0.6722222222222223,"L3_left":0.18392227787052493,"L4_left":0.8250000000000001,"L4_top":0.33555926544240405,"L4_width":0.1875,"L5_top":0.5,"L5_left":0.6951388888888889,"L6_top":0.6599656835466517,"L6_left":0.8250208681135226}},{"name":"Tablet","min":576,"max":991,"props":{"L1_left":0.0295659722222222,"L1_top":0.33360614044240405,"L2_left":0.12881944444444443,"L3_left":0.0053996243739565675,"L3_top":0.6669449081803005,"L4_width":0.3169270833333333,"L4_top":0.3365234375,"L4_left":0.9977864583333332,"L5_left":0.8331597222222222,"L5_top":0.5045909849749582,"L6_left":0.9526250347801892,"L6_top":0.6427378964941569}},{"name":"Mobile","min":0,"max":575,"props":{"L1_top":0.33364928909952607,"L1_left":-0.07059294871794872,"L1_width":0.14118589743589743,"L2_top":0.5045909849749584,"L2_left":-0.16861645299145298,"L3_left":-0.19457215016480456,"L3_top":0.666110183639399,"L4_width":0.7171814903846153,"L4_top":0.33388981636060105,"L4_left":1.3260246394230768,"L5_left":1.074185363247863,"L5_top":0.5045909849749584,"L6_left":1.0910534651770043,"L6_top":0.6368948247078465}}],"userDownsample":1,"visible":true},{"breakpoints":[{"max":null,"min":992,"props":{"width":450},"name":"Desktop"},{"name":"Mobile","props":{"width":300},"min":0,"max":575}],"aspectRatio":1,"userDownsample":1,"states":{"appear":[],"scroll":[],"hover":[],"mousemove":[]},"effects":[],"anchorPoint":8,"mask":0,"maskDepth":0,"maskDepthLayer":1,"layerType":"image","width":450,"widthMode":1,"height":300,"heightMode":2,"left":0.5,"top":0.5,"src":"https://assets.unicorn.studio/images/ot9fnviu2JM72E7bFLs84cuB9m62/image%2058.png","imageNaturalSize":{"type":"Vec2","_x":738,"_y":738},"compiledFragmentShaders":["#version 300 es\nprecision highp float;in vec2 vTextureCoord;\nin vec3 vVertexPosition;uniform sampler2D uSourceImage;\nuniform float uWidth;uniform vec2 uArtboardResolution;\nuniform vec2 uMousePos;\nuniform sampler2D uBgTexture;const float TAU = 6.28318530718;\nconst float PI = 3.14159265359;out vec4 fragColor;vec2 rotate2D(vec2 p, float angle) {\nfloat s = sin(angle);\nfloat c = cos(angle);\nreturn vec2(p.x * c - p.y * s, p.x * s + p.y * c);\n}vec2 getAnchorOffsets() {\nreturn vec2(0.5, 0.5);\n}vec4 sampleImage(vec2 canvasUV, vec2 mouseOffset, vec2 mouseRotOffset) {\nvec2 canvasPos = vec2(canvasUV.x * uArtboardResolution.x, (1.0 - canvasUV.y) * uArtboardResolution.y);\nvec2 imageUV;float absWidth = uWidth;\nfloat absHeight = 300.0000 * uArtboardResolution.y;\nabsWidth = absWidth;\nabsHeight = (1 != 2 && 2 == 2) ? absWidth / 1.0000 : absHeight;vec2 elementSizePx = vec2(absWidth, absHeight);\nvec2 elementPosPx = vec2(0.5000, 0.5000) * uArtboardResolution - getAnchorOffsets() * elementSizePx;vec2 centerPos = elementPosPx + (elementSizePx * 0.5);\nvec2 relPos = canvasPos - centerPos + mouseOffset;\nvec2 unrotatedRelPos = rotate2D(relPos, 0.0000 * -TAU);\nvec2 elementPos = unrotatedRelPos + (elementSizePx * 0.5);\nimageUV = elementPos / elementSizePx;\nvec2 flippedUV = vec2(imageUV.x, 1.0 - imageUV.y);\nvec4 color = textureLod(uSourceImage, flippedUV, 0.0);\nif (imageUV.x >= 0.0 && imageUV.x <= 1.0 && imageUV.y >= 0.0 && imageUV.y <= 1.0) {\nreturn color;\n} else {\nreturn vec4(0.0);\n}\n}vec4 getNormalOutput(vec4 color, vec4 background) {\nreturn mix(background, color + background * (1.0 - color.a), 1.0000);\n}vec4 getOutputByMode(vec4 color, vec4 background) {\nreturn getNormalOutput(color, background);\n}vec4 applyImageAdjustments(vec4 color) {color.rgb = clamp(color.rgb, 0.0, 1.0);\ncolor.rgb *= color.a;\nreturn color;\n}vec4 getCompositeOutput(vec2 uv, vec2 mouseOffsetPx, vec2 mouseRotOffset) {\nvec4 background = vec4(0);background = texture(uBgTexture, vTextureCoord);\nvec4 color = sampleImage(uv, mouseOffsetPx, mouseRotOffset);\ncolor = applyImageAdjustments(color);return getOutputByMode(color, background);\n}void main() {\nvec2 uv = vTextureCoord;\nvec2 mouseOffsetUV = (uMousePos - 0.5) * 0.0000;\nvec2 mouseOffsetPx = mouseOffsetUV;\nvec2 mouseRotOffset = (uMousePos - 0.5) * 0.0000 * PI * 0.5;\nuv -= mouseOffsetUV;\nfragColor = getCompositeOutput(uv, mouseOffsetPx, mouseRotOffset);\n}"],"compiledVertexShaders":["#version 300 es\nprecision highp float;in vec3 aVertexPosition;\nin vec2 aTextureCoord;uniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\nuniform vec2 uMousePos;out vec2 vTextureCoord;\nout vec3 vVertexPosition;void main() {\nfloat angleX = uMousePos.y * 0.5 - 0.25;\nfloat angleY = (1.-uMousePos.x) * 0.5 - 0.25;mat4 rotateX = mat4(1.0, 0.0, 0.0, 0.0,\n0.0, cos(angleX), -sin(angleX), 0.0,\n0.0, sin(angleX), cos(angleX), 0.0,\n0.0, 0.0, 0.0, 1.0);\nmat4 rotateY = mat4(cos(angleY), 0.0, sin(angleY), 0.0,\n0.0, 1.0, 0.0, 0.0,\n-sin(angleY), 0.0, cos(angleY), 0.0,\n0.0, 0.0, 0.0, 1.0);mat4 rotationMatrix = rotateX * rotateY;\ngl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);\nvVertexPosition = (rotationMatrix * vec4(aVertexPosition, 1.0)).xyz;\nvTextureCoord = (vec4(aTextureCoord, 0.0, 1.0)).xy;\n}"],"data":{"uniforms":{"artboardResolution":{"name":"uArtboardResolution","type":"2f","value":{"type":"Vec2","_x":390,"_y":844}},"aspectRatio":{"name":"uAspectRatio","type":"1f","value":1},"width":{"name":"uWidth","type":"1f","value":512}},"elementOpacity":1},"id":"image"},{"breakpoints":[],"visible":true,"aspectRatio":1,"userDownsample":1,"layerType":"effect","type":"mouse","usesPingPong":true,"mouseMomentum":0,"texture":false,"animating":false,"mouseSpring":0,"isMask":0,"compiledFragmentShaders":["#version 300 es\nprecision highp float;in vec2 vTextureCoord;\nin vec3 vVertexPosition;uniform sampler2D uTexture;\nuniform sampler2D uPingPongTexture;\nuniform vec2 uResolution;const float PI = 3.14159265359;\nconst float ITERATIONS = 24.0;out vec4 fragColor;vec3 rgb2hsv(vec3 c) {\nvec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\nvec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\nvec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));float d = q.x - min(q.w, q.y);\nfloat e = 1.0e-10;\nreturn vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n}vec3 chromatic_aberration(vec3 color, vec2 uv, vec2 offset) {\nvec4 left = texture(uTexture, uv - offset);\nvec4 right = texture(uTexture, uv + offset);color.r = left.r;\ncolor.b = right.b;return color;\n}vec2 angleToDir(float angle) {\nfloat rad = angle * 2.0 * PI;\nreturn vec2(cos(rad), sin(rad));\n}vec4 defaultTrail(vec2 uv, vec2 mouseDir) {\nvec4 color = vec4(0);\nvec2 distorted = mouseDir * 0.4;\nuv -= distorted;\ncolor = texture(uTexture, uv);\ncolor.rgb = chromatic_aberration(color.rgb, uv, distorted * 0.2500 * 0.12);\nreturn color;\n}vec4 getTrailColor(vec2 uv, vec2 mouseDir, float strength, float aspectRatio) {\nvec4 color = vec4(0);return defaultTrail(uv, mouseDir);\n}void main() {\nvec2 uv = vTextureCoord;\nvec2 pingpongUv = uv;\nfloat aspectRatio = uResolution.x / uResolution.y;vec3 mouseRgb = texture(uPingPongTexture, pingpongUv).rgb;\nvec3 mouseTrail = rgb2hsv(mouseRgb);float angle = mouseTrail.x;\nfloat strength = mouseTrail.z * (0.5000 * 1.5);\nvec2 direction = angleToDir(angle);\nvec2 mouseDir = direction * strength;vec4 color = getTrailColor(uv, mouseDir, abs(strength), aspectRatio);\nfragColor = color;\n}","#version 300 es\nprecision highp float;in vec3 vVertexPosition;\nin vec2 vTextureCoord;uniform sampler2D uPingPongTexture;\nuniform vec2 uPreviousMousePos;uniform vec2 uMousePos;\nuniform vec2 uResolution;const float PI = 3.14159265359;\nconst float TAU = 6.28318530718;out vec4 fragColor;vec3 rgb2hsv(vec3 c) {\nvec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\nvec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\nvec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));float d = q.x - min(q.w, q.y);\nfloat e = 1.0e-10;\nreturn vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n}vec3 hsv2rgb(vec3 c) {\nvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\nvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\nreturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}mat2 rot(float a) {\nreturn mat2(cos(a), -sin(a), sin(a), cos(a));\n}vec2 liquify(vec2 st, vec2 dir, float strength) {\nfloat aspectRatio = uResolution.x / uResolution.y;\nst.x *= aspectRatio;\nst -= dir * 0.005;\nfloat amplitude = smoothstep(0.0, 1.0, strength) * 0.005;\nfor (float i = 1.0; i <= 5.0; i++) {\nst = st * rot(i / 5.0 * PI * 2.0);\nst += vec2(\namplitude * cos(i * 5.0 * st.y + strength),\namplitude * sin(i * 5.0 * st.x + strength)\n);\n}\nst.x /= aspectRatio;\nreturn st;\n}vec2 angleToDir(float angle) {\nfloat rad = angle * 2.0 * PI;\nreturn vec2(cos(rad), sin(rad));\n}void main() {\nfloat aspectRatio = uResolution.x / uResolution.y;\nvec2 aspectVec = vec2(aspectRatio, 1.0);\nvec2 uv = vTextureCoord;\nvec2 correctedUv = uv * aspectVec;vec2 dir = (uMousePos - uPreviousMousePos) * aspectVec;\nfloat dist = length(dir);\nif (dist > 0.0) {\ndir = dir / dist;\n} else {\ndir = vec2(1.0, 0.0);\n}float rad = 0.0400 * 0.4 * mix(aspectRatio, 1.0, 0.5);\nfloat angle = atan(dir.y, dir.x);\nif (angle < 0.0) angle += TAU;\nvec3 lastFrameColor = vec3(0);\nlastFrameColor = texture(uPingPongTexture, uv).rgb;\nvec3 hsv = rgb2hsv(lastFrameColor);\nvec2 prevDir = angleToDir(hsv.x);\nuv = mix(uv, liquify(uv, prevDir/length(prevDir), hsv.z), 1.0000);float t = dist > 0.0 ? clamp(dot(correctedUv - uPreviousMousePos * aspectVec, dir) / dist, 0.0, 1.0) : 0.0;\nvec2 closestPoint = mix(uPreviousMousePos, uMousePos, t) * aspectVec;\nfloat distanceToLine = distance(correctedUv, closestPoint);float shrink = mix(0.5, 1.0, clamp(dist * 20.0, 0.0, 1.0));\nrad *= shrink;float s = 1.0 - smoothstep(rad * 0.0000, rad, distanceToLine);s = s * s;vec3 color = vec3(angle / TAU, 1.0, 1.0);\nvec3 mouseColor = hsv2rgb(color);vec2 sampleUv = mix(uv, uv / (1.0 + 0.0000 * 0.03) + 0.0000 * 0.015, 0.0000);\nfloat blurRadius = 0.003;\nlastFrameColor = texture(uPingPongTexture, sampleUv).rgb * 0.4;\nlastFrameColor += texture(uPingPongTexture, sampleUv + vec2(blurRadius, 0.0)).rgb * 0.15;\nlastFrameColor += texture(uPingPongTexture, sampleUv + vec2(-blurRadius, 0.0)).rgb * 0.15;\nlastFrameColor += texture(uPingPongTexture, sampleUv + vec2(0.0, blurRadius)).rgb * 0.15;\nlastFrameColor += texture(uPingPongTexture, sampleUv + vec2(0.0, -blurRadius)).rgb * 0.15;\nlastFrameColor = pow(lastFrameColor, vec3(2.2));\nmouseColor = pow(mouseColor, vec3(2.2));\nlastFrameColor *= pow(0.7200, 0.2);\nfloat clampedDist = clamp(min(1.0, dist * 10.0) * s, 0.0, 1.0);\nvec3 draw = mix(lastFrameColor, mouseColor, clampedDist);\ndraw = pow(draw, vec3(1.0/2.2));\nif (max(draw.r, max(draw.g, draw.b)) < 0.001) {\ndraw = vec3(0.0);\n}\nfragColor = vec4(draw, 1.0);\n}"],"compiledVertexShaders":["#version 300 es\nprecision mediump float;in vec3 aVertexPosition;\nin vec2 aTextureCoord;uniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\nuniform mat4 uTextureMatrix;out vec2 vTextureCoord;\nout vec3 vVertexPosition;void main() {\ngl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);\nvTextureCoord = (uTextureMatrix * vec4(aTextureCoord, 0.0, 1.0)).xy;\n}","#version 300 es\nprecision mediump float;in vec3 aVertexPosition;\nin vec2 aTextureCoord;uniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;out vec2 vTextureCoord;\nout vec3 vVertexPosition;void main() {\ngl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);\nvTextureCoord = aTextureCoord;\n}"],"data":{"depth":false,"uniforms":{},"isBackground":false},"id":"mouse_trail"},{"breakpoints":[],"visible":true,"aspectRatio":1,"userDownsample":1,"layerType":"effect","type":"fog","usesPingPong":false,"speed":0.18,"trackMouse":0,"mouseMomentum":0,"mouseSpring":0,"trackAxes":"xy","texture":false,"animating":true,"isMask":0,"compiledFragmentShaders":["#version 300 es\nprecision highp float;\nprecision highp int;in vec3 vVertexPosition;\nin vec2 vTextureCoord;uniform sampler2D uTexture;\nuniform float uTime;\nuniform vec2 uMousePos;\nuniform vec2 uResolution;\nfloat ease (int easingFunc, float t) {\nreturn t;\n}\nfloat getExponentialWeight(int index) {\nswitch(index) {\ncase 0: return 1.0000000000;\ncase 1: return 0.7165313106;\ncase 2: return 0.5134171190;\ncase 3: return 0.3678794412;\ncase 4: return 0.2636050919;\ncase 5: return 0.1888756057;\ncase 6: return 0.1353352832;\ncase 7: return 0.0969670595;\ncase 8: return 0.0694877157;\ndefault: return 0.0;\n}\n}out vec4 fragColor;const int kernelSize = 36;\nmat2 rot(float a) {\nreturn mat2(cos(a),-sin(a),sin(a),cos(a));\n}const float PHI = 1.618033988;\nconst float PI = 3.14159265359;float dot_noise(vec3 p) {\nconst mat3 GOLD = mat3(\n-0.571464913, +0.814921382, +0.096597072,\n-0.278044873, -0.303026659, +0.911518454,\n+0.772087367, +0.494042493, +0.399753815);\nreturn dot(cos(GOLD * p), sin(PHI * p * GOLD));\n}float cheap_fbm(vec3 p) {\nmat2 rota = mat2(0.6, -0.8, 0.8, 0.6);\nfloat nos = 0.;\nfloat amp = 1. + 0.5000 * 10.;\nfloat xp = sqrt(2.);\nfloat halfxp = xp * 0.5;\nfor(int i = 0; i < 6; i++) {\nfloat theta = uTime * 0.05 + float(i);\np.xy *= xp;\np.xy += sin(rota * p.xy * xp + theta) * 0.2;\nfloat nz = dot_noise(vec3(p.xy * rota, p.z + theta));\nnos += nz * amp * rota[0][0];\namp *= halfxp;\nrota *= mat2(0.6, -0.8, 0.8, 0.6);\n}\nnos *= 1./float(6);\nfloat density = -3. + 0.5000 * 6.;\nreturn smoothstep(-3., 3., nos + density);\n}float fnoise(vec2 uv) {\nfloat aspectRatio = uResolution.x/uResolution.y;\nvec2 aspect = vec2(aspectRatio, 1);\nfloat multiplier = 10.0 * (1.3200 / ((aspectRatio + 1.) / 2.));\nvec2 st = ((uv * aspect - vec2(0.5, 0.5) * aspect)) * multiplier * rot((0.1539 - 0.125) * 2. * PI);vec2 mPos = vec2(0.5, 0.5) + mix(vec2(0), (uMousePos-0.5), 0.0000);\nvec2 pos = mix(vec2(0.5, 0.5), mPos, floor(1.0000));\nfloat dist = ease(0, max(0.,1.-distance(uv * aspect, mPos * aspect) * 4. * (1. - 1.0000)));if (0 == 1) {\ndist = max(0., (0.5 - dist));\n}\nfloat time = uTime * 0.05;\nvec2 drift = vec2(time * 0.2) * 2.0 * 0.4700;\nfloat fbm = cheap_fbm(vec3(st - drift, time)) * dist;\nfbm = fbm / (1. + fbm);\nreturn fbm;\n}vec4 ExponentialBlur(sampler2D tex, vec2 uv, vec2 direction) {\nvec4 color = vec4(0.0);\nfloat total_weight = 0.0;float fogNoise = fnoise(uv);\nfloat radius = 8.0 * fogNoise * max(0.4500, 0.1);\nradius = mix(0.01, 0.03, radius);vec2 dir = normalize(direction) / vec2(uResolution.x/uResolution.y, 1);vec4 center = texture(tex, uv);\nfloat center_weight = getExponentialWeight(0);\ncolor += center * center_weight;\ntotal_weight += center_weight;for (int i = 1; i <= 8; i++) {\nfloat weight = getExponentialWeight(i);\nfloat offset = radius * float(i) / 8.0;\nvec4 sample1 = texture(tex, uv + offset * dir);\nvec4 sample2 = texture(tex, uv - offset * dir);\ncolor += (sample1 + sample2) * weight;\ntotal_weight += 2.0 * weight;\n}\nfloat scatter = radius * 2.;\ncolor += (\ntexture(tex, uv + scatter * dir) +\ntexture(tex, uv - scatter * dir)\n) * 0.0694877157;return color / total_weight;\n}vec4 blur(vec2 uv, vec2 direction) {\nreturn ExponentialBlur(uTexture, uv, direction);\n}vec4 getColor(vec2 uv) {\nreturn blur(uv, vec2(1, 0));\n}void main() {\nvec2 uv = vTextureCoord;\nvec4 color = getColor(uv);\nfragColor = color;}","#version 300 es\nprecision highp float;\nprecision highp int;in vec3 vVertexPosition;\nin vec2 vTextureCoord;uniform sampler2D uTexture;\nuniform float uTime;\nuniform vec2 uMousePos;\nuniform vec2 uResolution;\nfloat ease (int easingFunc, float t) {\nreturn t;\n}\nfloat getExponentialWeight(int index) {\nswitch(index) {\ncase 0: return 1.0000000000;\ncase 1: return 0.7165313106;\ncase 2: return 0.5134171190;\ncase 3: return 0.3678794412;\ncase 4: return 0.2636050919;\ncase 5: return 0.1888756057;\ncase 6: return 0.1353352832;\ncase 7: return 0.0969670595;\ncase 8: return 0.0694877157;\ndefault: return 0.0;\n}\n}out vec4 fragColor;const int kernelSize = 36;\nmat2 rot(float a) {\nreturn mat2(cos(a),-sin(a),sin(a),cos(a));\n}const float PHI = 1.618033988;\nconst float PI = 3.14159265359;float dot_noise(vec3 p) {\nconst mat3 GOLD = mat3(\n-0.571464913, +0.814921382, +0.096597072,\n-0.278044873, -0.303026659, +0.911518454,\n+0.772087367, +0.494042493, +0.399753815);\nreturn dot(cos(GOLD * p), sin(PHI * p * GOLD));\n}float cheap_fbm(vec3 p) {\nmat2 rota = mat2(0.6, -0.8, 0.8, 0.6);\nfloat nos = 0.;\nfloat amp = 1. + 0.5000 * 10.;\nfloat xp = sqrt(2.);\nfloat halfxp = xp * 0.5;\nfor(int i = 0; i < 6; i++) {\nfloat theta = uTime * 0.05 + float(i);\np.xy *= xp;\np.xy += sin(rota * p.xy * xp + theta) * 0.2;\nfloat nz = dot_noise(vec3(p.xy * rota, p.z + theta));\nnos += nz * amp * rota[0][0];\namp *= halfxp;\nrota *= mat2(0.6, -0.8, 0.8, 0.6);\n}\nnos *= 1./float(6);\nfloat density = -3. + 0.5000 * 6.;\nreturn smoothstep(-3., 3., nos + density);\n}float fnoise(vec2 uv) {\nfloat aspectRatio = uResolution.x/uResolution.y;\nvec2 aspect = vec2(aspectRatio, 1);\nfloat multiplier = 10.0 * (1.3200 / ((aspectRatio + 1.) / 2.));\nvec2 st = ((uv * aspect - vec2(0.5, 0.5) * aspect)) * multiplier * rot((0.1539 - 0.125) * 2. * PI);vec2 mPos = vec2(0.5, 0.5) + mix(vec2(0), (uMousePos-0.5), 0.0000);\nvec2 pos = mix(vec2(0.5, 0.5), mPos, floor(1.0000));\nfloat dist = ease(0, max(0.,1.-distance(uv * aspect, mPos * aspect) * 4. * (1. - 1.0000)));if (0 == 1) {\ndist = max(0., (0.5 - dist));\n}\nfloat time = uTime * 0.05;\nvec2 drift = vec2(time * 0.2) * 2.0 * 0.4700;\nfloat fbm = cheap_fbm(vec3(st - drift, time)) * dist;\nfbm = fbm / (1. + fbm);\nreturn fbm;\n}vec4 ExponentialBlur(sampler2D tex, vec2 uv, vec2 direction) {\nvec4 color = vec4(0.0);\nfloat total_weight = 0.0;float fogNoise = fnoise(uv);\nfloat radius = 8.0 * fogNoise * max(0.4500, 0.1);\nradius = mix(0.01, 0.03, radius);vec2 dir = normalize(direction) / vec2(uResolution.x/uResolution.y, 1);vec4 center = texture(tex, uv);\nfloat center_weight = getExponentialWeight(0);\ncolor += center * center_weight;\ntotal_weight += center_weight;for (int i = 1; i <= 8; i++) {\nfloat weight = getExponentialWeight(i);\nfloat offset = radius * float(i) / 8.0;\nvec4 sample1 = texture(tex, uv + offset * dir);\nvec4 sample2 = texture(tex, uv - offset * dir);\ncolor += (sample1 + sample2) * weight;\ntotal_weight += 2.0 * weight;\n}\nfloat scatter = radius * 2.;\ncolor += (\ntexture(tex, uv + scatter * dir) +\ntexture(tex, uv - scatter * dir)\n) * 0.0694877157;return color / total_weight;\n}vec4 blur(vec2 uv, vec2 direction) {\nreturn ExponentialBlur(uTexture, uv, direction);\n}vec4 getColor(vec2 uv) {\nreturn blur(uv, vec2(0, 1));\n}void main() {\nvec2 uv = vTextureCoord;\nvec4 color = getColor(uv);\nfragColor = color;}","#version 300 es\nprecision highp float;\nprecision highp int;in vec3 vVertexPosition;\nin vec2 vTextureCoord;uniform sampler2D uTexture;\nuniform float uTime;\nuniform vec2 uMousePos;\nuniform vec2 uResolution;\nfloat ease (int easingFunc, float t) {\nreturn t;\n}\nfloat getExponentialWeight(int index) {\nswitch(index) {\ncase 0: return 1.0000000000;\ncase 1: return 0.7165313106;\ncase 2: return 0.5134171190;\ncase 3: return 0.3678794412;\ncase 4: return 0.2636050919;\ncase 5: return 0.1888756057;\ncase 6: return 0.1353352832;\ncase 7: return 0.0969670595;\ncase 8: return 0.0694877157;\ndefault: return 0.0;\n}\n}out vec4 fragColor;const int kernelSize = 36;\nmat2 rot(float a) {\nreturn mat2(cos(a),-sin(a),sin(a),cos(a));\n}const float PHI = 1.618033988;\nconst float PI = 3.14159265359;float dot_noise(vec3 p) {\nconst mat3 GOLD = mat3(\n-0.571464913, +0.814921382, +0.096597072,\n-0.278044873, -0.303026659, +0.911518454,\n+0.772087367, +0.494042493, +0.399753815);\nreturn dot(cos(GOLD * p), sin(PHI * p * GOLD));\n}float cheap_fbm(vec3 p) {\nmat2 rota = mat2(0.6, -0.8, 0.8, 0.6);\nfloat nos = 0.;\nfloat amp = 1. + 0.5000 * 10.;\nfloat xp = sqrt(2.);\nfloat halfxp = xp * 0.5;\nfor(int i = 0; i < 6; i++) {\nfloat theta = uTime * 0.05 + float(i);\np.xy *= xp;\np.xy += sin(rota * p.xy * xp + theta) * 0.2;\nfloat nz = dot_noise(vec3(p.xy * rota, p.z + theta));\nnos += nz * amp * rota[0][0];\namp *= halfxp;\nrota *= mat2(0.6, -0.8, 0.8, 0.6);\n}\nnos *= 1./float(6);\nfloat density = -3. + 0.5000 * 6.;\nreturn smoothstep(-3., 3., nos + density);\n}float fnoise(vec2 uv) {\nfloat aspectRatio = uResolution.x/uResolution.y;\nvec2 aspect = vec2(aspectRatio, 1);\nfloat multiplier = 10.0 * (1.3200 / ((aspectRatio + 1.) / 2.));\nvec2 st = ((uv * aspect - vec2(0.5, 0.5) * aspect)) * multiplier * rot((0.1539 - 0.125) * 2. * PI);vec2 mPos = vec2(0.5, 0.5) + mix(vec2(0), (uMousePos-0.5), 0.0000);\nvec2 pos = mix(vec2(0.5, 0.5), mPos, floor(1.0000));\nfloat dist = ease(0, max(0.,1.-distance(uv * aspect, mPos * aspect) * 4. * (1. - 1.0000)));if (0 == 1) {\ndist = max(0., (0.5 - dist));\n}\nfloat time = uTime * 0.05;\nvec2 drift = vec2(time * 0.2) * 2.0 * 0.4700;\nfloat fbm = cheap_fbm(vec3(st - drift, time)) * dist;\nfbm = fbm / (1. + fbm);\nreturn fbm;\n}vec4 ExponentialBlur(sampler2D tex, vec2 uv, vec2 direction) {\nvec4 color = vec4(0.0);\nfloat total_weight = 0.0;float fogNoise = fnoise(uv);\nfloat radius = 8.0 * fogNoise * max(0.4500, 0.1);\nradius = mix(0.01, 0.03, radius);vec2 dir = normalize(direction) / vec2(uResolution.x/uResolution.y, 1);vec4 center = texture(tex, uv);\nfloat center_weight = getExponentialWeight(0);\ncolor += center * center_weight;\ntotal_weight += center_weight;for (int i = 1; i <= 8; i++) {\nfloat weight = getExponentialWeight(i);\nfloat offset = radius * float(i) / 8.0;\nvec4 sample1 = texture(tex, uv + offset * dir);\nvec4 sample2 = texture(tex, uv - offset * dir);\ncolor += (sample1 + sample2) * weight;\ntotal_weight += 2.0 * weight;\n}\nfloat scatter = radius * 2.;\ncolor += (\ntexture(tex, uv + scatter * dir) +\ntexture(tex, uv - scatter * dir)\n) * 0.0694877157;return color / total_weight;\n}vec4 blur(vec2 uv, vec2 direction) {\nreturn ExponentialBlur(uTexture, uv, direction);\n}vec4 getColor(vec2 uv) {\nreturn blur(uv, vec2(1, 1));\n}void main() {\nvec2 uv = vTextureCoord;\nvec4 color = getColor(uv);\nfragColor = color;}","#version 300 es\nprecision highp float;\nprecision highp int;in vec3 vVertexPosition;\nin vec2 vTextureCoord;uniform sampler2D uTexture;\nuniform float uTime;\nuniform vec2 uMousePos;\nuniform vec2 uResolution;\nfloat ease (int easingFunc, float t) {\nreturn t;\n}\nfloat getExponentialWeight(int index) {\nswitch(index) {\ncase 0: return 1.0000000000;\ncase 1: return 0.7165313106;\ncase 2: return 0.5134171190;\ncase 3: return 0.3678794412;\ncase 4: return 0.2636050919;\ncase 5: return 0.1888756057;\ncase 6: return 0.1353352832;\ncase 7: return 0.0969670595;\ncase 8: return 0.0694877157;\ndefault: return 0.0;\n}\n}out vec4 fragColor;const int kernelSize = 36;\nmat2 rot(float a) {\nreturn mat2(cos(a),-sin(a),sin(a),cos(a));\n}const float PHI = 1.618033988;\nconst float PI = 3.14159265359;float dot_noise(vec3 p) {\nconst mat3 GOLD = mat3(\n-0.571464913, +0.814921382, +0.096597072,\n-0.278044873, -0.303026659, +0.911518454,\n+0.772087367, +0.494042493, +0.399753815);\nreturn dot(cos(GOLD * p), sin(PHI * p * GOLD));\n}float cheap_fbm(vec3 p) {\nmat2 rota = mat2(0.6, -0.8, 0.8, 0.6);\nfloat nos = 0.;\nfloat amp = 1. + 0.5000 * 10.;\nfloat xp = sqrt(2.);\nfloat halfxp = xp * 0.5;\nfor(int i = 0; i < 6; i++) {\nfloat theta = uTime * 0.05 + float(i);\np.xy *= xp;\np.xy += sin(rota * p.xy * xp + theta) * 0.2;\nfloat nz = dot_noise(vec3(p.xy * rota, p.z + theta));\nnos += nz * amp * rota[0][0];\namp *= halfxp;\nrota *= mat2(0.6, -0.8, 0.8, 0.6);\n}\nnos *= 1./float(6);\nfloat density = -3. + 0.5000 * 6.;\nreturn smoothstep(-3., 3., nos + density);\n}float fnoise(vec2 uv) {\nfloat aspectRatio = uResolution.x/uResolution.y;\nvec2 aspect = vec2(aspectRatio, 1);\nfloat multiplier = 10.0 * (1.3200 / ((aspectRatio + 1.) / 2.));\nvec2 st = ((uv * aspect - vec2(0.5, 0.5) * aspect)) * multiplier * rot((0.1539 - 0.125) * 2. * PI);vec2 mPos = vec2(0.5, 0.5) + mix(vec2(0), (uMousePos-0.5), 0.0000);\nvec2 pos = mix(vec2(0.5, 0.5), mPos, floor(1.0000));\nfloat dist = ease(0, max(0.,1.-distance(uv * aspect, mPos * aspect) * 4. * (1. - 1.0000)));if (0 == 1) {\ndist = max(0., (0.5 - dist));\n}\nfloat time = uTime * 0.05;\nvec2 drift = vec2(time * 0.2) * 2.0 * 0.4700;\nfloat fbm = cheap_fbm(vec3(st - drift, time)) * dist;\nfbm = fbm / (1. + fbm);\nreturn fbm;\n}vec4 ExponentialBlur(sampler2D tex, vec2 uv, vec2 direction) {\nvec4 color = vec4(0.0);\nfloat total_weight = 0.0;float fogNoise = fnoise(uv);\nfloat radius = 8.0 * fogNoise * max(0.4500, 0.1);\nradius = mix(0.01, 0.03, radius);vec2 dir = normalize(direction) / vec2(uResolution.x/uResolution.y, 1);vec4 center = texture(tex, uv);\nfloat center_weight = getExponentialWeight(0);\ncolor += center * center_weight;\ntotal_weight += center_weight;for (int i = 1; i <= 8; i++) {\nfloat weight = getExponentialWeight(i);\nfloat offset = radius * float(i) / 8.0;\nvec4 sample1 = texture(tex, uv + offset * dir);\nvec4 sample2 = texture(tex, uv - offset * dir);\ncolor += (sample1 + sample2) * weight;\ntotal_weight += 2.0 * weight;\n}\nfloat scatter = radius * 2.;\ncolor += (\ntexture(tex, uv + scatter * dir) +\ntexture(tex, uv - scatter * dir)\n) * 0.0694877157;return color / total_weight;\n}vec4 blur(vec2 uv, vec2 direction) {\nreturn ExponentialBlur(uTexture, uv, direction);\n}vec4 getColor(vec2 uv) {\nreturn blur(uv, vec2(1, -1));\n}void main() {\nvec2 uv = vTextureCoord;\nvec4 color = getColor(uv);\nfragColor = color;}","#version 300 es\nprecision highp float;\nprecision highp int;in vec3 vVertexPosition;\nin vec2 vTextureCoord;uniform sampler2D uTexture;\nuniform sampler2D uBgTexture;\nuniform float uTime;\nuniform vec2 uMousePos;\nuniform vec2 uResolution;\nfloat ease (int easingFunc, float t) {\nreturn t;\n}\nuvec2 pcg2d(uvec2 v) {\nv = v * 1664525u + 1013904223u;\nv.x += v.y * v.y * 1664525u + 1013904223u;\nv.y += v.x * v.x * 1664525u + 1013904223u;\nv ^= v >> 16;\nv.x += v.y * v.y * 1664525u + 1013904223u;\nv.y += v.x * v.x * 1664525u + 1013904223u;\nreturn v;\n}float randFibo(vec2 p) {\nuvec2 v = floatBitsToUint(p);\nv = pcg2d(v);\nuint r = v.x ^ v.y;\nreturn float(r) / float(0xffffffffu);\n}out vec4 fragColor;const int kernelSize = 36;\nmat2 rot(float a) {\nreturn mat2(cos(a),-sin(a),sin(a),cos(a));\n}vec3 Tonemap_ACES(vec3 x) {\nconst float a = 2.51;\nconst float b = 0.03;\nconst float c = 2.43;\nconst float d = 0.59;\nconst float e = 0.14;\nreturn (x * (a * x + b)) / (x * (c * x + d) + e);\n}vec3 chromatic_aberration(vec3 color, vec2 uv, float amount) {\nvec2 offset = normalize(vTextureCoord - 0.5) * amount / vec2(uResolution.x/uResolution.y, 1);\nvec4 left = texture(uTexture, uv - offset);\nvec4 right = texture(uTexture, uv + offset);color.r = left.r;\ncolor.b = right.b;return color;\n}const float PHI = 1.618033988;\nconst float PI = 3.14159265359;float dot_noise(vec3 p) {\nconst mat3 GOLD = mat3(\n-0.571464913, +0.814921382, +0.096597072,\n-0.278044873, -0.303026659, +0.911518454,\n+0.772087367, +0.494042493, +0.399753815);\nreturn dot(cos(GOLD * p), sin(PHI * p * GOLD));\n}float cheap_fbm(vec3 p) {\nmat2 rota = mat2(0.6, -0.8, 0.8, 0.6);\nfloat nos = 0.;\nfloat amp = 1. + 0.5000 * 10.;\nfloat xp = sqrt(2.);\nfloat halfxp = xp * 0.5;\nfor(int i = 0; i < 6; i++) {\nfloat theta = uTime * 0.05 + float(i);\np.xy *= xp;\np.xy += sin(rota * p.xy * xp + theta) * 0.2;\nfloat nz = dot_noise(vec3(p.xy * rota, p.z + theta));\nnos += nz * amp * rota[0][0];\namp *= halfxp;\nrota *= mat2(0.6, -0.8, 0.8, 0.6);\n}\nnos *= 1./float(6);\nfloat density = -3. + 0.5000 * 6.;\nreturn smoothstep(-3., 3., nos + density);\n}float fnoise(vec2 uv) {\nfloat aspectRatio = uResolution.x/uResolution.y;\nvec2 aspect = vec2(aspectRatio, 1);\nfloat multiplier = 10.0 * (1.3200 / ((aspectRatio + 1.) / 2.));\nvec2 st = ((uv * aspect - vec2(0.5, 0.5) * aspect)) * multiplier * rot((0.1539 - 0.125) * 2. * PI);vec2 mPos = vec2(0.5, 0.5) + mix(vec2(0), (uMousePos-0.5), 0.0000);\nvec2 pos = mix(vec2(0.5, 0.5), mPos, floor(1.0000));\nfloat dist = ease(0, max(0.,1.-distance(uv * aspect, mPos * aspect) * 4. * (1. - 1.0000)));if (0 == 1) {\ndist = max(0., (0.5 - dist));\n}\nfloat time = uTime * 0.05;\nvec2 drift = vec2(time * 0.2) * 2.0 * 0.4700;\nfloat fbm = cheap_fbm(vec3(st - drift, time)) * dist;\nfbm = fbm / (1. + fbm);\nreturn fbm;\n}vec4 fogComposite(vec2 uv) {\nvec4 bg = texture(uBgTexture, uv);\nvec4 blur = texture(uTexture, uv);\nfloat aspectRatio = uResolution.x/uResolution.y;\nfloat fogNoise = fnoise(uv);\nfloat fogMask = clamp(fogNoise * 2., 0., 1.);vec3 grain = vec3(randFibo(uv + fogNoise));blur.rgb = chromatic_aberration(blur.rgb, uv, fogMask * 0.01 * 0.4500 * (0.5000 * 2.5));\nblur.rgb = Tonemap_ACES(blur.rgb * (0.5000 + 0.5)) + grain * 0.05;\nvec4 foggedBlur = vec4(blur.rgb * vec3(0.596078431372549, 0.592156862745098, 0.996078431372549), blur.a);\nfoggedBlur.rgb += (0.1300 * 0.25 * fogMask * vec3(0.596078431372549, 0.592156862745098, 0.996078431372549));\nfoggedBlur = mix(bg, foggedBlur, fogMask);\nreturn foggedBlur;\n}vec4 getColor(vec2 uv) {\nreturn fogComposite(uv);\n}void main() {\nvec2 uv = vTextureCoord;\nvec4 color = getColor(uv);\nfragColor = color;}"],"compiledVertexShaders":["#version 300 es\nprecision mediump float;in vec3 aVertexPosition;\nin vec2 aTextureCoord;uniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\nuniform mat4 uTextureMatrix;out vec2 vTextureCoord;\nout vec3 vVertexPosition;void main() {\ngl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);\nvTextureCoord = (uTextureMatrix * vec4(aTextureCoord, 0.0, 1.0)).xy;\n}"],"data":{"downSample":0.25,"depth":false,"uniforms":{},"isBackground":false,"passes":[{"prop":"pass","value":1,"downSample":0.25},{"prop":"pass","value":2,"downSample":0.25},{"prop":"pass","value":3,"downSample":0.25},{"prop":"pass","value":4,"includeBg":true}]},"id":"fog"}],"options":{"name":"XPIN-Logo常亮小字不亮","fps":60,"dpi":1.5,"scale":1,"includeLogo":false,"isProduction":false,"flatten":true},"version":"2.1.4","id":"YScF4AfoJwDY0oDDTq7O"}
