{"history":[{"breakpoints":[],"visible":true,"aspectRatio":1,"userDownsample":1,"layerType":"effect","type":"gradient","usesPingPong":false,"speed":0.25,"trackMouse":0,"trackAxes":"xy","mouseMomentum":0,"texture":false,"animating":false,"isMask":0,"compiledFragmentShaders":["#version 300 es\nprecision highp float;in vec2 vTextureCoord;uniform vec2 uMousePos;vec3 getColor(int index) {\nswitch(index) {\ncase 0: return vec3(0.11764705882352941, 0.1568627450980392, 0.6509803921568628);\ncase 1: return vec3(0, 0, 0);\ncase 2: return vec3(0, 0, 0);\ncase 3: return vec3(0, 0, 0);\ncase 4: return vec3(0, 0, 0);\ncase 5: return vec3(0, 0, 0);\ncase 6: return vec3(0, 0, 0);\ncase 7: return vec3(0, 0, 0);\ncase 8: return vec3(0, 0, 0);\ncase 9: return vec3(0, 0, 0);\ncase 10: return vec3(0, 0, 0);\ncase 11: return vec3(0, 0, 0);\ncase 12: return vec3(0, 0, 0);\ncase 13: return vec3(0, 0, 0);\ncase 14: return vec3(0, 0, 0);\ncase 15: return vec3(0, 0, 0);\ndefault: return vec3(0.0);\n}\n}const float PI = 3.14159265;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 getColor(vec2 uv) {return vec3(0.11764705882352941, 0.1568627450980392, 0.6509803921568628);\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(getColor(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"},{"breakpoints":[],"aspectRatio":1.6,"userDownsample":1,"effects":[],"anchorPoint":0,"mask":0,"maskDepthLayer":1,"states":{"appear":[],"scroll":[],"hover":[]},"layerType":"shape","width":200,"widthMode":1,"height":200,"heightMode":1,"left":0.16666666666666666,"top":0.27555555555555555,"compiledFragmentShaders":["#version 300 es\nprecision highp float;in vec2 vTextureCoord;\nin vec3 vVertexPosition;vec3 getColor(int index) {\nswitch(index) {\ncase 0: return vec3(0, 0, 0);\ncase 1: return vec3(0.1607843137254902, 0.1607843137254902, 0.1607843137254902);\ncase 2: return vec3(0.39215686274509803, 0.39215686274509803, 0.39215686274509803);\ncase 3: return vec3(0.615686274509804, 0.615686274509804, 0.615686274509804);\ncase 4: return vec3(0.8156862745098039, 0.8156862745098039, 0.8156862745098039);\ncase 5: return vec3(1, 1, 1);\ncase 6: return vec3(0, 0, 0);\ncase 7: return vec3(0, 0, 0);\ncase 8: return vec3(0, 0, 0);\ncase 9: return vec3(0, 0, 0);\ncase 10: return vec3(0, 0, 0);\ncase 11: return vec3(0, 0, 0);\ncase 12: return vec3(0, 0, 0);\ncase 13: return vec3(0, 0, 0);\ncase 14: return vec3(0, 0, 0);\ncase 15: return vec3(0, 0, 0);\ndefault: return vec3(0.0);\n}\n}float getStop(int index) {\nswitch(index) {\ncase 0: return 0.0000;\ncase 1: return 0.2000;\ncase 2: return 0.4000;\ncase 3: return 0.6000;\ncase 4: return 0.8000;\ncase 5: return 1.0000;\ncase 6: return 1.2000;\ncase 7: return 1.4000;\ncase 8: return 1.6000;\ncase 9: return 1.8000;\ncase 10: return 2.0000;\ncase 11: return 2.2000;\ncase 12: return 2.4000;\ncase 13: return 2.6000;\ncase 14: return 2.8000;\ncase 15: return 3.0000;\ndefault: return 0.0;\n}\n}uniform vec2 uArtboardResolution;uniform vec2 uMousePos;\nuniform sampler2D uBgTexture;const float TAU = 6.28318530718;\nconst float PI = 3.14159265;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.0, 0.0);\n}vec3 linear_from_srgb(vec3 rgb) {\nreturn pow(max(rgb, vec3(0.0)), vec3(2.2));\n}vec3 srgb_from_linear(vec3 lin) {\nreturn pow(max(lin, vec3(0.0)), vec3(1.0/2.2));\n}vec3 safeCbrt(vec3 v) {\nreturn sign(v) * pow(abs(v), vec3(1.0/3.0));\n}vec3 oklab_mix(vec3 lin1, vec3 lin2, float a) {\nconst mat3 kCONEtoLMS = mat3(\n0.4121656120, 0.2118591070, 0.0883097947,\n0.5362752080, 0.6807189584, 0.2818474174,\n0.0514575653, 0.1074065790, 0.6302613616);\nconst mat3 kLMStoCONE = mat3(\n4.0767245293, -1.2681437731, -0.0041119885,\n-3.3072168827, 2.6093323231, -0.7034763098,\n0.2307590544, -0.3411344290, 1.7068625689);vec3 lms1 = safeCbrt(kCONEtoLMS * lin1);\nvec3 lms2 = safeCbrt(kCONEtoLMS * lin2);\nvec3 lms = mix(lms1, lms2, a);\nlms *= 1.0 + 0.025 * a * (1.0 - a);\nreturn kLMStoCONE * (lms * lms * lms);\n}vec3 getGradientColor(float position) {\nposition = clamp(position, 0.0, 1.0);\nif (6 <= 1) return getColor(0);for (int i = 0; i < 15; i++) {\nif (i >= 6 - 1) break;\nfloat stopA = getStop(i);\nfloat stopB = getStop(i + 1);\nif (position <= stopB || i == 6 - 2) {\nfloat denom = max(stopB - stopA, 0.00001);\nfloat t = clamp((position - stopA) / denom, 0.0, 1.0);\nvec3 linA = linear_from_srgb(getColor(i));\nvec3 linB = linear_from_srgb(getColor(i + 1));\nvec3 mixed = oklab_mix(linA, linB, t);\nreturn srgb_from_linear(mixed);\n}\n}\nreturn getColor(min(6 - 1, 15));\n}vec3 getLinearGradientColor(vec2 p, vec2 halfSize, float angle) {\nvec2 d = vec2(cos(angle) * halfSize.x, sin(angle) * halfSize.y);\nfloat dd = max(dot(d, d), 0.00001);\nfloat pos = 0.5 + 0.5 * (dot(p, d) / dd);\nreturn getGradientColor(pos);\n}vec3 getFillColor(vec2 localPos, vec2 elementSize, float signedDist, float maxInset) {\nvec2 halfSize = elementSize * 0.5;\nvec2 p = localPos - halfSize;float angle = 0.0000 * TAU;\nreturn getLinearGradientColor(p, halfSize, angle);return getColor(0);\n}float sdBox(vec2 p, vec2 b) {\nvec2 d = abs(p) - b;\nreturn length(max(d, 0.0)) + min(max(d.x, d.y), 0.0);\n}float sdShape(vec2 canvasPosPx, vec2 elementPosPx, vec2 elementSizePx, float rotationTurns) {\nvec2 p = vec2(0.0);\nvec2 halfSize = vec2(0.0);halfSize = uArtboardResolution * 0.5;\np = canvasPosPx - halfSize;\nreturn sdBox(p, halfSize);elementSizePx = abs(elementSizePx);vec2 centerPx = elementPosPx + elementSizePx * 0.5;\nvec2 rel = canvasPosPx - centerPx;\nvec2 local = rotate2D(rel, -rotationTurns * TAU) + elementSizePx * 0.5;\np = local - elementSizePx * 0.5;\nhalfSize = elementSizePx * 0.5;\nreturn sdBox(p, halfSize);\n}vec4 sampleShape(vec2 canvasUV) {\nvec2 canvasPosPx = vec2(canvasUV.x * uArtboardResolution.x, (1.0 - canvasUV.y) * uArtboardResolution.y);float absWidth = 200.0000;\nfloat absHeight = 200.0000;if (1 == 2) {\nabsWidth = absHeight * 1.6000;\n} else if (1 == 2) {\nabsHeight = absWidth / 1.6000;\n}vec2 elementSizePx = vec2(absWidth, absHeight);\nvec2 elementPosPx = vec2(0.1667, 0.2756) * uArtboardResolution - getAnchorOffsets() * elementSizePx;float dist = sdShape(canvasPosPx, elementPosPx, elementSizePx, 0.0000);\nfloat aa = max(length(vec2(dFdx(dist), dFdy(dist))), 0.75);float fillAlpha = 1.0 - smoothstep(mix(0.0, -150., 0.0000), mix(aa, 150., 0.0000), dist);\nvec2 localPos;\nlocalPos = canvasPosPx;\nvec2 localSize;\nlocalSize = uArtboardResolution;\nvec2 centerPx;\ncenterPx = uArtboardResolution * 0.5;\nfloat centerDist = sdShape(centerPx, elementPosPx, elementSizePx, 0.0000);\nfloat maxInset = max(-centerDist, 0.00001);vec3 fillRgb = getFillColor(localPos, localSize, dist, maxInset);\nfloat finalFillAlpha = fillAlpha * 1.0000;\nvec4 fill = vec4(fillRgb * finalFillAlpha, finalFillAlpha);float strokeAlpha = 0.0;\nvec4 stroke = vec4(vec3(0, 0, 0) * strokeAlpha, strokeAlpha);\nvec4 col = stroke + fill * (1.0 - stroke.a);\nreturn col;\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 getCompositeOutput(vec2 uv) {\nvec4 background = vec4(0.0);background = texture(uBgTexture, vTextureCoord);vec4 color = sampleShape(uv);return getOutputByMode(color, background);\n}void main() {\nvec2 uv = vTextureCoord;\nvec2 pos = (uMousePos - 0.5) * 0.0000;uv -= pos;fragColor = getCompositeOutput(uv);\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":768,"_y":1024}},"aspectRatio":{"name":"uAspectRatio","type":"1f","value":1.6}}},"id":"shape"},{"breakpoints":[{"props":{"scale":0.992,"angle":0.162,"pos":{"type":"Vec2","_x":0.5070921985815603,"_y":0.4957446808510638}},"min":992,"name":"Desktop","max":null},{"min":576,"name":"Tablet","max":991,"props":{"scale":1.01,"angle":0.15660000000000002}},{"max":575,"name":"Mobile","min":0,"props":{"scale":1.352,"angle":0.1134,"pos":{"type":"Vec2","_x":0.57639985869713,"_y":0.47900268461754214}}}],"visible":true,"aspectRatio":1,"userDownsample":1,"layerType":"effect","type":"wisps","usesPingPong":false,"speed":0.11,"trackMouse":0,"trackAxes":"x","mouseMomentum":1,"texture":false,"animating":true,"isMask":0,"compiledFragmentShaders":["#version 300 es\nprecision highp float;in vec3 vVertexPosition;\nin vec2 vTextureCoord;\nuniform sampler2D uTexture;\nuniform float uScale;\nuniform float uTime;\nuniform float uAngle;\nuniform vec2 uPos;\nuniform vec2 uMousePos;\nuniform vec2 uResolution;\nvec3 blend (int blendMode, vec3 src, vec3 dst) {\nreturn vec3((src.x == 1.0) ? 1.0 : min(1.0, dst.x / (1.0 - src.x)), (src.y == 1.0) ? 1.0 : min(1.0, dst.y / (1.0 - src.y)), (src.z == 1.0) ? 1.0 : min(1.0, dst.z / (1.0 - src.z)));\n}out vec4 fragColor;\nconst float PI = 3.14159265359;\nmat2 rot(float a) {\nreturn mat2(cos(a), -sin(a), sin(a), cos(a));\n}vec2 hash(vec2 p) {\np = vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)));\nreturn -1.0 + 2.0 * fract(sin(p) * 43758.5453123);\n}float luma(vec3 color) {\nreturn dot(color, vec3(0.299, 0.587, 0.114));\n}float voronoi_additive_grid(vec2 st, float radius, vec2 mouse_pos, float scale) {\nvec2 i_st = floor(st);\nvec2 f_st = fract(st);float total_contribution = 0.0;for (int y = -2; y <= 2; y++) {\nfor (int x = -2; x <= 2; x++) {\nvec2 neighbor = vec2(float(x), float(y));\nvec2 cell_id = i_st + neighbor;\nvec2 point = vec2(0.5);vec2 starAbsPos = cell_id + point;\nvec2 dirToMouse = mouse_pos - starAbsPos;\nfloat distToMouse = length(dirToMouse);float attractStrength = 0.5200 * exp(-distToMouse * mix(2.0 + uScale * 2., 0.5, 0.5000)) * 2.;\nstarAbsPos += dirToMouse * attractStrength;vec2 diff = starAbsPos - st;\nfloat dist = length(diff);float contribution = radius / max(dist, radius * 0.05);float shimmer_phase = dot(point, vec2(1.0)) * 10. + hash(cell_id).x * 5.0 + uTime * 0.5;\nfloat shimmer = mix(1., (sin(shimmer_phase) + 1.), 1.0000);\ntotal_contribution += mix(contribution*contribution, contribution * 2., 0.6000) * shimmer;\n}\n}return total_contribution;\n}vec4 gridStyle() {\nvec2 uv = vTextureCoord;\nvec4 bg = texture(uTexture, uv);vec4 color = vec4(0.0);\nvec2 aspectRatio = vec2(uResolution.x / uResolution.y, 1.0);vec2 mPos = mix(vec2(0.0), (uMousePos - 0.5), 0.0000);uv -= uPos;\nuv *= aspectRatio;\nuv = uv * rot(uAngle * 2.0 * PI);\nuv *= 40.0 * uScale;\nuv *= mix(vec2(1.0), vec2(1.0, 0.0), 0.6400);\nuv /= aspectRatio;mPos = mPos * rot(uAngle * 2.0 * PI);vec2 mouseGrid = uMousePos;\nmouseGrid -= uPos;\nmouseGrid *= aspectRatio;\nmouseGrid = mouseGrid * rot(uAngle * 2.0 * PI);\nmouseGrid *= 40.0 * uScale;\nmouseGrid *= mix(vec2(1.0), vec2(1.0, 0.0), 0.6400);\nmouseGrid /= aspectRatio;vec2 movementOffset = vec2(0.0, uTime * 0.8500 * -0.05);\nvec2 mouseGrid1 = mouseGrid - (mPos * 38.0 * uScale) + movementOffset;\nvec2 mouseGrid2 = mouseGrid - (mPos * 48.0 * uScale) + movementOffset;vec2 st1 = uv - (mPos * 38.0 * uScale);vec2 mouse1 = st1 + vec2(0.0, uTime * 0.8500 * -0.05);float radius1 = 0.2900;float pass1 = voronoi_additive_grid(mouse1 * aspectRatio, radius1, mouseGrid1 * aspectRatio, 38.0 * uScale);\npass1 *= 0.02;color.rgb = pass1 * vec3(0.10588235294117647, 0.3137254901960784, 0.3764705882352941) * mix(1.0, bg.r, 0.0000);\ncolor.rgb = clamp(color.rgb, 0.0, 1.0);color.rgb = blend(8, bg.rgb, color.rgb);color = vec4(color.rgb, max(bg.a, luma(color.rgb)));\nreturn color;\n}void main() {\nvec4 color;color = gridStyle();\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":{"depth":false,"uniforms":{"scale":{"name":"uScale","type":"1f","value":0},"angle":{"name":"uAngle","type":"1f","value":0},"pos":{"name":"uPos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}}},"isBackground":false},"id":"wisps"},{"breakpoints":[{"name":"Desktop","props":{"amount":0.216,"pos":{"type":"Vec2","_x":0.8487316826055799,"_y":0.3890849334025255}},"max":null,"min":992},{"min":576,"max":991,"props":{"pos":{"type":"Vec2","_x":0.5958921764327403,"_y":0.464640488958081},"amount":0.158},"name":"Tablet"},{"props":{"amount":0.162},"max":575,"name":"Mobile","min":0}],"visible":true,"aspectRatio":1,"userDownsample":1,"layerType":"effect","type":"diffuse","usesPingPong":false,"speed":1,"trackMouse":0,"trackAxes":"xy","mouseMomentum":0,"texture":false,"animating":true,"isMask":0,"compiledFragmentShaders":["#version 300 es\nprecision highp float;\nprecision highp int;in vec2 vTextureCoord;uniform sampler2D uTexture;uniform float uAmount;\nuniform float uTime;\nuniform vec2 uPos;uniform vec2 uMousePos;\nuniform vec2 uResolution;float ease (int easingFunc, float t) {\nreturn t * t * t;\n}uvec2 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}const float MAX_ITERATIONS = 24.;\nconst float PI = 3.14159265;\nconst float TWOPI = 6.2831853;out vec4 fragColor;void main() {\nvec2 uv = vTextureCoord;\nvec2 pos = uPos + mix(vec2(0), (uMousePos-0.5), 0.0000);\nfloat aspectRatio = uResolution.x/uResolution.y;\nfloat delta = fract(floor(uTime)/20.);\nfloat angle, rotation, amp;\nfloat inner = distance(uv * vec2(aspectRatio, 1), pos * vec2(aspectRatio, 1));\nfloat outer = max(0., 1.-distance(uv * vec2(aspectRatio, 1), pos * vec2(aspectRatio, 1)));\nfloat amount = uAmount * 2.;vec2 mPos = uPos + mix(vec2(0), (uMousePos-0.5), 0.0000);\npos = uPos;\nfloat dist = ease(4, max(0.,1.-distance(uv * vec2(aspectRatio, 1), mPos * vec2(aspectRatio, 1)) * 4. * (1. - 0.8400)));amount *= dist;vec4 col;\nif(amount <= 0.001) {\ncol = texture(uTexture, uv);\n} else {\nvec4 result = vec4(0);\nfloat threshold = max(1. - 0.0000, 2./MAX_ITERATIONS);\nconst float invMaxIterations = 1.0 / float(MAX_ITERATIONS);vec2 dir = vec2(0.5000 / aspectRatio, 1.-0.5000) * amount * 0.4;\nfloat iterations = 0.0;\nfor(float i = 1.; i <= MAX_ITERATIONS; i++) {\nfloat th = i * invMaxIterations;\nif(th > threshold) break;float random1 = randFibo(uv + th + delta);\nfloat random2 = randFibo(uv + th * 2. + delta);\nfloat random3 = randFibo(uv + th * 3. + delta);\nvec2 ranPoint = vec2(random1 * 2. - 1., random2 * 2. - 1.) * mix(1., random3, 0.8);\nresult += texture(uTexture, uv + ranPoint * dir);\niterations += 1.0;\n}result /= max(1.0, iterations);\ncol = result;\n}\nfragColor = col;}"],"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":{"depth":false,"uniforms":{"pos":{"name":"uPos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}},"amount":{"name":"uAmount","type":"1f","value":0.25}},"isBackground":false},"id":"diffuse"},{"breakpoints":[{"props":{"radius":0.624,"angle":-0.0459,"pos":{"type":"Vec2","_x":0.5,"_y":0.5}},"max":null,"name":"Desktop","min":992},{"min":576,"name":"Tablet","max":991,"props":{"radius":0.42,"angle":0.32130000000000003,"pos":{"type":"Vec2","_x":0.5019753086419753,"_y":0.5133333333333333}}},{"min":0,"props":{"radius":0.502,"angle":-0.08370000000000001,"pos":{"type":"Vec2","_x":0.48310695832729733,"_y":0.6915411173885749}},"name":"Mobile","max":575}],"visible":true,"aspectRatio":1,"userDownsample":1,"layerType":"effect","type":"circle","usesPingPong":false,"trackMouse":0,"trackAxes":"xy","mouseMomentum":0,"texture":false,"animating":false,"isMask":0,"compiledFragmentShaders":["#version 300 es\nprecision highp float;\nin vec3 vVertexPosition;\nin vec2 vTextureCoord;\nuniform sampler2D uTexture;\nuniform float uRadius;\nuniform float uAngle;\nuniform vec2 uPos;\nuniform vec2 uResolution;\nvec3 blend (int blendMode, vec3 src, vec3 dst) {\nreturn src * dst;\n}out vec4 fragColor;mat2 rot(float a) {\nreturn mat2(cos(a),-sin(a),sin(a),cos(a));\n}float luma(vec3 color) {\nreturn dot(color, vec3(0.299, 0.587, 0.114));\n}\nvoid main() {\nvec2 uv = vTextureCoord;\nvec4 bg = texture(uTexture, uv);\nfloat lum = luma(bg.rgb);\nfloat displacement = (lum - 0.5) * 0.0000 * 0.5;\nvec2 aspectRatio = vec2(uResolution.x/uResolution.y, 1.0);\nvec2 skew = vec2(max(0.5000, 0.001), max(1.0 - 0.5000, 0.001));\nfloat halfRadius = uRadius * 0.5;\nfloat falloffAmount = max(0.7400, 0.001);\nfloat innerEdge = halfRadius - falloffAmount * halfRadius * 0.5;\nfloat outerEdge = halfRadius + falloffAmount * halfRadius * 0.5;\nvec2 pos = uPos;\nconst float TWO_PI = 6.28318530718;\nvec2 scaledUV = uv * aspectRatio * rot(uAngle * TWO_PI) * skew;\nvec2 scaledPos = pos * aspectRatio * rot(uAngle * TWO_PI) * skew;\nfloat radius = distance(scaledUV, scaledPos);\nfloat falloff = smoothstep(innerEdge + displacement, outerEdge + displacement, radius);\nfalloff = (1.0 - falloff) * 0.9000;\nvec3 circle = vec3(0.25882352941176473, 0.23137254901960785, 0.49019607843137253) * falloff;vec3 blended = blend(3, vec3(0.25882352941176473, 0.23137254901960785, 0.49019607843137253), bg.rgb);\ncircle = mix(bg.rgb, blended, falloff);\nvec4 color = vec4(circle, max(bg.a, falloff));\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":{"depth":false,"uniforms":{"radius":{"name":"uRadius","type":"1f","value":0.5},"angle":{"name":"uAngle","type":"1f","value":0},"pos":{"name":"uPos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}}},"isBackground":false},"id":"circle"},{"breakpoints":[{"name":"Desktop","max":null,"min":992,"props":{"amount":0.42,"angle":0.46980000000000005,"pos":{"type":"Vec2","_x":0.48847517730496454,"_y":0.4446808510638298}}},{"props":{"pos":{"type":"Vec2","_x":0.47267270816916207,"_y":0.4831993695823483},"amount":0.246,"angle":0.3699},"min":576,"name":"Tablet","max":991},{"min":0,"max":575,"props":{"amount":0.178,"angle":-0.21330000000000002},"name":"Mobile"}],"visible":true,"aspectRatio":1,"userDownsample":1,"layerType":"effect","type":"stretch","usesPingPong":false,"trackMouse":0,"trackAxes":"xy","mouseMomentum":0,"texture":false,"animating":false,"isMask":0,"compiledFragmentShaders":["#version 300 es\nprecision mediump float;\nin vec3 vVertexPosition;\nin vec2 vTextureCoord;\nuniform sampler2D uTexture;\nuniform float uAmount;\nuniform vec2 uPos;\nuniform float uAngle;\nuniform vec2 uMousePos;\nuniform vec2 uResolution;\nfloat ease (int easingFunc, float t) {\nreturn t;\n}out vec4 fragColor;vec2 rotate(vec2 v, float angle) {\nfloat c = cos(angle);\nfloat s = sin(angle);\nreturn vec2(v.x * c - v.y * s, v.x * s + v.y * c);\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}void main() {\nvec2 uv = vTextureCoord;\nfloat angle = (uAngle - 0.25) * -6.28318530718;\nfloat stretchX = vec2(1, 1).x * 4. * uAmount;\nfloat stretchY = vec2(1, 1).y * 4. * uAmount;vec2 pos = uPos + (uMousePos - 0.5) * 0.0000;\nvec2 offset = uv - pos;\nvec2 rotatedOffset = rotate(offset, -angle);\nvec2 stretchedOffset = rotatedOffset;\nif (2 == 1) {\nif (rotatedOffset.x > 0.0) {\nfloat stretchIntensity = rotatedOffset.x;\nfloat easedIntensity = ease(0, stretchIntensity);\nstretchedOffset.x = rotatedOffset.x / (1.0 + stretchX * easedIntensity);\nstretchedOffset.y = rotatedOffset.y / (1.0 + stretchY * easedIntensity * easedIntensity);\n}\n}\nelse if (2 == 2) {\nfloat stretchIntensity = abs(rotatedOffset.x);\nfloat easedIntensity = ease(0, stretchIntensity);\nstretchedOffset.x = sign(rotatedOffset.x) * stretchIntensity / (1.0 + stretchX * easedIntensity);\nstretchedOffset.y = rotatedOffset.y / (1.0 + stretchY * easedIntensity * easedIntensity);\n}\nvec2 finalOffset = rotate(stretchedOffset, angle);\nvec2 st = pos + finalOffset;\nvec4 color = texture(uTexture, st);color.rgb = chromatic_aberration(color.rgb, st, length(st - uv) * 0.05 * 0.0000);\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":{"depth":false,"uniforms":{"pos":{"name":"uPos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}},"amount":{"name":"uAmount","type":"1f","value":0.5},"angle":{"name":"uAngle","type":"1f","value":0.5}},"isBackground":false},"id":"stretch"}],"options":{"name":"phone","fps":60,"dpi":1.5,"scale":1,"includeLogo":false,"isProduction":false},"version":"2.0.2","id":"Od4H9tQdPxc822S0sZ3I"}