{"version":3,"file":"LogoGlass.C-bJl1so.mjs","names":[],"sources":["https:/framerusercontent.com/modules/DYY6ziatGFCEHjNeQZOm/Vwj4ohcbLKvAWfAF7sJd/LogoGlass.js"],"sourcesContent":["import{defineShader,ControlType}from\"framer\";export default defineShader({title:\"Logo Glass\",heightmapSource:\"image\",fragment:`\n// === PCG-BASED VALUE NOISE ===\n\nuint pcg(uint s) {\n    s = s * 747796405u + 2891336453u;\n    s = ((s >> ((s >> 28u) + 4u)) ^ s) * 277803737u;\n    return s ^ (s >> 22u);\n}\n\nfloat hashVal(vec2 p) {\n    uvec2 q = uvec2(floatBitsToUint(p.x), floatBitsToUint(p.y));\n    return float(pcg(q.x ^ pcg(q.y))) / float(0xFFFFFFFFu);\n}\n\nfloat valueNoise(vec2 p) {\n    vec2 i = floor(p), f = fract(p);\n    f = f * f * (3.0 - 2.0 * f);\n    float a = hashVal(i);\n    float b = hashVal(i + vec2(1, 0));\n    float c = hashVal(i + vec2(0, 1));\n    float d = hashVal(i + vec2(1, 1));\n    return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);\n}\n\n// === FBM ===\n\nfloat fbm(vec2 p, float lac, int oct, float pers) {\n    float v = 0.0, a = 0.5;\n    mat2 rot = mat2(0.8, 0.6, -0.6, 0.8);\n    for (int i = 0; i < oct; i++) {\n        v += a * valueNoise(p);\n        p = rot * p * lac;\n        a *= pers;\n    }\n    return v;\n}\n\n// === DOMAIN WARPING ===\n\nfloat warpedField(vec2 p, float t, float lac, int oct, float pers, float warpDepth, float mode, float dir, float seed) {\n\n    uint s = uint(seed);\n    float sx = float(pcg(s)) / float(0xFFFFFFFFu);\n    float sy = float(pcg(s + 73u)) / float(0xFFFFFFFFu);\n    p += (vec2(sx, sy) - 0.5) * 200.0;\n\n    if (mode < 0.5) {\n        vec2 drift = vec2(t * 0.4, -t * 0.3);\n        vec2 q = vec2(\n            fbm(p + drift, lac, oct, pers),\n            fbm(p + vec2(5.2, 1.3) + drift.yx, lac, oct, pers)\n        );\n        if (warpDepth < 1.5) return fbm(p + q * 4.0, lac, oct, pers);\n        vec2 r = vec2(\n            fbm(p + q * 4.0 + vec2(1.7, 9.2) + drift * 0.7, lac, oct, pers),\n            fbm(p + q * 4.0 + vec2(8.3, 2.8) - drift * 0.5, lac, oct, pers)\n        );\n        return fbm(p + r * 4.0, lac, oct, pers);\n    }\n\n    if (mode < 1.5) {\n        float a = dir * 3.14159 / 180.0;\n        p += vec2(cos(a), sin(a)) * t * 0.6;\n    } else {\n        float ang = atan(p.y, p.x);\n        float rad = length(p);\n        p += vec2(cos(ang + t * 0.5), sin(ang + t * 0.5)) * rad * 0.4;\n    }\n\n    vec2 drift = vec2(t * 0.15, -t * 0.2);\n    vec2 q = vec2(\n        fbm(p + drift, lac, oct, pers),\n        fbm(p + vec2(5.2, 1.3) + drift.yx, lac, oct, pers)\n    );\n    if (warpDepth < 1.5) return fbm(p + q * 4.0, lac, oct, pers);\n    vec2 r = vec2(\n        fbm(p + q * 4.0 + vec2(1.7, 9.2) + drift * 0.7, lac, oct, pers),\n        fbm(p + q * 4.0 + vec2(8.3, 2.8) - drift * 0.5, lac, oct, pers)\n    );\n    return fbm(p + r * 4.0, lac, oct, pers);\n}\n\n// === HEIGHTMAP HELPERS ===\n\nfloat blurDepth3x3(vec2 uv, vec2 dudx, vec2 dudy, vec2 texel, float radius) {\n    vec2 r = radius * texel;\n\n    float sum = 4.0 * textureGrad(u_image_heightmap, uv, dudx, dudy).r;\n\n    sum += 2.0 * textureGrad(u_image_heightmap, uv + vec2(0.0, -r.y), dudx, dudy).r;\n    sum += 2.0 * textureGrad(u_image_heightmap, uv + vec2(0.0,  r.y), dudx, dudy).r;\n    sum += 2.0 * textureGrad(u_image_heightmap, uv + vec2(-r.x, 0.0), dudx, dudy).r;\n    sum += 2.0 * textureGrad(u_image_heightmap, uv + vec2( r.x, 0.0), dudx, dudy).r;\n\n    sum += textureGrad(u_image_heightmap, uv + vec2(-r.x, -r.y), dudx, dudy).r;\n    sum += textureGrad(u_image_heightmap, uv + vec2( r.x, -r.y), dudx, dudy).r;\n    sum += textureGrad(u_image_heightmap, uv + vec2(-r.x,  r.y), dudx, dudy).r;\n    sum += textureGrad(u_image_heightmap, uv + vec2( r.x,  r.y), dudx, dudy).r;\n\n    return sum / 16.0;\n}\n\nvec2 heightGrad(vec2 uv, vec2 dudx, vec2 dudy, vec2 texel) {\n    float eps = 4.0;\n    float dR = blurDepth3x3(uv + vec2(eps * texel.x, 0.0), dudx, dudy, texel, 4.0);\n    float dL = blurDepth3x3(uv - vec2(eps * texel.x, 0.0), dudx, dudy, texel, 4.0);\n    float dU = blurDepth3x3(uv + vec2(0.0, eps * texel.y), dudx, dudy, texel, 4.0);\n    float dD = blurDepth3x3(uv - vec2(0.0, eps * texel.y), dudx, dudy, texel, 4.0);\n    return vec2(dR - dL, dU - dD) / (2.0 * eps * texel);\n}\n\n// === MAIN ===\n\nvoid main() {\n\n    vec2 uv = vec2(v_uv.x, 1.0 - v_uv.y);\n    vec2 texSize = vec2(textureSize(u_image_heightmap, 0));\n    float imgAspect = texSize.x / texSize.y;\n    float canvasAspect = u_resolution.x / u_resolution.y;\n\n    if (canvasAspect > imgAspect) {\n        uv.x = (uv.x - 0.5) * (canvasAspect / imgAspect) + 0.5;\n    } else {\n        uv.y = (uv.y - 0.5) * (imgAspect / canvasAspect) + 0.5;\n    }\n\n    float aaScale = max(1.0, 2.0 / u_pixelRatio);\n\n    vec2 dudx = dFdx(uv);\n    vec2 dudy = dFdy(uv);\n\n    vec4 hm = textureGrad(u_image_heightmap, uv, dudx, dudy);\n    float fw_b = fwidth(hm.b) / aaScale;\n    float hardMask = smoothstep(0.5 - fw_b, 0.5 + fw_b, hm.b);\n    float opacity = hardMask * (1.0 - hm.g);\n\n    float edgeDist;\n    if (canvasAspect > imgAspect) {\n        edgeDist = min(uv.x, 1.0 - uv.x);\n    } else if (canvasAspect < imgAspect) {\n        edgeDist = min(uv.y, 1.0 - uv.y);\n    } else {\n        edgeDist = 1.0;\n    }\n    opacity *= smoothstep(0.0, 1.0 * fwidth(edgeDist), edgeDist);\n\n    if (opacity < 0.001) {\n        fragColor = vec4(u_colorBack.rgb * u_colorBack.a, u_colorBack.a);\n        return;\n    }\n\n    vec2 texel = 1.0 / texSize;\n    float t = mod(u_time * u_speed, 3600.0);\n\n    float lac = u_lacunarity;\n    int   oct = int(u_octaves);\n    float pers = u_persistence;\n    float warpD = u_warpDepth;\n    float mode = u_motionMode;\n    float dir = u_direction;\n    float seed = u_seed;\n\n    float depth = max(blurDepth3x3(uv, dudx, dudy, texel, 6.0), 0.001);\n\n    vec2  grad = heightGrad(uv, dudx, dudy, texel);\n    float gradMag = min(length(grad), 5.0);\n    vec2  gradDir = gradMag > 0.001 ? normalize(grad) : vec2(0.0);\n    vec2  contourDir = vec2(-gradDir.y, gradDir.x);\n\n    float boundaryFade = smoothstep(0.0, 0.05, depth);\n\n    float falloffNorm = clamp(u_falloff / 20.0, 0.0, 1.0);\n    float lensExp = mix(0.3, 3.0, falloffNorm);\n    float lens = pow(clamp(depth, 0.0, 1.0), lensExp);\n    float glass = smoothstep(0.0, 0.05, depth) * lens;\n\n    float edgeShape = (1.0 - lens) * boundaryFade;\n\n    float edgeFactor = smoothstep(0.0, 0.5, gradMag * u_contour * 2.0) * glass * boundaryFade;\n    float contourMod = u_contour * boundaryFade;\n\n    float lightAng = u_lightAngle * 3.14159 / 180.0;\n    vec2 lightDir = vec2(cos(lightAng), sin(lightAng));\n\n    vec2 p = (uv - 0.5) * 2.0;\n    p.x *= imgAspect;\n    p.y = -p.y;\n\n    // === SHAPE-AWARE COORDINATE WARPING (independent from glass contour) ===\n    float edgeProximity = 1.0 - smoothstep(0.0, 0.8, depth);\n    float innerIntensity = smoothstep(0.0, 0.4, depth);\n\n    p += contourDir * edgeProximity * u_bend * 2.0;\n    p -= gradDir * edgeProximity * u_bend * 0.5;\n    p *= max(0.5, mix(1.0, 0.4 + 0.6 * smoothstep(0.0, 0.5, depth), u_shapeContour));\n\n    float warpMix = glass * u_warp;\n    float baseLens = sqrt(max(glass, 0.001) / 0.3);\n\n    float iorBase = mix(1.2, 2.5, u_ior);\n    float dispCoeff = u_dispersion * 0.2;\n    float dispIntensity = u_dispersion * 3.0;\n    vec3 wavelengths = vec3(0.65, 0.55, 0.45);\n\n    float ns = u_scale * 3.0;\n\n    // === PER-PIXEL GRAIN ===\n    vec2 noiseCoord = v_uv * u_resolution;\n    uint grainHash = pcg(uint(noiseCoord.x) * 1933u ^ uint(noiseCoord.y) * 7919u);\n    float grain = 1.0 + (float(grainHash) / float(0xFFFFFFFFu) - 0.5) * u_noise;\n\n    vec3 vDispersed = vec3(0.0);\n\n    for (int c = 0; c < 3; c++) {\n        vec2 pp = p;\n\n        float wl = wavelengths[c];\n        float ior = iorBase + dispCoeff / (wl * wl);\n        float iorMid = iorBase + dispCoeff / 0.3025;\n\n        float lensScale = mix(1.0, ior / iorMid, edgeFactor);\n\n        pp = mix(pp, pp * baseLens * lensScale, warpMix);\n\n        pp *= max(0.35, 0.1 + (1.1 - edgeShape) * (1.0 - 0.5 * edgeShape));\n        pp -= gradDir * edgeShape * contourMod * 2.0;\n        pp *= max(0.5, mix(1.0, 1.0 - edgeShape, smoothstep(0.5, 1.0, contourMod)));\n\n        vDispersed[c] = warpedField(pp * ns, t, lac, oct, pers, warpD, mode, dir, seed) * grain;\n    }\n\n    // === SHAPE CONTOUR VALUE MODULATION ===\n    float contourHeat = (1.0 - innerIntensity) * u_shapeContour;\n    for (int c = 0; c < 3; c++) {\n        vDispersed[c] = mix(vDispersed[c], vDispersed[c] * innerIntensity + contourHeat, 0.5 + 0.5 * u_shapeContour);\n    }\n\n    vec2 ppRef = p;\n    ppRef = mix(ppRef, ppRef * baseLens, warpMix);\n    ppRef *= max(0.35, 0.1 + (1.1 - edgeShape) * (1.0 - 0.5 * edgeShape));\n    ppRef -= gradDir * edgeShape * contourMod * 2.0;\n    ppRef *= max(0.5, mix(1.0, 1.0 - edgeShape, smoothstep(0.5, 1.0, contourMod)));\n\n    float n = vDispersed.g;\n\n    float eps = 0.8 / u_bumpDist;\n    float nR = warpedField((ppRef + vec2(eps, 0.0)) * ns, t, lac, oct, pers, warpD, mode, dir, seed);\n    float nU = warpedField((ppRef + vec2(0.0, eps)) * ns, t, lac, oct, pers, warpD, mode, dir, seed);\n    vec2 fieldGrad = vec2(nR - n, nU - n) / eps;\n\n    float diffuse = dot(fieldGrad, lightDir);\n    float highlight = max(diffuse, 0.0);\n    float shadow = max(-diffuse, 0.0);\n    highlight = highlight * highlight * 0.15 + pow(highlight, 4.0) * 0.05;\n    shadow = shadow * shadow * 0.1 + pow(shadow, 4.0) * 0.03;\n\n    float nLift = mix(0.3, 1.0, n);\n    float nSq = nLift * nLift;\n    vec3 chromaDiff = vDispersed - n;\n\n    vec3 hiCol = u_colorHighlight.rgb;\n    vec3 shCol = u_colorShadow.rgb;\n\n    float bumpFade = smoothstep(0.0, 1.0, depth);\n    vec3 col = nSq * (hiCol * highlight * u_bumpStrength * bumpFade\n         + shCol * shadow * u_bumpStrength * bumpFade\n         + 0.5);\n\n    col += chromaDiff * dispIntensity * edgeFactor * 0.5;\n\n    vec3 tintLo = u_colorA.rgb;\n    vec3 tintHi = u_colorB.rgb;\n    col = mix(tintLo, tintHi, col);\n\n    col += u_ambient;\n\n    // Exposure in linear space\n    col *= 2.0 * u_brightness;\n\n    // Gamma\n    col = sqrt(max(col, 0.0));\n\n    // Contrast + saturation in sRGB (cheap, good enough)\n    col = (col - 0.5) * u_contrast + 0.5;\n    float lum = dot(col, vec3(0.2126, 0.7152, 0.0722));\n    col = mix(vec3(lum), col, u_saturation);\n    col = clamp(col, 0.0, 1.0);\n\n    col *= opacity;\n    vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n    col = col + bgColor * (1.0 - opacity);\n    float finalAlpha = opacity + u_colorBack.a * (1.0 - opacity);\n\n    fragColor = vec4(col, finalAlpha);\n}\n`,propertyControls:{image:{type:ControlType.ResponsiveImage,title:\"Image\",defaultValue:\"data:framer/asset-reference,7XHsXmlUUmdQM95fkSvi3LRCuSk.svg?originalFilename=Path.svg&width=32&height=48\"},colorBack:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},colorA:{type:ControlType.Color,title:\"Color Low\",defaultValue:\"#000000\",hidden:true},colorB:{type:ControlType.Color,title:\"Tint\",defaultValue:\"#C9C9C9\"},colorHighlight:{type:ControlType.Color,title:\"Highlight\",defaultValue:\"#FFFFFF\",hidden:true},colorShadow:{type:ControlType.Color,title:\"Shadow\",defaultValue:\"#333333\",hidden:true},seed:{type:ControlType.Number,title:\"Seed\",defaultValue:55,min:0,max:100,step:1},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:.3,min:0,max:2,step:.01},scale:{type:ControlType.Number,title:\"Scale\",defaultValue:.2,min:.1,max:1,step:.01},motionMode:{type:ControlType.Enum,title:\"Motion\",defaultValue:0,options:[0,1],optionTitles:[\"Free\",\"Melt\"]},direction:{type:ControlType.Number,title:\"Direction\",defaultValue:0,min:0,max:360,step:1,hidden:props=>props.motionMode===0},octaves:{type:ControlType.Number,title:\"Octaves\",defaultValue:3,min:1,max:6,step:1,displayStepper:true},persistence:{type:ControlType.Number,title:\"Persistence\",defaultValue:.65,min:0,max:1,step:.01},lacunarity:{type:ControlType.Number,title:\"Lacunarity\",defaultValue:1.7,min:1.2,max:3,step:.1},warpDepth:{type:ControlType.Number,title:\"Warp Depth\",defaultValue:2,min:1,max:2,step:1,displayStepper:true},warp:{type:ControlType.Number,title:\"Lens Warp\",defaultValue:.5,min:0,max:1,step:.01,section:\"Glass\"},ior:{type:ControlType.Number,title:\"IOR\",defaultValue:.5,min:0,max:1,step:.01,section:\"Glass\",hidden:true},dispersion:{type:ControlType.Number,title:\"Dispersion\",defaultValue:0,min:0,max:2,step:.01,section:\"Glass\"},contour:{type:ControlType.Number,title:\"Contour\",defaultValue:.05,min:0,max:1,step:.01,section:\"Glass\",hidden:true},falloff:{type:ControlType.Number,title:\"Bevel\",defaultValue:2,min:0,max:20,step:.01,section:\"Glass\",hidden:false},shapeContour:{type:ControlType.Number,title:\"Contour\",defaultValue:.7,min:0,max:1,step:.01,section:\"Glass\"},bend:{type:ControlType.Number,title:\"Bend\",defaultValue:.65,min:0,max:1,step:.01,section:\"Glass\"},noise:{type:ControlType.Number,title:\"Noise\",defaultValue:0,min:0,max:.5,step:.01,section:\"Glass\"},bumpStrength:{type:ControlType.Number,title:\"Lights\",defaultValue:.7,min:0,max:1,step:.01,section:\"Lighting\"},bumpDist:{type:ControlType.Number,title:\"Details\",defaultValue:10,min:.5,max:20,step:.1,section:\"Lighting\"},lightAngle:{type:ControlType.Number,title:\"Angle\",defaultValue:200,min:0,max:360,step:1,section:\"Lighting\"},ambient:{type:ControlType.Number,title:\"Ambient\",defaultValue:0,min:0,max:.2,step:.01,section:\"Filters\",hiddenWhenUnset:true},brightness:{type:ControlType.Number,title:\"Brightness\",defaultValue:.7,min:.1,max:2,step:.01,section:\"Filters\",hiddenWhenUnset:true},contrast:{type:ControlType.Number,title:\"Contrast\",defaultValue:3,min:.5,max:4,step:.01,section:\"Filters\",hiddenWhenUnset:true},saturation:{type:ControlType.Number,title:\"Saturation\",defaultValue:1,min:0,max:4,step:.01,section:\"Filters\",hiddenWhenUnset:true}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"shader\",\"name\":null,\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LogoGlass.map"],"mappings":"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"}