{"layers":[{"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"},{"breakpoints":[{"min":992,"name":"Desktop","max":null,"props":{"left":0.15,"top":0.5,"width":1400.4484304932735,"rotation":-0.25}},{"props":{"rotation":0.5,"width":1148,"left":0.5,"top":0.6},"min":576,"name":"Tablet","max":991},{"props":{"width":620},"min":0,"name":"Mobile","max":575}],"aspectRatio":0.5605381165919282,"userDownsample":1,"states":{"appear":[],"scroll":[],"hover":[],"mousemove":[]},"effects":[],"anchorPoint":8,"mask":0,"maskInvert":0,"maskDepth":0,"maskDepthLayer":0,"layerType":"image","width":1400.4484304932735,"widthMode":1,"height":2498.4,"heightMode":2,"left":0.15,"top":0.5,"src":"/assets/us-textures/remix_download__83_-7f61c2.jfif","imageNaturalSize":{"type":"Vec2","_x":375,"_y":669},"compiledFragmentShaders":["#version 300 es\nprecision highp float;in vec2 vTextureCoord;\nin vec3 vVertexPosition;uniform sampler2D uSourceImage;\nuniform float uWidth;\nuniform float uLeft;\nuniform float uTop;\nuniform float uRotation;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 = 2498.4000 * uArtboardResolution.y;\nabsWidth = absWidth;\nabsHeight = (1 != 2 && 2 == 2) ? absWidth / 0.5605 : absHeight;vec2 elementSizePx = vec2(absWidth, absHeight);\nvec2 elementPosPx = vec2(uLeft, uTop) * uArtboardResolution - getAnchorOffsets() * elementSizePx;vec2 centerPos = elementPosPx + (elementSizePx * 0.5);\nvec2 relPos = canvasPos - centerPos + mouseOffset;\nvec2 unrotatedRelPos = rotate2D(relPos, uRotation * -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":1440,"_y":900}},"aspectRatio":{"name":"uAspectRatio","type":"1f","value":0.5605381165919282},"rotation":{"name":"uRotation","type":"1f","value":0},"width":{"name":"uWidth","type":"1f","value":512},"left":{"name":"uLeft","type":"1f","value":0},"top":{"name":"uTop","type":"1f","value":0}},"elementOpacity":1},"id":"image"},{"breakpoints":[],"visible":true,"aspectRatio":1,"userDownsample":1,"layerType":"effect","type":"bokeh_v2","usesPingPong":false,"trackMouse":0,"mouseMomentum":0,"mouseSpring":0,"trackAxes":"xy","texture":false,"animating":false,"isMask":0,"compiledFragmentShaders":["#version 300 es\nprecision highp float;\nin vec3 vVertexPosition;\nin vec2 vTextureCoord;\nuniform sampler2D uTexture;uniform vec2 uMousePos;\nuniform vec2 uResolution;float ease (int easingFunc, float t) {\nreturn 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 PI = 3.14159265359;\nconst float TAU = 6.28318530718;\nconst int SAMPLES = 128;vec2 getDiskSample(int index) {\nswitch(index) {\ncase 0: return vec2(0.00000000000000000, 0.00000000000000000);\ncase 1: return vec2(-0.06492170970003651, 0.05947360417967210);\ncase 2: return vec2(0.01088577575710092, -0.12403780010609010);\ncase 3: return vec2(0.09278605643407495, 0.12102297998686459);\ncase 4: return vec2(-0.17339837612340661, -0.03067173121540595);\ncase 5: return vec2(0.16611416144540911, -0.10566823216922469);\ncase 6: return vec2(-0.05598770426615698, 0.20827146918860992);\ncase 7: return vec2(-0.10736617767533554, -0.20672704173102546);\ncase 8: return vec2(0.23391835821225004, 0.08542660924591633);\ncase 9: return vec2(-0.24415226479787791, 0.10078250569683228);\ncase 10: return vec2(0.11800848331026967, -0.25217727437612419);\ncase 11: return vec2(0.08739463852285076, 0.27862787905541259);\ncase 12: return vec2(-0.26388694504622179, -0.15292787858374876);\ncase 13: return vec2(0.31004678777075806, -0.06816291654179785);\ncase 14: return vec2(-0.18946751257952676, 0.26949803980710624);\ncase 15: return vec2(-0.04382178150217966, -0.33816966338425020);\ncase 16: return vec2(0.26929436042810040, 0.22696157206355075);\ncase 17: return vec2(-0.36270920969676085, 0.01499916456291074);\ncase 18: return vec2(0.26477875061803019, -0.26349022172005782);\ncase 19: return vec2(-0.01772733707341532, 0.38337000825013928);\ncase 20: return vec2(-0.25227897946338351, -0.30231453192136865);\ncase 21: return vec2(0.39987003894541051, 0.05380194818233323);\ncase 22: return vec2(-0.33898829192538021, 0.23585922410715243);\ncase 23: return vec2(0.09267588111279028, -0.41195358319036235);\ncase 24: return vec2(0.21444957012487900, 0.37424309412621304);\ncase 25: return vec2(-0.41939960956635097, -0.13379991445436534);\ncase 26: return vec2(0.40754705152412823, -0.18829707483359587);\ncase 27: return vec2(-0.17662128929171092, 0.42202754145947524);\ncase 28: return vec2(-0.15768181270533427, -0.43839560844955022);\ncase 29: return vec2(0.41970135065450231, 0.22058326729190977);\ncase 30: return vec2(-0.46631434426891061, 0.12291896462279359);\ncase 31: return vec2(0.26512640302868651, -0.41233247257092226);\ncase 32: return vec2(0.08435919923763628, 0.49086203867060324);\ncase 33: return vec2(-0.39988181545685969, -0.30969095426779603);\ncase 34: return vec2(0.51163381878338732, -0.04238781605598677);\ncase 35: return vec2(-0.35372005921181171, 0.38236101941562606);\ncase 36: return vec2(0.00257705012991769, -0.52826425797557830);\ncase 37: return vec2(0.35983305850647074, 0.39666342840276486);\ncase 38: return vec2(-0.54043032826921311, -0.05008696135406215);\ncase 39: return vec2(0.43798137039652346, -0.33241224493230115);\ncase 40: return vec2(-0.09966630062891649, 0.54785413012844153);\ncase 41: return vec2(-0.30026367570830820, -0.47714901489417016);\ncase 42: return vec2(0.55030533901612588, 0.15081587847167832);\ncase 43: return vec2(-0.51366062585557248, 0.26360215245516283);\ncase 44: return vec2(0.20301693359891926, -0.54760331992229694);\ncase 45: return vec2(0.22269060038372687, 0.54703391650158295);\ncase 46: return vec2(-0.53961887046647239, -0.25573545300429140);\ncase 47: return vec2(0.57681429169430498, -0.17783801103396046);\ncase 48: return vec2(-0.30842674514668511, 0.52627556102676454);\ncase 49: return vec2(-0.12939693366378796, -0.60257895316607213);\ncase 50: return vec2(0.50755064718924692, 0.36054020547309679);\ncase 51: return vec2(-0.62394081079747366, 0.07776054160493884);\ncase 52: return vec2(0.41152421715480708, -0.48347553597769721);\ncase 53: return vec2(0.02335930194178823, 0.64055214947035111);\ncase 54: return vec2(-0.45413579302740337, -0.46083113247062885);\ncase 55: return vec2(0.65210800648236278, 0.03334272077808673);\ncase 56: return vec2(-0.50792228220673430, 0.41967068323828094);\ncase 57: return vec2(0.09185189362867616, -0.65834921945203628);\ncase 58: return vec2(0.38027224255975223, 0.55227296207523335);\ncase 59: return vec2(-0.65906510929067352, -0.15164934157768004);\ncase 60: return vec2(0.59337734669208275, -0.33618388346622341);\ncase 61: return vec2(-0.21219553303106065, 0.65409576731234675);\ncase 62: return vec2(-0.28769854139809309, -0.63075328323851743);\ncase 63: return vec2(0.64333391998429934, 0.27293508462799543);\ncase 64: return vec2(-0.66394691865240341, 0.23515637397215214);\ncase 65: return vec2(0.33330174341254065, -0.62672634923897119);\ncase 66: return vec2(0.17894202910280943, 0.69253711611531232);\ncase 67: return vec2(-0.60427485070261500, -0.39272350295032343);\ncase 68: return vec2(0.71613961875617960, -0.11948150230680118);\ncase 69: return vec2(-0.45062780872745783, 0.57603671665243883);\ncase 70: return vec2(-0.05723860737265316, -0.73441092090243865);\ncase 71: return vec2(0.54212473499086711, 0.50644680728612268);\ncase 72: return vec2(-0.74705180988275366, -0.00728891175848209);\ncase 73: return vec2(0.55962259303437345, -0.50270670000876372);\ncase 74: return vec2(-0.07357359665334715, 0.75381054432012551);\ncase 75: return vec2(-0.45800443518059281, -0.60961240652738979);\ncase 76: return vec2(0.75448563804104352, 0.14106278322614005);\ncase 77: return vec2(-0.65589373826126673, 0.40829233266847215);\ncase 78: return vec2(0.20918336658817419, -0.74892822215051780);\ncase 79: return vec2(0.35389541858369788, 0.69796929264879770);\ncase 80: return vec2(-0.73704396146428142, -0.27734678225775183);\ncase 81: return vec2(0.73537176785946590, -0.29518695733285677);\ncase 82: return vec2(-0.34495416194597228, 0.71879450532459843);\ncase 83: return vec2(-0.23258561253207069, -0.76766840859596397);\ncase 84: return vec2(0.69419845682790271, 0.41140162036072836);\ncase 85: return vec2(-0.79446529063813598, 0.16655218597614618);\ncase 86: return vec2(0.47608562807331040, -0.66333184863136807);\ncase 87: return vec2(0.09758595996888125, 0.81541129809937918);\ncase 88: return vec2(-0.62632811775023856, -0.53840842448006165);\ncase 89: return vec2(0.83020175679399022, -0.02622067192745530);\ncase 90: return vec2(-0.59778342427541020, 0.58337757607420615);\ncase 91: return vec2(0.04697984646292885, -0.83858168988803161);\ncase 92: return vec2(0.53472637768626496, 0.65364057063509251);\ncase 93: return vec2(-0.84034866507833506, -0.12142633017265982);\ncase 94: return vec2(0.70543158849422050, -0.48067498842477380);\ncase 95: return vec2(-0.19650900365897886, 0.83535520589033696);\ncase 96: return vec2(-0.42157616745420784, -0.75263509189131594);\ncase 97: return vec2(0.82351074327800877, 0.27160272495287235);\ncase 98: return vec2(-0.79476150033318194, 0.35783247486606046);\ncase 99: return vec2(0.34607230820791979, -0.80478308751908967);\ncase 100: return vec2(0.28989332348405228, 0.83135772050843615);\ncase 101: return vec2(-0.77919940439516633, -0.41927798013290246);\ncase 102: return vec2(0.86201155143017782, -0.21825159706069167);\ncase 103: return vec2(-0.49058092432024442, 0.74684668379540609);\ncase 104: return vec2(-0.14343986089414099, -0.88635577320524417);\ncase 105: return vec2(0.70787169315152809, 0.55934886645713500);\ncase 106: return vec2(-0.90407188209370859, 0.06602619453011586);\ncase 107: return vec2(0.62496165277805438, -0.66248041246365019);\ncase 108: return vec2(-0.01339032038611396, 0.91489343731690342);\ncase 109: return vec2(-0.61093695207632348, -0.68681677389080220);\ncase 110: return vec2(0.91860898817335790, 0.09418442090756367);\ncase 111: return vec2(-0.74433478628701588, 0.55356195877438330);\ncase 112: return vec2(0.17570975319046836, -0.91506455340446358);\ncase 113: return vec2(0.49073052015231655, 0.79696458443214335);\ncase 114: return vec2(-0.90416562838801451, -0.25730419093801210);\ncase 115: return vec2(0.84418847731543434, -0.42286958153182719);\ncase 116: return vec2(-0.33829533812835338, 0.88587869959841203);\ncase 117: return vec2(-0.35045489392373419, -0.88552702472084421);\ncase 118: return vec2(0.86023224982555069, 0.41800617044562144);\ncase 119: return vec2(-0.92054359024488175, 0.27400751561609027);\ncase 120: return vec2(0.49576076837992039, -0.82731724185761146);\ncase 121: return vec2(0.19408989388749356, 0.94884857022328517);\ncase 122: return vec2(-0.78728707267001474, -0.57089009390180012);\ncase 123: return vec2(0.97010326022031101, -0.11130155705535714);\ncase 124: return vec2(-0.64273776195212984, 0.74035699458996584);\ncase 125: return vec2(-0.02627445054774453, -0.98402332356018363);\ncase 126: return vec2(0.68680300438457664, 0.71066575773343044);\ncase 127: return vec2(-0.99038182952039266, -0.06033204610194891);\ncase 128: return vec2(0.77406005094297514, -0.62696020571457534);\ndefault: return vec2(0.0);\n}\n}vec4 bokehBlur(vec2 uv, float blurRadius, float intensity) {\nfloat aspectRatio = uResolution.x / uResolution.y;\nvec3 accumulatedColor = vec3(0.0);\nvec3 accumulatedWeights = vec3(0.0);\nvec2 pixelSize = vec2(1.0 / aspectRatio, 1.0) * blurRadius * 0.075;\nfloat accumulatedAlpha = 0.;\nfloat noiseAngle = randFibo(uv);mat2 rotationMatrix = mat2(\ncos(noiseAngle), -sin(noiseAngle),\nsin(noiseAngle), cos(noiseAngle)\n);\nfor (int i = 0; i < 128; i++) {\nvec2 sampleOffset = rotationMatrix * getDiskSample(i) * pixelSize;\nvec4 colorSample = texture(uTexture, uv + sampleOffset);\nvec3 bokehWeight = vec3(5.0) + pow(colorSample.rgb, vec3(9.0)) * intensity;\naccumulatedAlpha += colorSample.a;\naccumulatedColor += colorSample.rgb * bokehWeight;\naccumulatedWeights += bokehWeight;\n}return vec4(accumulatedColor / accumulatedWeights, accumulatedAlpha / 128.0);\n}out vec4 fragColor;float getStrength(vec2 uv) {\nvec2 mPos = vec2(0.5, 0.5) + mix(vec2(0), (uMousePos-0.5), 0.0000);\nfloat aspectRatio = uResolution.x/uResolution.y;\nfloat dist = ease(0, max(0.,1.-distance(uv * vec2(aspectRatio, 1), mPos * vec2(aspectRatio, 1)) * 4. * (1. - 1.0000)));return dist;\n}vec4 blurPass(vec2 uv) {\nfloat strength = getStrength(uv);\nreturn bokehBlur(uv, 1.0000 * strength, 150.0);\n}vec4 getColor(vec2 uv) {\nreturn blurPass(uv);\n}void main() {\nvec2 uv = vTextureCoord;\nvec4 color = vec4(0);if(1.0000 == 0.) {\ncolor = texture(uTexture, uv);\nfragColor = color;return;\n}\ncolor = getColor(uv);\nfragColor = color;}","#version 300 es\nprecision highp float;\nin vec3 vVertexPosition;\nin vec2 vTextureCoord;\nuniform sampler2D uTexture;\nuniform sampler2D uBgTexture;\nuniform sampler2D uBlueNoise;uniform vec2 uMousePos;\nuniform vec2 uResolution;float ease (int easingFunc, float t) {\nreturn t;\n}const float PI = 3.14159265359;\nconst float TAU = 6.28318530718;\nconst int SAMPLES = 128;float getBlueNoiseOffset(vec2 st) {\nivec2 texSize = ivec2(512, 512);\nvec4 blueNoise = texelFetch(uBlueNoise, ivec2(fract(st * (uResolution)/vec2(texSize) * vec2(texSize.x/texSize.y, 1.0)) * vec2(texSize)) % texSize, 0);\nreturn mod((blueNoise.r - 0.5) * TAU, TAU);\n}out vec4 fragColor;float getStrength(vec2 uv) {\nvec2 mPos = vec2(0.5, 0.5) + mix(vec2(0), (uMousePos-0.5), 0.0000);\nfloat aspectRatio = uResolution.x/uResolution.y;\nfloat dist = ease(0, max(0.,1.-distance(uv * vec2(aspectRatio, 1), mPos * vec2(aspectRatio, 1)) * 4. * (1. - 1.0000)));return dist;\n}vec4 composite(vec2 uv) {\nvec4 color = vec4(0.);\nfloat strength = getStrength(uv);\nvec4 bg = texture(uBgTexture, uv);if(1.0000 <= 0.001) {\nreturn bg;\n}if(strength <= 0.001) {\nreturn bg;\n}\nfloat blueNoiseOffset = getBlueNoiseOffset(uv);\nfloat blueNoiseStrength = 0.005 * 1.0000 * strength;\nvec2 offset = vec2(cos(blueNoiseOffset), sin(blueNoiseOffset)) * min(blueNoiseStrength, 0.01);vec2 pixelSize = vec2(1.0) / uResolution;\nvec4 s1 = texture(uTexture, uv + offset);\nvec4 s2 = texture(uTexture, uv + offset + pixelSize);\nvec4 s3 = texture(uTexture, uv + offset - pixelSize);\nvec4 s4 = texture(uTexture, uv + offset + vec2(-pixelSize.x, pixelSize.y));\nvec4 s5 = texture(uTexture, uv + offset + vec2(pixelSize.x, -pixelSize.y));return (s1 + s2 + s3 + s4 + s5) * 0.2;\n}vec4 getColor(vec2 uv) {\nreturn composite(uv);\n}void main() {\nvec2 uv = vTextureCoord;\nvec4 color = vec4(0);if(1.0000 == 0.) {\ncolor = texture(uTexture, uv);\nfragColor = color;return;\n}\ncolor = 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.5,"depth":false,"uniforms":{},"isBackground":false,"passes":[{"prop":"pass","value":1,"includeBg":true}],"texture":{"src":"/assets/us-textures/blue_noise_med-3e976e.png","sampler":"uBlueNoise"}},"id":"bokeh"},{"breakpoints":[{"max":null,"min":992,"name":"Desktop","props":{"pos":{"type":"Vec2","_x":-8.036,"_y":0.4897828863346105}}},{"min":576,"name":"Tablet","max":991,"props":{"pos":{"type":"Vec2","_x":-2.636,"_y":4.76}}}],"visible":true,"aspectRatio":1,"userDownsample":1,"layerType":"effect","type":"blinds","usesPingPong":false,"speed":0.63,"trackMouse":0,"mouseMomentum":0,"mouseSpring":0,"trackAxes":"xy","texture":false,"animating":true,"isMask":0,"compiledFragmentShaders":["#version 300 es\nprecision highp float;\nin vec2 vTextureCoord;uniform sampler2D uTexture;\nuniform vec2 uPos;\nuniform float uTime;uniform vec2 uMousePos;\nuniform vec2 uResolution;float ease (int easingFunc, float t) {\nreturn t;\n}const float STEPS = 8.0;\nconst float PI = 3.14159265359;\nconst vec3 CH_R = vec3(1, 0, 0);\nconst vec3 CH_G = vec3(0, 1, 0);\nconst vec3 CH_B = vec3(0, 0, 1);mat2 rot(float a) {\nreturn mat2(cos(a),-sin(a),sin(a),cos(a));\n}vec2 scaleAspect(vec2 st) {\nreturn st * vec2(uResolution.x / uResolution.y, 1.0);\n}vec2 unscaleAspect(vec2 st) {\nreturn st * vec2(uResolution.y / uResolution.x, 1.0);\n}vec2 scaleAspect(vec2 st, float aspectRatio) {\nreturn st * vec2(aspectRatio, 1.0);\n}struct StructFunc {\nvec2 st;\nvec3 distort;\n};float smoothSegment(float s) {\nreturn mix(s, smoothstep(0.0, 0.5, s) - smoothstep(0.5, 1.0, s), 1.0000);\n}vec3 channelDistort(float segment) {\nreturn mix(mix(CH_R, CH_G, segment * 2.0), mix(CH_G, CH_B, (segment - 0.5) * 2.0), step(0.5, segment));\n}StructFunc applyStyle(vec2 st, vec2 pos, vec3 d, float dist, float amount, float angle) {\nst = rot(angle * 2. * PI) * (st - pos) + pos;\nst = unscaleAspect(st);\nreturn StructFunc(st, d);\n}StructFunc style5(vec2 st, vec2 pos, float divisions, float dist, float amount, float angle) {\nvec2 diff = st - pos;\nvec2 rotatedDiff = vec2(\ndiff.x * cos(-PI / 4.) - diff.y * sin(-PI / 4.),\ndiff.x * sin(-PI / 4.) + diff.y * cos(-PI / 4.)\n);\nfloat manhattanDist = abs(rotatedDiff.x) + abs(rotatedDiff.y);\nfloat segment = smoothSegment(fract(manhattanDist * divisions - uTime * 0.05));\nvec3 d = channelDistort(segment);\nst -= pow(d.r, dist) / 10. * amount * normalize(diff);\nst += pow(d.b, dist) / 10. * amount * normalize(diff);\nreturn applyStyle(st, pos, d, dist, amount, angle);\n}StructFunc getStyle(vec2 st, vec2 pos, float divisions, float dist, float amount, float angle) {\nreturn style5(st, pos, divisions, dist, amount, angle);\n}vec2 caUV;\nvec3 caDistort;\nfloat caDist;\nfloat caAmount;out vec4 fragColor;vec2 distortUV(vec2 uv) {\nfloat aspectRatio = uResolution.x / uResolution.y;vec2 mPos = uPos + mix(vec2(0), (uMousePos - 0.5), 0.0000);\nfloat mDist = ease(0, max(0., 1. - distance(uv * vec2(aspectRatio, 1), mPos * vec2(aspectRatio, 1)) * 4. * (1. - 1.0000)));vec2 pos = scaleAspect(mix(uPos, mPos, floor(1.0000)));\nvec2 st = scaleAspect(uv);\nst = rot(0.0000 * -2.0 * PI) * (st - pos) + pos;float divisions = 2. + 0.8200 * 30.;\nfloat dist = 1.0000 * 4. + 1.;\nfloat amount = 0.9700 * mDist;caDist = dist;\ncaAmount = amount;\ncaUV = uv;\ncaDistort = vec3(0.0);if (abs(amount) <= 0.001) return uv;vec2 texelX = dFdx(st) * 1.5;\nvec2 texelY = dFdy(st) * 1.5;StructFunc result = getStyle(st, pos, divisions, dist, amount, 0.0000);\nStructFunc result1 = getStyle(st + texelX, pos, divisions, dist, amount, 0.0000);\nStructFunc result2 = getStyle(st + texelY, pos, divisions, dist, amount, 0.0000);\nStructFunc result3 = getStyle(st - texelX, pos, divisions, dist, amount, 0.0000);\nStructFunc result4 = getStyle(st - texelY, pos, divisions, dist, amount, 0.0000);caUV = result.st;\ncaDistort = result.distort;return (result.st + result1.st + result2.st + result3.st + result4.st) / 5.;\n}void main() {\nvec2 uv = vTextureCoord;\nuv = distortUV(uv);\nvec4 color = texture(uTexture, 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":{"depth":false,"uniforms":{"pos":{"name":"uPos","type":"2f","value":{"type":"Vec2","_x":0.5,"_y":0.5}}},"isBackground":false},"id":"blinds"}],"options":{"name":"Copy of Horizontal lines (Remix) (2) (Remix)","fps":60,"dpi":1.5,"scale":1,"includeLogo":false,"isProduction":false,"flatten":false,"freePlan":false},"version":"2.1.6","id":"mAQ1wUPYxiiGOyyU767Z"}