{"version":3,"sources":["jsdelivr-header.js","/npm/@react-three/postprocessing@3.1.1/dist/index.js"],"names":[],"mappings":"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","file":"/npm/@react-three/postprocessing@3.1.1/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /npm/@react-three/postprocessing@3.1.1/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { applyProps, createPortal, extend, useFrame, useLoader, useThree } from \"@react-three/fiber\";\nimport { createContext, memo, use, useCallback, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState } from \"react\";\nimport { CanvasTexture, Color, HalfFloatType, Mesh, NearestFilter, NoToneMapping, RepeatWrapping, SRGBColorSpace, Texture as Texture$1, TextureLoader, Uniform, Vector2, Vector3 } from \"three\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { BloomEffect, BrightnessContrastEffect, ChromaticAberrationEffect, ColorAverageEffect, ColorDepthEffect, CopyPass, DepthDownsamplingPass, DepthEffect, DepthOfFieldEffect, DepthPickingPass, DotScreenEffect, Effect, EffectComposer as EffectComposer$1, EffectPass, FXAAEffect, GlitchEffect, GlitchMode, GodRaysEffect, GridEffect, HueSaturationEffect, LUT3DEffect, MaskFunction, NoiseEffect, NormalPass, OutlineEffect, Pass, PixelationEffect, RenderPass, SMAAEffect, SSAOEffect, ScanlineEffect, SelectiveBloomEffect, SepiaEffect, ShockWaveEffect, TextureEffect, TiltShiftEffect as TiltShiftEffect$1, ToneMappingEffect, VignetteEffect } from \"postprocessing\";\nimport { easing } from \"maath\";\nimport { N8AOPostPass } from \"n8ao\";\n//#region src/Selection.tsx\nvar selectionContext = /* @__PURE__ */ createContext(null);\nfunction Selection({ children, enabled = true }) {\n\tconst [selected, select] = useState([]);\n\tconst value = useMemo(() => ({\n\t\tselected,\n\t\tselect,\n\t\tenabled\n\t}), [\n\t\tselected,\n\t\tselect,\n\t\tenabled\n\t]);\n\treturn /* @__PURE__ */ jsx(selectionContext.Provider, {\n\t\tvalue,\n\t\tchildren\n\t});\n}\nfunction isSelectable(object) {\n\tconst o = object;\n\treturn !!(o.isMesh || o.isLine || o.isPoints);\n}\nfunction Select({ enabled = false, children, ...props }) {\n\tconst group = useRef(null);\n\tconst select = use(selectionContext)?.select;\n\tconst claimed = useRef([]);\n\tuseEffect(() => {\n\t\tif (!select) return;\n\t\tconst current = [];\n\t\tif (enabled) group.current.traverse((o) => {\n\t\t\tif (isSelectable(o)) current.push(o);\n\t\t});\n\t\tconst previouslyClaimed = claimed.current;\n\t\tclaimed.current = current;\n\t\tselect((prev) => {\n\t\t\tconst prevSet = new Set(prev);\n\t\t\tconst currentSet = new Set(current);\n\t\t\tconst toAdd = current.filter((o) => !prevSet.has(o));\n\t\t\tconst toRemove = previouslyClaimed.filter((o) => !currentSet.has(o) && prevSet.has(o));\n\t\t\tif (!toAdd.length && !toRemove.length) return prev;\n\t\t\tconst toRemoveSet = toRemove.length ? new Set(toRemove) : null;\n\t\t\tconst kept = toRemoveSet ? prev.filter((o) => !toRemoveSet.has(o)) : prev;\n\t\t\treturn toAdd.length ? [...kept, ...toAdd] : kept;\n\t\t});\n\t}, [\n\t\tenabled,\n\t\tchildren,\n\t\tselect\n\t]);\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (!select || !claimed.current.length) return;\n\t\t\tconst stillClaimed = new Set(claimed.current);\n\t\t\tselect((prev) => {\n\t\t\t\tconst next = prev.filter((o) => !stillClaimed.has(o));\n\t\t\t\treturn next.length !== prev.length ? next : prev;\n\t\t\t});\n\t\t};\n\t}, [select]);\n\treturn /* @__PURE__ */ jsx(\"group\", {\n\t\tref: group,\n\t\t...props,\n\t\tchildren\n\t});\n}\n//#endregion\n//#region src/util.tsx\nvar EMPTY_ARRAY = [];\nvar resolveRef = (ref) => typeof ref === \"object\" && ref != null && \"current\" in ref ? ref.current : ref;\nfunction useMergeRefs(localRef, outerRef) {\n\treturn useCallback((instance) => {\n\t\tlocalRef.current = instance;\n\t\tif (typeof outerRef !== \"function\") {\n\t\t\tif (outerRef) outerRef.current = instance;\n\t\t\treturn;\n\t\t}\n\t\tconst cleanup = outerRef(instance);\n\t\tif (typeof cleanup !== \"function\") return;\n\t\treturn () => {\n\t\t\tlocalRef.current = null;\n\t\t\tcleanup();\n\t\t};\n\t}, [localRef, outerRef]);\n}\nfunction readGroupChildren(group, filter) {\n\tconst groupInstance = group.__r3f;\n\treturn groupInstance ? groupInstance.children.map((child) => child.object).filter(filter) : [];\n}\nfunction updateIfChanged(ref, next) {\n\tconst previous = ref.current;\n\tif (next.length === previous.length && next.every((item, i) => item === previous[i])) return false;\n\tref.current = next;\n\treturn true;\n}\nfunction useSelectionSync(effect, selection, selectionLayer) {\n\tconst invalidate = useThree((state) => state.invalidate);\n\tconst api = use(selectionContext);\n\tuseEffect(() => {\n\t\teffect.selection.layer = selectionLayer;\n\t\tinvalidate();\n\t}, [\n\t\teffect,\n\t\tinvalidate,\n\t\tselectionLayer\n\t]);\n\tuseEffect(() => {\n\t\tif (api) return;\n\t\tconst resolved = (Array.isArray(selection) ? selection.map((o) => resolveRef(o)) : [resolveRef(selection)]).filter((o) => o != null);\n\t\tif (!resolved.length) return;\n\t\teffect.selection.set(resolved);\n\t\tinvalidate();\n\t\treturn () => {\n\t\t\teffect.selection.clear();\n\t\t\tinvalidate();\n\t\t};\n\t}, [\n\t\teffect,\n\t\tselection,\n\t\tapi,\n\t\tinvalidate\n\t]);\n\tuseEffect(() => {\n\t\tif (api && api.enabled && api.selected?.length) {\n\t\t\teffect.selection.set(api.selected);\n\t\t\tinvalidate();\n\t\t\treturn () => {\n\t\t\t\teffect.selection.clear();\n\t\t\t\tinvalidate();\n\t\t\t};\n\t\t}\n\t}, [\n\t\tapi,\n\t\teffect.selection,\n\t\tinvalidate\n\t]);\n}\nvar useDispose = (instance) => {\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tinstance?.dispose?.();\n\t\t};\n\t}, [instance]);\n};\nfunction readPierced(instance, key) {\n\tlet target = instance;\n\tfor (const part of key.split(\"-\")) {\n\t\tif (target == null) return void 0;\n\t\ttarget = target[part];\n\t}\n\treturn target;\n}\nfunction applyPierced(instance, key, value) {\n\tconst parts = key.split(\"-\");\n\tlet target = instance;\n\tfor (let idx = 0; idx < parts.length - 1; idx++) {\n\t\tif (target == null) return;\n\t\ttarget = target[parts[idx]];\n\t}\n\tif (target == null) return;\n\ttarget[parts[parts.length - 1]] = value;\n}\nfunction useLiveDefaults(instance, values, keys, get = readPierced, set = applyPierced) {\n\tconst snapshotRef = useRef(null);\n\tconst invalidate = useThree((state) => state.invalidate);\n\tuseLayoutEffect(() => {\n\t\tconst resolved = resolveRef(instance);\n\t\tif (!resolved) return;\n\t\tif (snapshotRef.current?.instance !== resolved) snapshotRef.current = {\n\t\t\tinstance: resolved,\n\t\t\tdefaults: /* @__PURE__ */ new Map(),\n\t\t\tapplied: /* @__PURE__ */ new Map()\n\t\t};\n\t\tconst { defaults, applied } = snapshotRef.current;\n\t\tlet changed = false;\n\t\tfor (const key of keys) {\n\t\t\tif (!defaults.has(key)) {\n\t\t\t\tconst current = get(resolved, key);\n\t\t\t\tdefaults.set(key, current);\n\t\t\t\tapplied.set(key, current);\n\t\t\t}\n\t\t\tconst next = values[key] !== void 0 ? values[key] : defaults.get(key);\n\t\t\tif (Object.is(applied.get(key), next)) continue;\n\t\t\tset(resolved, key, next);\n\t\t\tapplied.set(key, next);\n\t\t\tchanged = true;\n\t\t}\n\t\tif (changed) invalidate();\n\t});\n}\nvar useVector2 = (props, key) => {\n\tconst value = props[key];\n\treturn useMemo(() => {\n\t\tif (typeof value === \"number\") return new Vector2(value, value);\n\t\tif (value instanceof Vector2) return value;\n\t\tif (value) return new Vector2(...value);\n\t\treturn new Vector2();\n\t}, [value]);\n};\nvar useVector3 = (props, key) => {\n\tconst value = props[key];\n\treturn useMemo(() => {\n\t\tif (typeof value === \"number\") return new Vector3(value, value, value);\n\t\tif (value instanceof Vector3) return value;\n\t\tif (value) return new Vector3(...value);\n\t\treturn new Vector3();\n\t}, [value]);\n};\n//#endregion\n//#region src/createEffectComponent.tsx\nvar components$1 = /* @__PURE__ */ new WeakMap();\nvar i$1 = 0;\nvar BLEND_KEYS = [\"blendMode-blendFunction\", \"blendMode-opacity-value\"];\n/**\n* Registers `effect` as a JSX intrinsic once per class and returns a\n* component that renders it. Everything else - construction from `args`,\n* live prop application (with the same Color/Vector coercion and reset-\n* to-default on removal any r3f element gets), disposal - is r3f's own\n* reconciler, same rules as `<mesh>`/`<meshStandardMaterial>`. Only fits\n* effects whose constructor works with zero arguments (`new Effect()`) -\n* r3f's own reset-on-removal falls back to `0` otherwise, which is wrong\n* for anything non-numeric. Effects that require e.g. scene/camera stay\n* hand-rolled (see Outline.tsx, SelectiveBloom.tsx, ShockWave.tsx).\n*\n* `blendFunction`/`opacity` are pierced through to `blendMode-*` - every\n* `Effect` has them on a nested `blendMode`, not on the effect itself, so a\n* plain top-level prop would silently land on a stray, unread property.\n* Applied via useLiveDefaults, not as plain JSX props: BlendMode's own\n* constructor requires `blendFunction` (no default), so its constructor\n* length isn't 0 either, and r3f's native reset-on-removal falls back to\n* `changedProps[prop] = 0` - which is 9, not a merely\n* \"wrong\" blend function but one that hides the effect entirely.\n*/\nfunction createEffectComponent(effect) {\n\treturn function EffectComponent({ blendFunction, opacity, ref, ...props }) {\n\t\tlet Component = components$1.get(effect);\n\t\tif (!Component) {\n\t\t\tconst key = `@react-three/postprocessing/${effect.name}-${i$1++}`;\n\t\t\textend({ [key]: effect });\n\t\t\tcomponents$1.set(effect, Component = key);\n\t\t}\n\t\tconst camera = useThree((state) => state.camera);\n\t\tconst localRef = useRef(null);\n\t\tconst setRef = useMergeRefs(localRef, ref);\n\t\tuseLiveDefaults(localRef, {\n\t\t\t\"blendMode-blendFunction\": blendFunction,\n\t\t\t\"blendMode-opacity-value\": opacity\n\t\t}, BLEND_KEYS);\n\t\treturn /* @__PURE__ */ jsx(Component, {\n\t\t\tref: setRef,\n\t\t\tcamera,\n\t\t\t...props\n\t\t});\n\t};\n}\n//#endregion\n//#region src/EffectComposer.tsx\nvar EffectComposerContext = /* @__PURE__ */ createContext(null);\nvar isConvolution = (effect) => (effect.getAttributes() & 2) === 2;\nfunction createRendererPropertyGuard(property) {\n\tconst refs = /* @__PURE__ */ new WeakMap();\n\treturn {\n\t\tacquire(gl, forcedValue) {\n\t\t\tconst existing = refs.get(gl);\n\t\t\tif (existing) {\n\t\t\t\texisting.count++;\n\t\t\t\texisting.forcedValue = forcedValue;\n\t\t\t} else refs.set(gl, {\n\t\t\t\tcount: 1,\n\t\t\t\toriginal: gl[property],\n\t\t\t\tforcedValue\n\t\t\t});\n\t\t},\n\t\trelease(gl) {\n\t\t\tconst entry = refs.get(gl);\n\t\t\tif (!entry) return;\n\t\t\tif (--entry.count <= 0) {\n\t\t\t\tif (gl[property] === entry.forcedValue) gl[property] = entry.original;\n\t\t\t\trefs.delete(gl);\n\t\t\t}\n\t\t}\n\t};\n}\nvar autoClearGuard = /* @__PURE__ */ createRendererPropertyGuard(\"autoClear\");\nvar toneMappingGuard = /* @__PURE__ */ createRendererPropertyGuard(\"toneMapping\");\nvar glSize = /* @__PURE__ */ new Vector2();\nvar defaultRenderPass = (scene, camera) => new RenderPass(scene, camera);\nvar generatedPasses = /* @__PURE__ */ new WeakSet();\nvar groupPasses = /* @__PURE__ */ new WeakSet();\nfunction disposePassWithoutEffects(pass) {\n\tif (pass instanceof EffectPass) pass.setEffects([]);\n\tPass.prototype.dispose.call(pass);\n}\nfunction disposeGeneratedPass(pass) {\n\tif (!generatedPasses.has(pass)) return;\n\tdisposePassWithoutEffects(pass);\n}\nfunction buildPasses(nodes, camera, mergeMode) {\n\tconst passes = [];\n\tfor (let i = 0; i < nodes.length; i++) {\n\t\tconst node = nodes[i];\n\t\tif (node instanceof Effect) {\n\t\t\tconst effects = [node];\n\t\t\tlet hasConvolution = isConvolution(node);\n\t\t\tif (mergeMode !== \"none\") {\n\t\t\t\tlet next;\n\t\t\t\twhile ((next = nodes[i + 1]) instanceof Effect) {\n\t\t\t\t\tconst nextIsConvolution = isConvolution(next);\n\t\t\t\t\tif (mergeMode === \"auto\" && hasConvolution && nextIsConvolution) break;\n\t\t\t\t\teffects.push(next);\n\t\t\t\t\thasConvolution ||= nextIsConvolution;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst pass = new EffectPass(camera, ...effects);\n\t\t\tgeneratedPasses.add(pass);\n\t\t\tpasses.push(pass);\n\t\t} else if (node instanceof Pass) passes.push(node);\n\t}\n\treturn passes;\n}\nvar EffectComposer = /* @__PURE__ */ memo(function EffectComposer({ children, camera: _camera, scene: _scene, resolutionScale, enabled = true, renderPriority = 1, autoClear = true, autoRenderToScreen = true, depthBuffer, enableNormalPass, stencilBuffer, multisampling = 8, frameBufferType = HalfFloatType, renderPass = defaultRenderPass, mergeMode = \"auto\", ref }) {\n\tconst { gl, scene: defaultScene, camera: defaultCamera } = useThree();\n\tconst scene = _scene || defaultScene;\n\tconst camera = _camera || defaultCamera;\n\tgl.getSize(glSize);\n\tconst [composerState, setComposerState] = useState(null);\n\tconst [, requestRebuild] = useReducer((c) => c + 1, 0);\n\tuseEffect(() => {\n\t\tautoClearGuard.acquire(gl, false);\n\t\tconst effectComposer = new EffectComposer$1(gl, {\n\t\t\tdepthBuffer,\n\t\t\tstencilBuffer,\n\t\t\tmultisampling,\n\t\t\tframeBufferType\n\t\t});\n\t\teffectComposer.autoRenderToScreen = autoRenderToScreen;\n\t\teffectComposer.addPass(renderPass(scene, camera));\n\t\tlet normalPass = null;\n\t\tlet downSamplingPass = null;\n\t\tif (enableNormalPass) {\n\t\t\tnormalPass = new NormalPass(scene, camera);\n\t\t\tnormalPass.enabled = false;\n\t\t\teffectComposer.addPass(normalPass);\n\t\t\tif (resolutionScale !== void 0) {\n\t\t\t\tdownSamplingPass = new DepthDownsamplingPass({\n\t\t\t\t\tnormalBuffer: normalPass.texture,\n\t\t\t\t\tresolutionScale\n\t\t\t\t});\n\t\t\t\tdownSamplingPass.enabled = false;\n\t\t\t\teffectComposer.addPass(downSamplingPass);\n\t\t\t}\n\t\t}\n\t\teffectComposer.setSize(glSize.width, glSize.height);\n\t\tsetComposerState({\n\t\t\tcomposer: effectComposer,\n\t\t\tnormalPass,\n\t\t\tdownSamplingPass\n\t\t});\n\t\treturn () => {\n\t\t\tfor (const pass of effectComposer.passes) disposeGeneratedPass(pass);\n\t\t\teffectComposer.dispose();\n\t\t\tautoClearGuard.release(gl);\n\t\t};\n\t}, [\n\t\tcamera,\n\t\tgl,\n\t\tdepthBuffer,\n\t\tstencilBuffer,\n\t\tmultisampling,\n\t\tframeBufferType,\n\t\tautoRenderToScreen,\n\t\trenderPass,\n\t\tscene,\n\t\tenableNormalPass,\n\t\tresolutionScale\n\t]);\n\tconst appliedSizeRef = useRef({\n\t\twidth: -1,\n\t\theight: -1\n\t});\n\tuseFrame((_, delta) => {\n\t\tif (!enabled || !composerState) return;\n\t\tconst { composer } = composerState;\n\t\tgl.getSize(glSize);\n\t\tif (glSize.width !== appliedSizeRef.current.width || glSize.height !== appliedSizeRef.current.height) {\n\t\t\tcomposer.setSize(glSize.width, glSize.height);\n\t\t\tappliedSizeRef.current.width = glSize.width;\n\t\t\tappliedSizeRef.current.height = glSize.height;\n\t\t}\n\t\tconst currentAutoClear = gl.autoClear;\n\t\tgl.autoClear = autoClear;\n\t\tif (stencilBuffer && !autoClear) gl.clearStencil();\n\t\tcomposer.render(delta);\n\t\tgl.autoClear = currentAutoClear;\n\t}, enabled ? renderPriority : 0);\n\tconst group = useRef(null);\n\tconst nodesRef = useRef([]);\n\tconst [nodesVersion, setNodesVersion] = useState(0);\n\tuseLayoutEffect(() => {\n\t\tif (!composerState) return;\n\t\tconst nodes = readGroupChildren(group.current, (object) => object instanceof Effect || object instanceof Pass);\n\t\tif (updateIfChanged(nodesRef, nodes)) setNodesVersion((v) => v + 1);\n\t});\n\tuseLayoutEffect(() => {\n\t\tif (!composerState) return;\n\t\tconst { composer, normalPass, downSamplingPass } = composerState;\n\t\tconst passes = buildPasses(nodesRef.current, camera, mergeMode);\n\t\tif (passes.some((pass) => groupPasses.has(pass))) {\n\t\t\tconst trailingCopyPass = new CopyPass();\n\t\t\tgeneratedPasses.add(trailingCopyPass);\n\t\t\tpasses.push(trailingCopyPass);\n\t\t}\n\t\tfor (const pass of passes) composer.addPass(pass);\n\t\tif (passes.length) {\n\t\t\tif (normalPass) normalPass.enabled = true;\n\t\t\tif (downSamplingPass) downSamplingPass.enabled = true;\n\t\t}\n\t\treturn () => {\n\t\t\tfor (const pass of passes) {\n\t\t\t\tcomposer.removePass(pass);\n\t\t\t\tdisposeGeneratedPass(pass);\n\t\t\t}\n\t\t\tif (normalPass) normalPass.enabled = false;\n\t\t\tif (downSamplingPass) downSamplingPass.enabled = false;\n\t\t};\n\t}, [\n\t\tcomposerState,\n\t\tnodesVersion,\n\t\tcamera,\n\t\tmergeMode\n\t]);\n\tuseEffect(() => {\n\t\ttoneMappingGuard.acquire(gl, NoToneMapping);\n\t\tgl.toneMapping = NoToneMapping;\n\t\treturn () => {\n\t\t\ttoneMappingGuard.release(gl);\n\t\t};\n\t}, [gl]);\n\tconst state = useMemo(() => composerState ? {\n\t\tcomposer: composerState.composer,\n\t\tnormalPass: composerState.normalPass,\n\t\tdownSamplingPass: composerState.downSamplingPass,\n\t\tresolutionScale,\n\t\tcamera,\n\t\tscene,\n\t\trequestRebuild,\n\t\tautoClear\n\t} : null, [\n\t\tcomposerState,\n\t\tresolutionScale,\n\t\tcamera,\n\t\tscene,\n\t\trequestRebuild,\n\t\tautoClear\n\t]);\n\tuseImperativeHandle(ref, () => composerState?.composer, [composerState]);\n\tif (!state) return null;\n\treturn /* @__PURE__ */ jsx(EffectComposerContext.Provider, {\n\t\tvalue: state,\n\t\tchildren: /* @__PURE__ */ jsx(\"group\", {\n\t\t\tref: group,\n\t\t\tchildren\n\t\t})\n\t});\n});\n//#endregion\n//#region src/EffectGroup.tsx\nfunction EffectGroup({ enabled = true, children, ref }) {\n\tconst { camera, requestRebuild } = use(EffectComposerContext);\n\tconst group = useRef(null);\n\tconst effectsRef = useRef([]);\n\tconst [pass, setPass] = useState(null);\n\tuseLayoutEffect(() => {\n\t\tconst effects = readGroupChildren(group.current, (object) => object instanceof Effect);\n\t\tif (!updateIfChanged(effectsRef, effects)) return;\n\t\tif (!effects.length) {\n\t\t\tsetPass(null);\n\t\t\treturn;\n\t\t}\n\t\tconst newPass = new EffectPass(camera, ...effects);\n\t\tgroupPasses.add(newPass);\n\t\tsetPass(newPass);\n\t});\n\tuseLayoutEffect(() => {\n\t\tif (pass) pass.enabled = enabled;\n\t}, [pass, enabled]);\n\tuseLayoutEffect(() => {\n\t\trequestRebuild();\n\t}, [pass, requestRebuild]);\n\tuseLayoutEffect(() => {\n\t\treturn () => {\n\t\t\tif (pass) disposePassWithoutEffects(pass);\n\t\t};\n\t}, [pass]);\n\tuseImperativeHandle(ref, () => pass, [pass]);\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(\"group\", {\n\t\tref: group,\n\t\tchildren\n\t}), pass && /* @__PURE__ */ jsx(\"primitive\", { object: pass })] });\n}\n//#endregion\n//#region src/wrapEffect.tsx\nvar i = 0;\nvar components = /* @__PURE__ */ new WeakMap();\nvar identityTokens = /* @__PURE__ */ new WeakMap();\nvar nextIdentityToken = 0;\nfunction identityOf(value) {\n\tlet token = identityTokens.get(value);\n\tif (token === void 0) {\n\t\ttoken = nextIdentityToken++;\n\t\tidentityTokens.set(value, token);\n\t}\n\treturn token;\n}\nfunction fingerprint(value, seen) {\n\tif (value === null || typeof value !== \"object\") return value;\n\tif (seen.has(value)) return \"[Circular]\";\n\tif (ArrayBuffer.isView(value) || value instanceof ArrayBuffer) return identityOf(value);\n\tseen.add(value);\n\tif (Array.isArray(value)) return value.map((item) => fingerprint(item, seen));\n\tconst out = {};\n\tfor (const key of Object.keys(value).sort()) out[key] = fingerprint(value[key], seen);\n\treturn out;\n}\nfunction stableStringify(value) {\n\treturn JSON.stringify(fingerprint(value, /* @__PURE__ */ new WeakSet()));\n}\nfunction wrapEffect(effect, defaults) {\n\treturn function WrappedEffect({ ref, blendFunction = defaults?.blendFunction, opacity = defaults?.opacity, ...props }) {\n\t\tlet Component = components.get(effect);\n\t\tif (!Component) {\n\t\t\tconst key = `@react-three/postprocessing/${effect.name}-${i++}`;\n\t\t\textend({ [key]: effect });\n\t\t\tcomponents.set(effect, Component = key);\n\t\t}\n\t\tconst camera = useThree((state) => state.camera);\n\t\tconst args = useMemo(() => [...defaults?.args ?? [], ...props.args ?? [{\n\t\t\t...defaults,\n\t\t\t...props\n\t\t}]], [stableStringify(props)]);\n\t\treturn /* @__PURE__ */ jsx(Component, {\n\t\t\tcamera,\n\t\t\t\"blendMode-blendFunction\": blendFunction,\n\t\t\t\"blendMode-opacity-value\": opacity,\n\t\t\t...props,\n\t\t\targs,\n\t\t\tref\n\t\t});\n\t};\n}\n//#endregion\n//#region src/effects/ASCII.tsx\nvar fragment = `\n  uniform sampler2D uCharacters;\n  uniform float uCharactersCount;\n  uniform float uCellSize;\n  uniform bool uInvert;\n  uniform vec3 uColor;\n\n  const vec2 SIZE = vec2(16.);\n\n  vec3 greyscale(vec3 color, float strength) {\n    float g = dot(color, vec3(0.299, 0.587, 0.114));\n    return mix(color, vec3(g), strength);\n  }\n\n  vec3 greyscale(vec3 color) {\n    return greyscale(color, 1.0);\n  }\n\n  void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n    vec2 cell = resolution / uCellSize;\n    vec2 grid = 1.0 / cell;\n    vec2 pixelizedUV = grid * (0.5 + floor(uv / grid));\n    vec4 pixelized = texture2D(inputBuffer, pixelizedUV);\n    float greyscaled = greyscale(pixelized.rgb).r;\n\n    if (uInvert) {\n        greyscaled = 1.0 - greyscaled;\n    }\n\n    float characterIndex = floor((uCharactersCount - 1.0) * greyscaled);\n    vec2 characterPosition = vec2(mod(characterIndex, SIZE.x), floor(characterIndex / SIZE.y));\n    vec2 offset = vec2(characterPosition.x, -characterPosition.y) / SIZE;\n    vec2 charUV = mod(uv * (cell / SIZE), 1.0 / SIZE) - vec2(0., 1.0 / SIZE) + offset;\n    vec4 asciiCharacter = texture2D(uCharacters, charUV);\n\n    asciiCharacter.rgb = uColor * asciiCharacter.r;\n    asciiCharacter.a = pixelized.a;\n    outputColor = asciiCharacter;\n  }\n`;\nvar ASCIIEffect = class extends Effect {\n\tconstructor({ font = \"arial\", characters = ` .:,'-^=*+?!|0#X%WM@`, fontSize = 54, cellSize = 16, color = \"#ffffff\", invert = false } = {}) {\n\t\tconst uniforms = /* @__PURE__ */ new Map([\n\t\t\t[\"uCharacters\", new Uniform(new Texture$1())],\n\t\t\t[\"uCellSize\", new Uniform(cellSize)],\n\t\t\t[\"uCharactersCount\", new Uniform(characters.length)],\n\t\t\t[\"uColor\", new Uniform(new Color(color))],\n\t\t\t[\"uInvert\", new Uniform(invert)]\n\t\t]);\n\t\tsuper(\"ASCIIEffect\", fragment, { uniforms });\n\t\tthis._font = font;\n\t\tthis._characters = characters;\n\t\tthis._fontSize = fontSize;\n\t\tthis.updateCharactersTexture();\n\t}\n\tget cellSize() {\n\t\treturn this.uniforms.get(\"uCellSize\").value;\n\t}\n\tset cellSize(value) {\n\t\tthis.uniforms.get(\"uCellSize\").value = value;\n\t}\n\tget invert() {\n\t\treturn this.uniforms.get(\"uInvert\").value;\n\t}\n\tset invert(value) {\n\t\tthis.uniforms.get(\"uInvert\").value = value;\n\t}\n\tget color() {\n\t\treturn this.uniforms.get(\"uColor\").value;\n\t}\n\tset color(value) {\n\t\tthis.uniforms.get(\"uColor\").value.set(value);\n\t}\n\tget font() {\n\t\treturn this._font;\n\t}\n\tset font(value) {\n\t\tthis._font = value;\n\t\tthis.updateCharactersTexture();\n\t}\n\tget characters() {\n\t\treturn this._characters;\n\t}\n\tset characters(value) {\n\t\tthis._characters = value;\n\t\tthis.uniforms.get(\"uCharactersCount\").value = value.length;\n\t\tthis.updateCharactersTexture();\n\t}\n\tget fontSize() {\n\t\treturn this._fontSize;\n\t}\n\tset fontSize(value) {\n\t\tthis._fontSize = value;\n\t\tthis.updateCharactersTexture();\n\t}\n\tupdateCharactersTexture() {\n\t\tconst uniform = this.uniforms.get(\"uCharacters\");\n\t\tconst previous = uniform.value;\n\t\tuniform.value = this.createCharactersTexture(this._characters, this._font, this._fontSize);\n\t\tprevious.dispose();\n\t}\n\t/** Draws the characters on a Canvas and returns a texture */\n\tcreateCharactersTexture(characters, font, fontSize) {\n\t\tconst canvas = document.createElement(\"canvas\");\n\t\tconst SIZE = 1024;\n\t\tconst MAX_PER_ROW = 16;\n\t\tconst CELL = SIZE / MAX_PER_ROW;\n\t\tcanvas.width = canvas.height = SIZE;\n\t\tconst texture = new CanvasTexture(canvas, void 0, RepeatWrapping, RepeatWrapping, NearestFilter, NearestFilter);\n\t\tconst context = canvas.getContext(\"2d\");\n\t\tif (!context) throw new Error(\"Context not available\");\n\t\tcontext.clearRect(0, 0, SIZE, SIZE);\n\t\tcontext.font = `${fontSize}px ${font}`;\n\t\tcontext.textAlign = \"center\";\n\t\tcontext.textBaseline = \"middle\";\n\t\tcontext.fillStyle = \"#fff\";\n\t\tfor (let i = 0; i < characters.length; i++) {\n\t\t\tconst char = characters[i];\n\t\t\tconst x = i % MAX_PER_ROW;\n\t\t\tconst y = Math.floor(i / MAX_PER_ROW);\n\t\t\tcontext.fillText(char, x * CELL + CELL / 2, y * CELL + CELL / 2);\n\t\t}\n\t\ttexture.needsUpdate = true;\n\t\treturn texture;\n\t}\n};\nvar ASCII = /* @__PURE__ */ createEffectComponent(ASCIIEffect);\n//#endregion\n//#region src/passes/DepthPicking.tsx\nfunction DepthPicking({ ref }) {\n\tconst { composer } = use(EffectComposerContext);\n\tconst [depthPickingPass] = useState(() => new DepthPickingPass());\n\tconst [copyPass] = useState(() => new CopyPass());\n\tuseEffect(() => {\n\t\tcomposer.addPass(depthPickingPass);\n\t\tcomposer.addPass(copyPass);\n\t\treturn () => {\n\t\t\tcomposer.removePass(depthPickingPass);\n\t\t\tcomposer.removePass(copyPass);\n\t\t};\n\t}, [\n\t\tcomposer,\n\t\tdepthPickingPass,\n\t\tcopyPass\n\t]);\n\tuseDispose(depthPickingPass);\n\tuseDispose(copyPass);\n\tuseImperativeHandle(ref, () => ({ readDepth: (ndc) => depthPickingPass.readDepth(ndc) }), [depthPickingPass]);\n\treturn null;\n}\nfunction useDepthPicking(pass, camera) {\n\tconst composerCamera = use(EffectComposerContext)?.camera;\n\tconst defaultCamera = useThree((state) => state.camera);\n\tconst resolvedCamera = camera ?? composerCamera ?? defaultCamera;\n\tconst [ndc] = useState(() => new Vector3());\n\treturn useCallback(async (x, y) => {\n\t\tif (!pass.current) return false;\n\t\tndc.x = x;\n\t\tndc.y = y;\n\t\tndc.z = await pass.current.readDepth(ndc);\n\t\tndc.z = ndc.z * 2 - 1;\n\t\treturn 1 - ndc.z > 1e-7 ? ndc.clone().unproject(resolvedCamera) : false;\n\t}, [\n\t\tpass,\n\t\tresolvedCamera,\n\t\tndc\n\t]);\n}\n//#endregion\n//#region src/effects/DepthOfField.tsx\nvar LIVE_KEYS$6 = [\n\t\"blendMode-blendFunction\",\n\t\"bokehScale\",\n\t\"cocMaterial-focusDistance\",\n\t\"cocMaterial-focusRange\",\n\t\"depthTexture\"\n];\nfunction get$2(effect, key) {\n\tif (key !== \"depthTexture\") return readPierced(effect, key);\n\tconst texture = effect.cocMaterial.uniforms.depthBuffer.value;\n\treturn texture ? { texture } : void 0;\n}\nfunction set$3(effect, key, value) {\n\tif (key === \"depthTexture\") {\n\t\tconst dt = value;\n\t\teffect.setDepthTexture(dt?.texture, dt?.packing);\n\t} else applyPierced(effect, key, value);\n}\nfunction DepthOfField({ ref, blendFunction, worldFocusDistance, worldFocusRange, focusDistance, focusRange, focalLength, bokehScale, resolutionScale, resolutionX, resolutionY, width, height, target, depthTexture, ...props }) {\n\tconst { camera } = use(EffectComposerContext);\n\tconst autoFocus = target != null;\n\tconst effect = useMemo(() => {\n\t\tconst effect = new DepthOfFieldEffect(camera, {\n\t\t\tworldFocusDistance,\n\t\t\tworldFocusRange,\n\t\t\tfocalLength,\n\t\t\tresolutionScale,\n\t\t\tresolutionX,\n\t\t\tresolutionY,\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t\tif (autoFocus) effect.target = new Vector3();\n\t\teffect.maskFunction = MaskFunction.MULTIPLY_RGB_SET_ALPHA;\n\t\treturn effect;\n\t}, [\n\t\tcamera,\n\t\tworldFocusDistance,\n\t\tworldFocusRange,\n\t\tfocalLength,\n\t\tresolutionScale,\n\t\tresolutionX,\n\t\tresolutionY,\n\t\twidth,\n\t\theight,\n\t\tautoFocus\n\t]);\n\tuseLiveDefaults(effect, {\n\t\t\"blendMode-blendFunction\": blendFunction,\n\t\tbokehScale,\n\t\t\"cocMaterial-focusDistance\": focusDistance,\n\t\t\"cocMaterial-focusRange\": focusRange,\n\t\tdepthTexture\n\t}, LIVE_KEYS$6, get$2, set$3);\n\tuseDispose(effect);\n\treturn /* @__PURE__ */ jsx(\"primitive\", {\n\t\t...props,\n\t\tobject: effect,\n\t\tref,\n\t\ttarget\n\t});\n}\n//#endregion\n//#region src/effects/Autofocus.tsx\nfunction Autofocus({ target = void 0, mouse: followMouse = false, debug = void 0, manual = false, smoothTime = .25, ref, ...props }) {\n\tconst dofRef = useRef(null);\n\tconst pickRef = useRef(null);\n\tconst getHit = useDepthPicking(pickRef);\n\tconst hitpointMarkerRef = useRef(null);\n\tconst dofTargetMarkerRef = useRef(null);\n\tconst scene = useThree(({ scene }) => scene);\n\tconst pointer = useThree(({ pointer }) => pointer);\n\tconst [autoFocusMarker] = useState(() => new Vector3());\n\tconst [hitpoint] = useState(() => new Vector3());\n\tconst update = useCallback(async (delta, updateTarget = true) => {\n\t\tif (target) hitpoint.set(...target);\n\t\telse {\n\t\t\tconst { x, y } = followMouse ? pointer : {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t};\n\t\t\tconst hit = await getHit(x, y);\n\t\t\tif (hit) hitpoint.copy(hit);\n\t\t}\n\t\tif (updateTarget && dofRef.current?.target) {\n\t\t\tif (smoothTime > 0 && delta > 0) easing.damp3(dofRef.current.target, hitpoint, smoothTime, delta);\n\t\t\telse dofRef.current.target.copy(hitpoint);\n\t\t}\n\t}, [\n\t\ttarget,\n\t\thitpoint,\n\t\tfollowMouse,\n\t\tpointer,\n\t\tgetHit,\n\t\tsmoothTime\n\t]);\n\tuseFrame((_, delta) => {\n\t\tif (!manual) update(delta);\n\t\tif (hitpointMarkerRef.current) hitpointMarkerRef.current.position.copy(hitpoint);\n\t\tif (dofTargetMarkerRef.current && dofRef.current?.target) dofTargetMarkerRef.current.position.copy(dofRef.current.target);\n\t});\n\tconst api = useMemo(() => ({\n\t\tdofRef,\n\t\thitpoint,\n\t\tupdate\n\t}), [hitpoint, update]);\n\tuseImperativeHandle(ref, () => api, [api]);\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [\n\t\t/* @__PURE__ */ jsx(DepthPicking, { ref: pickRef }),\n\t\tdebug ? createPortal(/* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(\"mesh\", {\n\t\t\tref: hitpointMarkerRef,\n\t\t\tchildren: [/* @__PURE__ */ jsx(\"sphereGeometry\", { args: [\n\t\t\t\tdebug,\n\t\t\t\t16,\n\t\t\t\t16\n\t\t\t] }), /* @__PURE__ */ jsx(\"meshBasicMaterial\", {\n\t\t\t\tcolor: \"#00ff00\",\n\t\t\t\topacity: 1,\n\t\t\t\ttransparent: true,\n\t\t\t\tdepthWrite: false\n\t\t\t})]\n\t\t}), /* @__PURE__ */ jsxs(\"mesh\", {\n\t\t\tref: dofTargetMarkerRef,\n\t\t\tchildren: [/* @__PURE__ */ jsx(\"sphereGeometry\", { args: [\n\t\t\t\tdebug / 2,\n\t\t\t\t16,\n\t\t\t\t16\n\t\t\t] }), /* @__PURE__ */ jsx(\"meshBasicMaterial\", {\n\t\t\t\tcolor: \"#00ff00\",\n\t\t\t\topacity: .5,\n\t\t\t\ttransparent: true,\n\t\t\t\tdepthWrite: false\n\t\t\t})]\n\t\t})] }), scene) : null,\n\t\t/* @__PURE__ */ jsx(DepthOfField, {\n\t\t\tref: dofRef,\n\t\t\t...props,\n\t\t\ttarget: autoFocusMarker\n\t\t})\n\t] });\n}\n//#endregion\n//#region src/effects/Bloom.tsx\nvar BloomImpl = /* @__PURE__ */ createEffectComponent(BloomEffect);\nfunction Bloom({ blendFunction = 0, luminanceThreshold, luminanceSmoothing, mipmapBlur, radius, levels, resolutionScale, resolutionX, resolutionY, ...liveProps }) {\n\tconst args = useMemo(() => [{\n\t\tluminanceThreshold,\n\t\tluminanceSmoothing,\n\t\tmipmapBlur,\n\t\tradius,\n\t\tlevels,\n\t\tresolutionScale,\n\t\tresolutionX,\n\t\tresolutionY\n\t}], [\n\t\tluminanceThreshold,\n\t\tluminanceSmoothing,\n\t\tmipmapBlur,\n\t\tradius,\n\t\tlevels,\n\t\tresolutionScale,\n\t\tresolutionX,\n\t\tresolutionY\n\t]);\n\treturn /* @__PURE__ */ jsx(BloomImpl, {\n\t\tblendFunction,\n\t\targs,\n\t\t...liveProps\n\t});\n}\n//#endregion\n//#region src/effects/BrightnessContrast.tsx\nvar BrightnessContrast = /* @__PURE__ */ createEffectComponent(BrightnessContrastEffect);\n//#endregion\n//#region src/effects/ChromaticAberration.tsx\nvar ChromaticAberration = /* @__PURE__ */ createEffectComponent(ChromaticAberrationEffect);\n//#endregion\n//#region src/effects/ColorAverage.tsx\nvar ColorAverage = /* @__PURE__ */ createEffectComponent(ColorAverageEffect);\n//#endregion\n//#region src/effects/ColorDepth.tsx\nvar ColorDepthImpl = /* @__PURE__ */ createEffectComponent(ColorDepthEffect);\nfunction ColorDepth({ bits, ...props }) {\n\tif (bits !== void 0) props.bitDepth = bits;\n\treturn /* @__PURE__ */ jsx(ColorDepthImpl, { ...props });\n}\n//#endregion\n//#region src/effects/Depth.tsx\nvar Depth = /* @__PURE__ */ createEffectComponent(DepthEffect);\n//#endregion\n//#region src/effects/DotScreen.tsx\nvar DotScreen = /* @__PURE__ */ createEffectComponent(DotScreenEffect);\n//#endregion\n//#region src/effects/FXAA.tsx\nvar FXAA = /* @__PURE__ */ createEffectComponent(FXAAEffect);\n//#endregion\n//#region src/effects/Glitch.tsx\nvar GlitchImpl = /* @__PURE__ */ createEffectComponent(GlitchEffect);\nfunction Glitch({ active = true, mode = GlitchMode.SPORADIC, dtSize, ...props }) {\n\tconst args = useMemo(() => [{ dtSize }], [dtSize]);\n\treturn /* @__PURE__ */ jsx(GlitchImpl, {\n\t\targs,\n\t\tmode: active ? mode : GlitchMode.DISABLED,\n\t\t...props\n\t});\n}\n//#endregion\n//#region src/effects/GodRays.tsx\nvar LIVE_KEYS$5 = [\n\t\"blendMode-blendFunction\",\n\t\"godRaysMaterial-density\",\n\t\"godRaysMaterial-decay\",\n\t\"godRaysMaterial-weight\",\n\t\"godRaysMaterial-exposure\",\n\t\"clampMax\",\n\t\"blur\",\n\t\"kernelSize\",\n\t\"samples\",\n\t\"width\",\n\t\"height\"\n];\nfunction get$1(effect, key) {\n\treturn key === \"clampMax\" ? effect.godRaysMaterial.maxIntensity : readPierced(effect, key);\n}\nfunction set$2(effect, key, value) {\n\tif (key === \"clampMax\") effect.godRaysMaterial.maxIntensity = value;\n\telse applyPierced(effect, key, value);\n}\nfunction GodRays({ sun, blendFunction, density, decay, weight, exposure, clampMax, blur, kernelSize, samples, width, height, resolutionScale, resolutionX, resolutionY, ref }) {\n\tconst { camera, autoClear } = use(EffectComposerContext);\n\tconst invalidate = useThree((state) => state.invalidate);\n\tconst effect = useMemo(() => new GodRaysEffect(camera, resolveRef(sun), {\n\t\tresolutionScale,\n\t\tresolutionX,\n\t\tresolutionY\n\t}), [\n\t\tcamera,\n\t\tresolutionScale,\n\t\tresolutionX,\n\t\tresolutionY\n\t]);\n\tuseEffect(() => {\n\t\tif (autoClear !== false) console.warn(\"GodRays renders an internal extra pass that needs <EffectComposer autoClear={false}> - without it, occlusion by other objects will look wrong.\");\n\t}, [autoClear]);\n\tuseLayoutEffect(() => {\n\t\teffect.lightSource = resolveRef(sun);\n\t\tinvalidate();\n\t}, [\n\t\teffect,\n\t\tsun,\n\t\tinvalidate\n\t]);\n\tuseLiveDefaults(effect, {\n\t\t\"blendMode-blendFunction\": blendFunction,\n\t\t\"godRaysMaterial-density\": density,\n\t\t\"godRaysMaterial-decay\": decay,\n\t\t\"godRaysMaterial-weight\": weight,\n\t\t\"godRaysMaterial-exposure\": exposure,\n\t\tclampMax,\n\t\tblur,\n\t\tkernelSize,\n\t\tsamples,\n\t\twidth,\n\t\theight\n\t}, LIVE_KEYS$5, get$1, set$2);\n\tuseDispose(effect);\n\treturn /* @__PURE__ */ jsx(\"primitive\", {\n\t\tref,\n\t\tobject: effect\n\t});\n}\n//#endregion\n//#region src/effects/Grid.tsx\nvar GridImpl = /* @__PURE__ */ createEffectComponent(GridEffect);\nfunction Grid({ size, ref, ...props }) {\n\tconst invalidate = useThree((state) => state.invalidate);\n\tconst localRef = useRef(null);\n\tuseImperativeHandle(ref, () => localRef.current, []);\n\tuseLayoutEffect(() => {\n\t\tif (size) {\n\t\t\tlocalRef.current?.setSize(size.width, size.height);\n\t\t\tinvalidate();\n\t\t}\n\t}, [size, invalidate]);\n\treturn /* @__PURE__ */ jsx(GridImpl, {\n\t\tref: localRef,\n\t\t...props\n\t});\n}\n//#endregion\n//#region src/effects/HueSaturation.tsx\nvar HueSaturation = /* @__PURE__ */ createEffectComponent(HueSaturationEffect);\n//#endregion\n//#region src/effects/LensFlare.tsx\nvar LensFlareShader = { fragmentShader: `\n    uniform float time;\n    uniform vec2 lensPosition;\n    uniform vec2 screenRes;\n    uniform vec3 colorGain;\n    uniform float starPoints;\n    uniform float glareSize;\n    uniform float flareSize;\n    uniform float flareSpeed;\n    uniform float flareShape;\n    uniform float haloScale;\n    uniform float opacity;\n    uniform bool animated;\n    uniform bool anamorphic;\n    uniform bool enabled;\n    uniform bool secondaryGhosts;\n    uniform bool starBurst;\n    uniform float ghostScale;\n    uniform bool aditionalStreaks;\n    uniform sampler2D lensDirtTexture;\n    vec2 vTexCoord;\n    \n    float rand(float n){return fract(sin(n) * 43758.5453123);}\n\n    float noise(float p){\n      float fl = floor(p);\n      float fc = fract(p);\n      return mix(rand(fl),rand(fl + 1.0), fc);\n    }\n\n    vec3 hsv2rgb(vec3 c)\n    {\n      vec4 k = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n      vec3 p = abs(fract(c.xxx + k.xyz) * 6.0 - k.www);\n      return c.z * mix(k.xxx, clamp(p - k.xxx, 0.0, 1.0), c.y);\n    }\n\n    float saturate(float x)\n    {\n      return clamp(x, 0.,1.);\n    }\n\n    vec2 rotateUV(vec2 uv, float rotation)\n    {\n      return vec2(\n          cos(rotation) * uv.x + sin(rotation) * uv.y,\n          cos(rotation) * uv.y - sin(rotation) * uv.x\n      );\n    }\n\n    // Based on https://www.shadertoy.com/view/XtKfRV\n    vec3 drawflare(vec2 p, float intensity, float rnd, float speed, int id)\n    {\n      float flarehueoffset = (1. / 32.) * float(id) * 0.1;\n      float lingrad = distance(vec2(0.), p);\n      float expgrad = 1. / exp(lingrad * (fract(rnd) * 0.66 + 0.33));\n      vec3 colgrad = hsv2rgb(vec3( fract( (expgrad * 8.) + speed * flareSpeed + flarehueoffset), pow(1.-abs(expgrad*2.-1.), 0.45), 20.0 * expgrad * intensity)); //rainbow spectrum effect\n\n      float internalStarPoints;\n\n      if(anamorphic){\n        internalStarPoints = 1.0;\n      } else{\n        internalStarPoints = starPoints;\n      }\n      \n      float blades = length(p * flareShape * sin(internalStarPoints * atan(p.x, p.y)));\n      \n      float comp = pow(1.-saturate(blades), ( anamorphic ? 100. : 12.));\n      comp += saturate(expgrad-0.9) * 3.;\n      comp = pow(comp * expgrad, 8. + (1.-intensity) * 5.);\n      \n      if(flareSpeed > 0.0){\n        return vec3(comp) * colgrad;\n      } else{\n        return vec3(comp) * flareSize * 15.;\n      }\n    }\n\n    float dist(vec3 a, vec3 b) { return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z); }\n\n    vec3 saturate(vec3 x)\n    {\n      return clamp(x, vec3(0.0), vec3(1.0));\n    }\n\n    // Based on https://www.shadertoy.com/view/XtKfRV\n    float glare(vec2 uv, vec2 pos, float size)\n    {\n      vec2 main;\n\n      if(animated){\n        main = rotateUV(uv-pos, time * 0.1);      \n      } else{\n        main = uv-pos;     \n      }\n      \n      float ang = atan(main.y, main.x) * (anamorphic ? 1.0 : starPoints);\n      float dist = length(main); \n      dist = pow(dist, .9);\n      \n      float f0 = 1.0/(length(uv-pos)*(1.0/size*16.0)+.2);\n\n      return f0+f0*(sin((ang))*.2 +.3);\n    }\n\n    float sdHex(vec2 p){\n      p = abs(p);\n      vec2 q = vec2(p.x*2.0*0.5773503, p.y + p.x*0.5773503);\n      return dot(step(q.xy,q.yx), 1.0-q.yx);\n    }\n\n    //Based on https://www.shadertoy.com/view/dllSRX\n    float fpow(float x, float k){\n      return x > k ? pow((x-k)/(1.0-k),2.0) : 0.0;\n    }\n\n    vec3 renderhex(vec2 uv, vec2 p, float s, vec3 col){\n      uv -= p;\n      if (abs(uv.x) < 0.2*s && abs(uv.y) < 0.2*s){\n          return mix(vec3(0),mix(vec3(0),col,0.1 + fpow(length(uv/s),0.1)*10.0),smoothstep(0.0,0.1,sdHex(uv*20.0/s)));\n      }\n      return vec3(0);\n    }\n\n    // Based on https://www.shadertoy.com/view/4sX3Rs\n    vec3 LensFlare(vec2 uv, vec2 pos)\n    {\n      vec2 main = uv-pos;\n      vec2 uvd = uv*(length(uv));\n      \n      float ang = atan(main.x,main.y);\n      \n      float f0 = .3/(length(uv-pos)*16.0+1.0);\n      \n      f0 = f0*(sin(noise(sin(ang*3.9-(animated ? time : 0.0) * 0.3) * starPoints))*.2 );\n      \n      float f1 = max(0.01-pow(length(uv+1.2*pos),1.9),.0)*7.0;\n\n      float f2 = max(.9/(10.0+32.0*pow(length(uvd+0.99*pos),2.0)),.0)*0.35;\n      float f22 = max(.9/(11.0+32.0*pow(length(uvd+0.85*pos),2.0)),.0)*0.23;\n      float f23 = max(.9/(12.0+32.0*pow(length(uvd+0.95*pos),2.0)),.0)*0.6;\n      \n      vec2 uvx = mix(uv,uvd, 0.1);\n      \n      float f4 = max(0.01-pow(length(uvx+0.4*pos),2.9),.0)*4.02;\n      float f42 = max(0.0-pow(length(uvx+0.45*pos),2.9),.0)*4.1;\n      float f43 = max(0.01-pow(length(uvx+0.5*pos),2.9),.0)*4.6;\n      \n      uvx = mix(uv,uvd,-.4);\n      \n      float f5 = max(0.01-pow(length(uvx+0.1*pos),5.5),.0)*2.0;\n      float f52 = max(0.01-pow(length(uvx+0.2*pos),5.5),.0)*2.0;\n      float f53 = max(0.01-pow(length(uvx+0.1*pos),5.5),.0)*2.0;\n      \n      uvx = mix(uv,uvd, 2.1);\n      \n      float f6 = max(0.01-pow(length(uvx-0.3*pos),1.61),.0)*3.159;\n      float f62 = max(0.01-pow(length(uvx-0.325*pos),1.614),.0)*3.14;\n      float f63 = max(0.01-pow(length(uvx-0.389*pos),1.623),.0)*3.12;\n      \n      vec3 c = vec3(glare(uv,pos, glareSize));\n\n      vec2 prot;\n\n      if(animated){\n        prot = rotateUV(uv - pos, (time * 0.1));  \n      } else if(anamorphic){\n        prot = rotateUV(uv - pos, 1.570796);     \n      } else {\n        prot = uv - pos;\n      }\n\n      c += drawflare(prot, (anamorphic ? flareSize * 10. : flareSize), 0.1, time, 1);\n      \n      c.r+=f1+f2+f4+f5+f6; c.g+=f1+f22+f42+f52+f62; c.b+=f1+f23+f43+f53+f63;\n      c = c*1.3 * vec3(length(uvd)+.09);\n      c+=vec3(f0);\n      \n      return c;\n    }\n\n    vec3 cc(vec3 color, float factor,float factor2)\n    {\n      float w = color.x+color.y+color.z;\n      return mix(color,vec3(w)*factor,w*factor2);\n    }    \n\n    float rnd(vec2 p)\n    {\n      float f = fract(sin(dot(p, vec2(12.1234, 72.8392) )*45123.2));\n      return f;   \n    }\n\n    float rnd(float w)\n    {\n      float f = fract(sin(w)*1000.);\n      return f;   \n    }\n\n    float regShape(vec2 p, int N)\n    {\n      float f;\n      \n      float a=atan(p.x,p.y)+.2;\n      float b=6.28319/float(N);\n      f=smoothstep(.5,.51, cos(floor(.5+a/b)*b-a)*length(p.xy)* 2.0  -ghostScale);\n          \n      return f;\n    }\n\n    // Based on https://www.shadertoy.com/view/Xlc3D2\n    vec3 circle(vec2 p, float size, float decay, vec3 color, vec3 color2, float dist, vec2 position)\n    {\n      float l = length(p + position*(dist*2.))+size/2.;\n      float l2 = length(p + position*(dist*4.))+size/3.;\n      \n      float c = max(0.01-pow(length(p + position*dist), size*ghostScale), 0.0)*10.;\n      float c1 = max(0.001-pow(l-0.3, 1./40.)+sin(l*20.), 0.0)*3.;\n      float c2 =  max(0.09/pow(length(p-position*dist/.5)*1., .95), 0.0)/20.;\n      float s = max(0.02-pow(regShape(p*5. + position*dist*5. + decay, 6) , 1.), 0.0)*1.5;\n      \n      color = cos(vec3(0.44, .24, .2)*16. + dist/8.)*0.5+.5;\n      vec3 f = c*color;\n      f += c1*color;\n      f += c2*color;  \n      f +=  s*color;\n      return f;\n    }\n\n    vec4 getLensColor(float x){\n      return vec4(vec3(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(vec3(0., 0., 0.),\n        vec3(0., 0., 0.), smoothstep(0.0, 0.063, x)),\n        vec3(0., 0., 0.), smoothstep(0.063, 0.125, x)),\n        vec3(0.0, 0., 0.), smoothstep(0.125, 0.188, x)),\n        vec3(0.188, 0.131, 0.116), smoothstep(0.188, 0.227, x)),\n        vec3(0.31, 0.204, 0.537), smoothstep(0.227, 0.251, x)),\n        vec3(0.192, 0.106, 0.286), smoothstep(0.251, 0.314, x)),\n        vec3(0.102, 0.008, 0.341), smoothstep(0.314, 0.392, x)),\n        vec3(0.086, 0.0, 0.141), smoothstep(0.392, 0.502, x)),\n        vec3(1.0, 0.31, 0.0), smoothstep(0.502, 0.604, x)),\n        vec3(.1, 0.1, 0.1), smoothstep(0.604, 0.643, x)),\n        vec3(1.0, 0.929, 0.0), smoothstep(0.643, 0.761, x)),\n        vec3(1.0, 0.086, 0.424), smoothstep(0.761, 0.847, x)),\n        vec3(1.0, 0.49, 0.0), smoothstep(0.847, 0.89, x)),\n        vec3(0.945, 0.275, 0.475), smoothstep(0.89, 0.941, x)),\n        vec3(0.251, 0.275, 0.796), smoothstep(0.941, 1.0, x))),\n      1.0);\n    }\n\n    float dirtNoise(vec2 p){\n      vec2 f = fract(p);\n      f = (f * f) * (3.0 - (2.0 * f));    \n      float n = dot(floor(p), vec2(1.0, 157.0));\n      vec4 a = fract(sin(vec4(n + 0.0, n + 1.0, n + 157.0, n + 158.0)) * 43758.5453123);\n      return mix(mix(a.x, a.y, f.x), mix(a.z, a.w, f.x), f.y);\n    } \n\n    float fbm(vec2 p){\n      const mat2 m = mat2(0.80, -0.60, 0.60, 0.80);\n      float f = 0.0;\n      f += 0.5000*dirtNoise(p); p = m*p*2.02;\n      f += 0.2500*dirtNoise(p); p = m*p*2.03;\n      f += 0.1250*dirtNoise(p); p = m*p*2.01;\n      f += 0.0625*dirtNoise(p);\n      return f/0.9375;\n    }\n\n    vec4 getLensStar(vec2 p){\n      vec2 pp = (p - vec2(0.5)) * 2.0;\n      float a = atan(pp.y, pp.x);\n      vec4 cp = vec4(sin(a * 1.0), length(pp), sin(a * 13.0), sin(a * 53.0));\n      float d = sin(clamp(pow(length(vec2(0.5) - p) * 0.5 + haloScale /2., 5.0), 0.0, 1.0) * 3.14159);\n      vec3 c = vec3(d) * vec3(fbm(cp.xy * 16.0) * fbm(cp.zw * 9.0) * max(max(max(max(0.5, sin(a * 1.0)), sin(a * 3.0) * 0.8), sin(a * 7.0) * 0.8), sin(a * 9.0) * 10.6));\n      c *= vec3(mix(2.0, (sin(length(pp.xy) * 256.0) * 0.5) + 0.5, sin((clamp((length(pp.xy) - 0.875) / 0.1, 0.0, 1.0) + 0.0) * 2.0 * 3.14159) * 1.5) + 0.5) * 0.3275;\n      return vec4(vec3(c * 1.0), d);\t\n    }\n\n    vec4 getLensDirt(vec2 p){\n      p.xy += vec2(fbm(p.yx * 3.0), fbm(p.yx * 2.0)) * 0.0825;\n      vec3 o = vec3(mix(0.125, 0.25, max(max(smoothstep(0.1, 0.0, length(p - vec2(0.25))),\n                                            smoothstep(0.4, 0.0, length(p - vec2(0.75)))),\n                                            smoothstep(0.8, 0.0, length(p - vec2(0.875, 0.125))))));\n      o += vec3(max(fbm(p * 1.0) - 0.5, 0.0)) * 0.5;\n      o += vec3(max(fbm(p * 2.0) - 0.5, 0.0)) * 0.5;\n      o += vec3(max(fbm(p * 4.0) - 0.5, 0.0)) * 0.25;\n      o += vec3(max(fbm(p * 8.0) - 0.75, 0.0)) * 1.0;\n      o += vec3(max(fbm(p * 16.0) - 0.75, 0.0)) * 0.75;\n      o += vec3(max(fbm(p * 64.0) - 0.75, 0.0)) * 0.5;\n      return vec4(clamp(o, vec3(0.15), vec3(1.0)), 1.0);\t\n    }\n\n    vec4 textureLimited(sampler2D tex, vec2 texCoord){\n      if(((texCoord.x < 0.) || (texCoord.y < 0.)) || ((texCoord.x > 1.) || (texCoord.y > 1.))){\n        return vec4(0.0);\n      }else{\n        return texture(tex, texCoord); \n      }\n    }\n\n    vec4 textureDistorted(sampler2D tex, vec2 texCoord, vec2 direction, vec3 distortion) {\n      return vec4(textureLimited(tex, (texCoord + (direction * distortion.r))).r,\n                  textureLimited(tex, (texCoord + (direction * distortion.g))).g,\n                  textureLimited(tex, (texCoord + (direction * distortion.b))).b,\n                  1.0);\n    }\n\n    // Based on https://www.shadertoy.com/view/4sK3W3\n    vec4 getStartBurst(){\n      vec2 aspectTexCoord = vec2(1.0) - (((vTexCoord - vec2(0.5)) * vec2(1.0)) + vec2(0.5)); \n      vec2 texCoord = vec2(1.0) - vTexCoord; \n      vec2 ghostVec = (vec2(0.5) - texCoord) * 0.3 - lensPosition;\n      vec2 ghostVecAspectNormalized = normalize(ghostVec * vec2(1.0)) * vec2(1.0);\n      vec2 haloVec = normalize(ghostVec) * 0.6;\n      vec2 haloVecAspectNormalized = ghostVecAspectNormalized * 0.6;\n      vec2 texelSize = vec2(1.0) / vec2(screenRes.xy);\n      vec3 distortion = vec3(-(texelSize.x * 1.5), 0.2, texelSize.x * 1.5);\n      vec4 c = vec4(0.0);\n      for (int i = 0; i < 8; i++) {\n        vec2 offset = texCoord + (ghostVec * float(i));\n        c += textureDistorted(lensDirtTexture, offset, ghostVecAspectNormalized, distortion) * pow(max(0.0, 1.0 - (length(vec2(0.5) - offset) / length(vec2(0.5)))), 10.0);\n      }                       \n      vec2 haloOffset = texCoord + haloVecAspectNormalized; \n      return (c * getLensColor((length(vec2(0.5) - aspectTexCoord) / length(vec2(haloScale))))) + \n            (textureDistorted(lensDirtTexture, haloOffset, ghostVecAspectNormalized, distortion) * pow(max(0.0, 1.0 - (length(vec2(0.5) - haloOffset) / length(vec2(0.5)))), 10.0));\n    } \n\n    void mainImage(vec4 inputColor, vec2 uv, out vec4 outputColor)\n    {\n      vec2 myUV = uv -0.5;\n      myUV.y *= screenRes.y/screenRes.x;\n      vec2 finalLensPosition = lensPosition * 0.5;\n      finalLensPosition.y *= screenRes.y/screenRes.x;\n      \n      //First Lens flare pass\n      vec3 finalColor = LensFlare(myUV, finalLensPosition) * 20.0 * colorGain / 256.;\n\n      //Aditional streaks\n      if(aditionalStreaks){\n        vec3 circColor = vec3(0.9, 0.2, 0.1);\n        vec3 circColor2 = vec3(0.3, 0.1, 0.9);\n\n        for(float i=0.;i<10.;i++){\n          finalColor += circle(myUV, pow(rnd(i*2000.)*2.8, .1)+1.41, 0.0, circColor+i , circColor2+i, rnd(i*20.)*3.+0.2-.5, lensPosition);\n        }\n      }\n\n      //Alternative ghosts\n      if(secondaryGhosts){\n        vec3 altGhosts = vec3(0);\n        altGhosts += renderhex(myUV, -lensPosition*0.25, ghostScale * 1.4, vec3(0.25,0.35,0));\n        altGhosts += renderhex(myUV, lensPosition*0.25, ghostScale * 0.5, vec3(1,0.5,0.5));\n        altGhosts += renderhex(myUV, lensPosition*0.1, ghostScale * 1.6, vec3(1,1,1));\n        altGhosts += renderhex(myUV, lensPosition*1.8, ghostScale * 2.0, vec3(0,0.5,0.75));\n        altGhosts += renderhex(myUV, lensPosition*1.25, ghostScale * 0.8, vec3(1,1,0.5));\n        altGhosts += renderhex(myUV, -lensPosition*1.25, ghostScale * 5.0, vec3(0.5,0.5,0.25));\n        \n        //Circular ghosts\n        altGhosts += fpow(1.0 - abs(distance(lensPosition*0.8,myUV) - 0.7),0.985)*colorGain / 2100.;\n        finalColor += altGhosts;\n      }\n      \n\n      //Starburst                     \n      if(starBurst){\n        vTexCoord = myUV + 0.5;\n        vec4 lensMod = getLensDirt(myUV);\n        float tooBright = 1.0 - (clamp(0.5, 0.0, 0.5) * 2.0); \n        float tooDark = clamp(0.5 - 0.5, 0.0, 0.5) * 2.0;\n        lensMod += mix(lensMod, pow(lensMod * 2.0, vec4(2.0)) * 0.5, tooBright);\n        float lensStarRotationAngle = ((myUV.x + myUV.y)) * (1.0 / 6.0);\n        vec2 lensStarTexCoord = (mat2(cos(lensStarRotationAngle), -sin(lensStarRotationAngle), sin(lensStarRotationAngle), cos(lensStarRotationAngle)) * vTexCoord);\n        lensMod += getLensStar(lensStarTexCoord) * 2.;\n        \n        finalColor += clamp((lensMod.rgb * getStartBurst().rgb ), 0.01, 1.0);\n      }\n\n      //Final composed output\n      if(enabled){\n        outputColor = vec4(mix(finalColor, vec3(.0), opacity) + inputColor.rgb, inputColor.a);\n      } else {\n        outputColor = vec4(inputColor);\n      }\n    }\n  ` };\nvar LensFlareEffect = class extends Effect {\n\tconstructor({ blendFunction = 23, enabled = true, glareSize = .2, lensPosition = new Vector3(-25, 6, -60), screenRes = new Vector2(0, 0), starPoints = 6, flareSize = .01, flareSpeed = .01, flareShape = .01, animated = true, anamorphic = false, colorGain = new Color(20, 20, 20), lensDirtTexture = null, haloScale = .5, secondaryGhosts = true, aditionalStreaks = true, ghostScale = 0, opacity = 1, starBurst = false } = {}) {\n\t\tsuper(\"LensFlareEffect\", LensFlareShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tuniforms: /* @__PURE__ */ new Map([\n\t\t\t\t[\"enabled\", new Uniform(enabled)],\n\t\t\t\t[\"glareSize\", new Uniform(glareSize)],\n\t\t\t\t[\"lensPosition\", new Uniform(lensPosition)],\n\t\t\t\t[\"time\", new Uniform(0)],\n\t\t\t\t[\"screenRes\", new Uniform(screenRes)],\n\t\t\t\t[\"starPoints\", new Uniform(starPoints)],\n\t\t\t\t[\"flareSize\", new Uniform(flareSize)],\n\t\t\t\t[\"flareSpeed\", new Uniform(flareSpeed)],\n\t\t\t\t[\"flareShape\", new Uniform(flareShape)],\n\t\t\t\t[\"animated\", new Uniform(animated)],\n\t\t\t\t[\"anamorphic\", new Uniform(anamorphic)],\n\t\t\t\t[\"colorGain\", new Uniform(colorGain)],\n\t\t\t\t[\"lensDirtTexture\", new Uniform(lensDirtTexture)],\n\t\t\t\t[\"haloScale\", new Uniform(haloScale)],\n\t\t\t\t[\"secondaryGhosts\", new Uniform(secondaryGhosts)],\n\t\t\t\t[\"aditionalStreaks\", new Uniform(aditionalStreaks)],\n\t\t\t\t[\"ghostScale\", new Uniform(ghostScale)],\n\t\t\t\t[\"starBurst\", new Uniform(starBurst)],\n\t\t\t\t[\"opacity\", new Uniform(opacity)]\n\t\t\t])\n\t\t});\n\t}\n\tupdate(_renderer, _inputBuffer, deltaTime) {\n\t\tconst time = this.uniforms.get(\"time\");\n\t\tif (time) time.value += deltaTime;\n\t}\n\tu(name) {\n\t\treturn this.uniforms.get(name).value;\n\t}\n\tsetU(name, value) {\n\t\tthis.uniforms.get(name).value = value;\n\t}\n\tget enabled() {\n\t\treturn this.u(\"enabled\");\n\t}\n\tset enabled(value) {\n\t\tthis.setU(\"enabled\", value);\n\t}\n\tget glareSize() {\n\t\treturn this.u(\"glareSize\");\n\t}\n\tset glareSize(value) {\n\t\tthis.setU(\"glareSize\", value);\n\t}\n\tget lensPosition() {\n\t\treturn this.u(\"lensPosition\");\n\t}\n\tset lensPosition(value) {\n\t\tthis.setU(\"lensPosition\", value);\n\t}\n\tget screenRes() {\n\t\treturn this.u(\"screenRes\");\n\t}\n\tset screenRes(value) {\n\t\tthis.setU(\"screenRes\", value);\n\t}\n\tget starPoints() {\n\t\treturn this.u(\"starPoints\");\n\t}\n\tset starPoints(value) {\n\t\tthis.setU(\"starPoints\", value);\n\t}\n\tget flareSize() {\n\t\treturn this.u(\"flareSize\");\n\t}\n\tset flareSize(value) {\n\t\tthis.setU(\"flareSize\", value);\n\t}\n\tget flareSpeed() {\n\t\treturn this.u(\"flareSpeed\");\n\t}\n\tset flareSpeed(value) {\n\t\tthis.setU(\"flareSpeed\", value);\n\t}\n\tget flareShape() {\n\t\treturn this.u(\"flareShape\");\n\t}\n\tset flareShape(value) {\n\t\tthis.setU(\"flareShape\", value);\n\t}\n\tget animated() {\n\t\treturn this.u(\"animated\");\n\t}\n\tset animated(value) {\n\t\tthis.setU(\"animated\", value);\n\t}\n\tget anamorphic() {\n\t\treturn this.u(\"anamorphic\");\n\t}\n\tset anamorphic(value) {\n\t\tthis.setU(\"anamorphic\", value);\n\t}\n\tget colorGain() {\n\t\treturn this.u(\"colorGain\");\n\t}\n\tset colorGain(value) {\n\t\tthis.setU(\"colorGain\", value);\n\t}\n\tget lensDirtTexture() {\n\t\treturn this.u(\"lensDirtTexture\");\n\t}\n\tset lensDirtTexture(value) {\n\t\tthis.setU(\"lensDirtTexture\", value);\n\t}\n\tget haloScale() {\n\t\treturn this.u(\"haloScale\");\n\t}\n\tset haloScale(value) {\n\t\tthis.setU(\"haloScale\", value);\n\t}\n\tget secondaryGhosts() {\n\t\treturn this.u(\"secondaryGhosts\");\n\t}\n\tset secondaryGhosts(value) {\n\t\tthis.setU(\"secondaryGhosts\", value);\n\t}\n\tget aditionalStreaks() {\n\t\treturn this.u(\"aditionalStreaks\");\n\t}\n\tset aditionalStreaks(value) {\n\t\tthis.setU(\"aditionalStreaks\", value);\n\t}\n\tget ghostScale() {\n\t\treturn this.u(\"ghostScale\");\n\t}\n\tset ghostScale(value) {\n\t\tthis.setU(\"ghostScale\", value);\n\t}\n\tget starBurst() {\n\t\treturn this.u(\"starBurst\");\n\t}\n\tset starBurst(value) {\n\t\tthis.setU(\"starBurst\", value);\n\t}\n\tget opacity() {\n\t\treturn this.u(\"opacity\");\n\t}\n\tset opacity(value) {\n\t\tthis.setU(\"opacity\", value);\n\t}\n};\nvar LensFlareWrapped = /* @__PURE__ */ createEffectComponent(LensFlareEffect);\nvar DEFAULT_SCREEN_RES = /* @__PURE__ */ new Vector2(0, 0);\nvar DEFAULT_LENS_POSITION = /* @__PURE__ */ new Vector3(-25, 6, -60);\nvar LensFlare = (props) => {\n\tconst { ref: forwardedRef, smoothTime = .07, blendFunction = 23, enabled = true, glareSize = .2, screenRes, starPoints = 6, flareSize = .01, flareSpeed = .01, flareShape = .01, animated = true, anamorphic = false, colorGain = new Color(20, 20, 20), lensDirtTexture = null, haloScale = .5, secondaryGhosts = true, aditionalStreaks = true, ghostScale = 0, opacity = 1, starBurst = false } = props;\n\tconst lensPosition = useVector3({ lensPosition: props.lensPosition ?? DEFAULT_LENS_POSITION }, \"lensPosition\");\n\tconst viewport = useThree(({ viewport }) => viewport);\n\tconst raycaster = useThree(({ raycaster }) => raycaster);\n\tconst { scene, camera } = useContext(EffectComposerContext);\n\tconst [raycasterPos] = useState(() => new Vector2());\n\tconst [projectedPosition] = useState(() => new Vector3());\n\tconst ref = useRef(null);\n\tconst setRef = useMergeRefs(ref, forwardedRef);\n\tuseFrame((_, delta) => {\n\t\tif (!ref?.current) return;\n\t\tconst uLensPosition = ref.current.uniforms.get(\"lensPosition\");\n\t\tconst uOpacity = ref.current.uniforms.get(\"opacity\");\n\t\tif (!uLensPosition || !uOpacity) return;\n\t\tlet target = 0;\n\t\tprojectedPosition.copy(lensPosition).project(camera);\n\t\tif (projectedPosition.z > 1) return;\n\t\tuLensPosition.value.x = projectedPosition.x;\n\t\tuLensPosition.value.y = projectedPosition.y;\n\t\traycasterPos.x = projectedPosition.x;\n\t\traycasterPos.y = projectedPosition.y;\n\t\traycaster.setFromCamera(raycasterPos, camera);\n\t\tconst { object } = raycaster.intersectObjects(scene.children, true)[0] || {};\n\t\tif (object) {\n\t\t\ttarget = 1;\n\t\t\tif (object.userData?.lensflare === \"no-occlusion\") target = 0;\n\t\t\telse if (object instanceof Mesh) {\n\t\t\t\tif (object.material.uniforms?._transmission?.value > .2) target = .2;\n\t\t\t\telse if (object.material._transmission && object.material._transmission > .2) target = .2;\n\t\t\t\telse if (object.material.transparent) target = object.material.opacity;\n\t\t\t}\n\t\t}\n\t\teasing.damp(uOpacity, \"value\", target, smoothTime, delta);\n\t});\n\tuseEffect(() => {\n\t\tif (!ref?.current) return;\n\t\tconst screenRes = ref.current.uniforms.get(\"screenRes\");\n\t\tif (screenRes) {\n\t\t\tscreenRes.value.x = viewport.width;\n\t\t\tscreenRes.value.y = viewport.height;\n\t\t}\n\t}, [viewport]);\n\treturn /* @__PURE__ */ jsx(LensFlareWrapped, {\n\t\tref: setRef,\n\t\tblendFunction,\n\t\tenabled,\n\t\tglareSize,\n\t\tlensPosition,\n\t\tscreenRes: screenRes ?? DEFAULT_SCREEN_RES,\n\t\tstarPoints,\n\t\tflareSize,\n\t\tflareSpeed,\n\t\tflareShape,\n\t\tanimated,\n\t\tanamorphic,\n\t\tcolorGain,\n\t\tlensDirtTexture,\n\t\thaloScale,\n\t\tsecondaryGhosts,\n\t\taditionalStreaks,\n\t\tghostScale,\n\t\topacity,\n\t\tstarBurst\n\t});\n};\n//#endregion\n//#region src/effects/LUT.tsx\nvar LIVE_KEYS$4 = [\n\t\"blendMode-blendFunction\",\n\t\"lut\",\n\t\"tetrahedralInterpolation\"\n];\nfunction LUT({ lut, blendFunction, tetrahedralInterpolation, ref }) {\n\tconst effect = useMemo(() => new LUT3DEffect(lut), []);\n\tuseLiveDefaults(effect, {\n\t\t\"blendMode-blendFunction\": blendFunction,\n\t\tlut,\n\t\ttetrahedralInterpolation\n\t}, LIVE_KEYS$4);\n\tuseDispose(effect);\n\treturn /* @__PURE__ */ jsx(\"primitive\", {\n\t\tref,\n\t\tobject: effect\n\t});\n}\n//#endregion\n//#region src/effects/Noise.tsx\nvar NoiseImpl = /* @__PURE__ */ createEffectComponent(NoiseEffect);\nfunction Noise({ blendFunction = 5, ...props }) {\n\treturn /* @__PURE__ */ jsx(NoiseImpl, {\n\t\tblendFunction,\n\t\t...props\n\t});\n}\n//#endregion\n//#region src/effects/Outline.tsx\nvar LIVE_KEYS$3 = [\n\t\"patternTexture\",\n\t\"patternScale\",\n\t\"edgeStrength\",\n\t\"pulseSpeed\",\n\t\"visibleEdgeColor\",\n\t\"hiddenEdgeColor\",\n\t\"multisampling\",\n\t\"width\",\n\t\"height\",\n\t\"kernelSize\",\n\t\"blur\",\n\t\"xRay\",\n\t\"dithering\",\n\t\"blendMode-blendFunction\"\n];\nfunction set$1(effect, key, value) {\n\tif (key === \"visibleEdgeColor\" || key === \"hiddenEdgeColor\") applyPierced(effect, key, new Color(value));\n\telse applyPierced(effect, key, value);\n}\nfunction Outline({ selection = EMPTY_ARRAY, selectionLayer = 10, blendFunction, resolutionScale, resolutionX, resolutionY, ref, ...liveProps }) {\n\tconst { scene, camera, autoClear } = use(EffectComposerContext);\n\tconst effect = useMemo(() => new OutlineEffect(scene, camera, {\n\t\tresolutionScale,\n\t\tresolutionX,\n\t\tresolutionY\n\t}), [\n\t\tscene,\n\t\tcamera,\n\t\tresolutionScale,\n\t\tresolutionX,\n\t\tresolutionY\n\t]);\n\tuseEffect(() => {\n\t\tif (autoClear !== false) console.warn(\"Outline requires <EffectComposer autoClear={false}> to render correctly.\");\n\t}, [autoClear]);\n\tuseLiveDefaults(effect, {\n\t\t...liveProps,\n\t\t\"blendMode-blendFunction\": blendFunction\n\t}, LIVE_KEYS$3, readPierced, set$1);\n\tuseSelectionSync(effect, selection, selectionLayer);\n\tuseDispose(effect);\n\treturn /* @__PURE__ */ jsx(\"primitive\", {\n\t\tref,\n\t\tobject: effect\n\t});\n}\n//#endregion\n//#region src/effects/Pixelation.tsx\nvar PixelationImpl = /* @__PURE__ */ createEffectComponent(PixelationEffect);\nfunction Pixelation({ granularity = 5, ref }) {\n\treturn /* @__PURE__ */ jsx(PixelationImpl, {\n\t\tgranularity,\n\t\tref\n\t});\n}\n//#endregion\n//#region src/effects/Ramp.tsx\nvar RampShader = { fragmentShader: `\n    uniform int rampType;\n\n    uniform vec2 rampStart;\n    uniform vec2 rampEnd;\n\n    uniform vec4 startColor;\n    uniform vec4 endColor;\n\n    uniform float rampBias;\n    uniform float rampGain;\n\n    uniform bool rampMask;\n    uniform bool rampInvert;\n\n    float getBias(float time, float bias) {\n      return time / (((1.0 / bias) - 2.0) * (1.0 - time) + 1.0);\n    }\n\n    float getGain(float time, float gain) {\n      if (time < 0.5)\n        return getBias(time * 2.0, gain) / 2.0;\n      else\n        return getBias(time * 2.0 - 1.0, 1.0 - gain) / 2.0 + 0.5;\n    }\n\n    void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n      vec2 centerPixel = uv * resolution;\n      vec2 startPixel = rampStart * resolution;\n      vec2 endPixel = rampEnd * resolution;\n\n      float rampAlpha;\n\n      if (rampType == 1) {\n        vec2 fuv = centerPixel / resolution.y;\n        vec2 suv = startPixel / resolution.y;\n        vec2 euv = endPixel / resolution.y;\n\n        float radius = length(suv - euv);\n        float falloff = length(fuv - suv);\n        rampAlpha = smoothstep(0.0, radius, falloff);\n      } else {\n        float radius = length(startPixel - endPixel);\n        vec2 direction = normalize(vec2(endPixel.x - startPixel.x, -(startPixel.y - endPixel.y)));\n\n        float fade = dot(centerPixel - startPixel, direction);\n        if (rampType == 2) fade = abs(fade);\n\n        rampAlpha = smoothstep(0.0, 1.0, fade / radius);\n      }\n\n      rampAlpha = abs((rampInvert ? 1.0 : 0.0) - getBias(rampAlpha, rampBias) * getGain(rampAlpha, rampGain));\n\n      if (rampMask) {\n        vec4 inputBuff = texture2D(inputBuffer, uv);\n        outputColor = mix(inputBuff, inputColor, rampAlpha);\n      } else {\n        outputColor = mix(startColor, endColor, rampAlpha);\n      }\n    }\n  ` };\nvar RampType = /* @__PURE__ */ function(RampType) {\n\tRampType[RampType[\"Linear\"] = 0] = \"Linear\";\n\tRampType[RampType[\"Radial\"] = 1] = \"Radial\";\n\tRampType[RampType[\"MirroredLinear\"] = 2] = \"MirroredLinear\";\n\treturn RampType;\n}({});\nvar RampEffect = class extends Effect {\n\tconstructor({ rampType = 0, rampStart = [.5, .5], rampEnd = [1, 1], startColor = [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1\n\t], endColor = [\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t1\n\t], rampBias = .5, rampGain = .5, rampMask = false, rampInvert = false, ...params } = {}) {\n\t\tsuper(\"RampEffect\", RampShader.fragmentShader, {\n\t\t\t...params,\n\t\t\tuniforms: /* @__PURE__ */ new Map([\n\t\t\t\t[\"rampType\", new Uniform(rampType)],\n\t\t\t\t[\"rampStart\", new Uniform(rampStart)],\n\t\t\t\t[\"rampEnd\", new Uniform(rampEnd)],\n\t\t\t\t[\"startColor\", new Uniform(startColor)],\n\t\t\t\t[\"endColor\", new Uniform(endColor)],\n\t\t\t\t[\"rampBias\", new Uniform(rampBias)],\n\t\t\t\t[\"rampGain\", new Uniform(rampGain)],\n\t\t\t\t[\"rampMask\", new Uniform(rampMask)],\n\t\t\t\t[\"rampInvert\", new Uniform(rampInvert)]\n\t\t\t])\n\t\t});\n\t}\n\tu(name) {\n\t\treturn this.uniforms.get(name).value;\n\t}\n\tsetU(name, value) {\n\t\tthis.uniforms.get(name).value = value;\n\t}\n\tget rampType() {\n\t\treturn this.u(\"rampType\");\n\t}\n\tset rampType(value) {\n\t\tthis.setU(\"rampType\", value);\n\t}\n\tget rampStart() {\n\t\treturn this.u(\"rampStart\");\n\t}\n\tset rampStart(value) {\n\t\tthis.setU(\"rampStart\", value);\n\t}\n\tget rampEnd() {\n\t\treturn this.u(\"rampEnd\");\n\t}\n\tset rampEnd(value) {\n\t\tthis.setU(\"rampEnd\", value);\n\t}\n\tget startColor() {\n\t\treturn this.u(\"startColor\");\n\t}\n\tset startColor(value) {\n\t\tthis.setU(\"startColor\", value);\n\t}\n\tget endColor() {\n\t\treturn this.u(\"endColor\");\n\t}\n\tset endColor(value) {\n\t\tthis.setU(\"endColor\", value);\n\t}\n\tget rampBias() {\n\t\treturn this.u(\"rampBias\");\n\t}\n\tset rampBias(value) {\n\t\tthis.setU(\"rampBias\", value);\n\t}\n\tget rampGain() {\n\t\treturn this.u(\"rampGain\");\n\t}\n\tset rampGain(value) {\n\t\tthis.setU(\"rampGain\", value);\n\t}\n\tget rampMask() {\n\t\treturn this.u(\"rampMask\");\n\t}\n\tset rampMask(value) {\n\t\tthis.setU(\"rampMask\", value);\n\t}\n\tget rampInvert() {\n\t\treturn this.u(\"rampInvert\");\n\t}\n\tset rampInvert(value) {\n\t\tthis.setU(\"rampInvert\", value);\n\t}\n};\nvar Ramp = /* @__PURE__ */ createEffectComponent(RampEffect);\n//#endregion\n//#region src/effects/ScanlineEffect.tsx\nvar Scanline = /* @__PURE__ */ createEffectComponent(ScanlineEffect);\n//#endregion\n//#region src/effects/SelectiveBloom.tsx\nvar addLight = (light, effect) => light.layers.enable(effect.selection.layer);\nvar removeLight = (light, effect) => light.layers.disable(effect.selection.layer);\nvar LIVE_KEYS$2 = [\n\t\"width\",\n\t\"height\",\n\t\"kernelSize\",\n\t\"intensity\",\n\t\"inverted\",\n\t\"ignoreBackground\"\n];\nfunction SelectiveBloom({ selection = EMPTY_ARRAY, selectionLayer = 10, lights = EMPTY_ARRAY, luminanceThreshold, luminanceSmoothing, mipmapBlur, radius, levels, resolutionScale, resolutionX, resolutionY, ref, ...liveProps }) {\n\tconst { scene, camera } = use(EffectComposerContext);\n\tconst invalidate = useThree((state) => state.invalidate);\n\tconst effect = useMemo(() => new SelectiveBloomEffect(scene, camera, {\n\t\tblendFunction: 0,\n\t\tluminanceThreshold,\n\t\tluminanceSmoothing,\n\t\tmipmapBlur,\n\t\tradius,\n\t\tlevels,\n\t\tresolutionScale,\n\t\tresolutionX,\n\t\tresolutionY\n\t}), [\n\t\tscene,\n\t\tcamera,\n\t\tluminanceThreshold,\n\t\tluminanceSmoothing,\n\t\tmipmapBlur,\n\t\tradius,\n\t\tlevels,\n\t\tresolutionScale,\n\t\tresolutionX,\n\t\tresolutionY\n\t]);\n\tuseLiveDefaults(effect, liveProps, LIVE_KEYS$2);\n\tuseSelectionSync(effect, selection, selectionLayer);\n\tuseEffect(() => {\n\t\tif (lights.length === 0) {\n\t\t\tconsole.warn(\"SelectiveBloom requires lights to work.\");\n\t\t\treturn;\n\t\t}\n\t\tconst resolvedLights = lights.map((light) => resolveRef(light)).filter((light) => light != null);\n\t\tif (resolvedLights.length === 0) return;\n\t\tresolvedLights.forEach((light) => addLight(light, effect));\n\t\tinvalidate();\n\t\treturn () => {\n\t\t\tresolvedLights.forEach((light) => removeLight(light, effect));\n\t\t\tinvalidate();\n\t\t};\n\t}, [\n\t\teffect,\n\t\tinvalidate,\n\t\tlights,\n\t\tselectionLayer\n\t]);\n\tuseDispose(effect);\n\treturn /* @__PURE__ */ jsx(\"primitive\", {\n\t\tref,\n\t\tobject: effect\n\t});\n}\n//#endregion\n//#region src/effects/Sepia.tsx\nvar Sepia = /* @__PURE__ */ createEffectComponent(SepiaEffect);\n//#endregion\n//#region src/effects/ShockWave.tsx\nvar LIVE_KEYS$1 = [\n\t\"position\",\n\t\"speed\",\n\t\"maxRadius\",\n\t\"waveSize\",\n\t\"amplitude\"\n];\nfunction ShockWave(props) {\n\tconst { speed, maxRadius, waveSize, amplitude, ref } = props;\n\tconst { camera } = use(EffectComposerContext);\n\tconst effect = useMemo(() => new ShockWaveEffect(camera), [camera]);\n\tuseLiveDefaults(effect, {\n\t\tposition: useVector3(props, \"position\"),\n\t\tspeed,\n\t\tmaxRadius,\n\t\twaveSize,\n\t\tamplitude\n\t}, LIVE_KEYS$1);\n\tuseDispose(effect);\n\treturn /* @__PURE__ */ jsx(\"primitive\", {\n\t\tref,\n\t\tobject: effect\n\t});\n}\n//#endregion\n//#region src/effects/SMAA.tsx\nvar SMAAImpl = /* @__PURE__ */ createEffectComponent(SMAAEffect);\nfunction SMAA({ preset, edgeDetectionMode, predicationMode, ...liveProps }) {\n\tconst args = useMemo(() => [{\n\t\tpreset,\n\t\tedgeDetectionMode,\n\t\tpredicationMode\n\t}], [\n\t\tpreset,\n\t\tedgeDetectionMode,\n\t\tpredicationMode\n\t]);\n\treturn /* @__PURE__ */ jsx(SMAAImpl, {\n\t\targs,\n\t\t...liveProps\n\t});\n}\n//#endregion\n//#region src/effects/SSAO.tsx\nvar LIVE_KEYS = [\n\t\"blendMode-blendFunction\",\n\t\"normalBuffer\",\n\t\"samples\",\n\t\"rings\",\n\t\"radius\",\n\t\"depthAwareUpsampling\",\n\t\"color\",\n\t\"luminanceInfluence\",\n\t\"intensity\",\n\t\"ssaoMaterial-bias\",\n\t\"ssaoMaterial-fade\",\n\t\"ssaoMaterial-minRadiusScale\",\n\t\"ssaoMaterial-distanceThreshold\",\n\t\"ssaoMaterial-distanceFalloff\",\n\t\"ssaoMaterial-worldDistanceThreshold\",\n\t\"ssaoMaterial-worldDistanceFalloff\",\n\t\"rangeThreshold\",\n\t\"rangeFalloff\",\n\t\"ssaoMaterial-worldProximityThreshold\",\n\t\"ssaoMaterial-worldProximityFalloff\"\n];\nfunction get(effect, key) {\n\tif (key === \"rangeThreshold\") return effect.ssaoMaterial.proximityThreshold;\n\tif (key === \"rangeFalloff\") return effect.ssaoMaterial.proximityFalloff;\n\treturn readPierced(effect, key);\n}\nfunction set(effect, key, value) {\n\tif (key === \"rangeThreshold\") effect.ssaoMaterial.proximityThreshold = value;\n\telse if (key === \"rangeFalloff\") effect.ssaoMaterial.proximityFalloff = value;\n\telse applyPierced(effect, key, value);\n}\nfunction SSAO({ blendFunction = 21, samples = 30, rings = 4, distanceThreshold = 1, distanceFalloff = 0, rangeThreshold = .5, rangeFalloff = .1, luminanceInfluence = .9, radius = 20, bias = .5, intensity = 1, color, worldDistanceThreshold, worldDistanceFalloff, worldProximityThreshold, worldProximityFalloff, minRadiusScale, fade, depthAwareUpsampling = true, resolutionScale, resolutionX, resolutionY, width, height, ref }) {\n\tconst { camera, normalPass, downSamplingPass, resolutionScale: composerResolutionScale } = use(EffectComposerContext);\n\tconst effect = useMemo(() => {\n\t\tif (normalPass === null && downSamplingPass === null) {\n\t\t\tconsole.error(\"Please enable the NormalPass in the EffectComposer in order to use SSAO.\");\n\t\t\treturn {};\n\t\t}\n\t\treturn new SSAOEffect(camera, normalPass && !downSamplingPass ? normalPass.texture : null, {\n\t\t\tblendFunction,\n\t\t\tsamples,\n\t\t\trings,\n\t\t\tdistanceThreshold,\n\t\t\tdistanceFalloff,\n\t\t\trangeThreshold,\n\t\t\trangeFalloff,\n\t\t\tluminanceInfluence,\n\t\t\tradius,\n\t\t\tbias,\n\t\t\tintensity,\n\t\t\tnormalDepthBuffer: downSamplingPass ? downSamplingPass.texture : null,\n\t\t\tresolutionScale: resolutionScale ?? composerResolutionScale ?? 1,\n\t\t\tresolutionX,\n\t\t\tresolutionY,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tdepthAwareUpsampling\n\t\t});\n\t}, [\n\t\tcamera,\n\t\tdownSamplingPass,\n\t\tnormalPass,\n\t\tresolutionScale,\n\t\tcomposerResolutionScale,\n\t\tresolutionX,\n\t\tresolutionY,\n\t\twidth,\n\t\theight\n\t]);\n\tuseLiveDefaults(effect instanceof SSAOEffect ? effect : null, {\n\t\t\"blendMode-blendFunction\": blendFunction,\n\t\tsamples,\n\t\trings,\n\t\tradius,\n\t\tdepthAwareUpsampling,\n\t\tcolor,\n\t\tluminanceInfluence,\n\t\tintensity,\n\t\t\"ssaoMaterial-bias\": bias,\n\t\t\"ssaoMaterial-fade\": fade,\n\t\t\"ssaoMaterial-minRadiusScale\": minRadiusScale,\n\t\t\"ssaoMaterial-distanceThreshold\": distanceThreshold,\n\t\t\"ssaoMaterial-distanceFalloff\": distanceFalloff,\n\t\t\"ssaoMaterial-worldDistanceThreshold\": worldDistanceThreshold,\n\t\t\"ssaoMaterial-worldDistanceFalloff\": worldDistanceFalloff,\n\t\trangeThreshold,\n\t\trangeFalloff,\n\t\t\"ssaoMaterial-worldProximityThreshold\": worldProximityThreshold,\n\t\t\"ssaoMaterial-worldProximityFalloff\": worldProximityFalloff\n\t}, LIVE_KEYS, get, set);\n\tuseDispose(effect);\n\treturn /* @__PURE__ */ jsx(\"primitive\", {\n\t\tref,\n\t\tobject: effect\n\t});\n}\n//#endregion\n//#region src/effects/Texture.tsx\nvar TextureImpl = /* @__PURE__ */ createEffectComponent(TextureEffect);\nfunction Texture({ textureSrc, texture, opacity = 1, ...props }) {\n\tconst t = useLoader(TextureLoader, textureSrc);\n\tuseLayoutEffect(() => {\n\t\tt.colorSpace = SRGBColorSpace;\n\t\tt.wrapS = t.wrapT = RepeatWrapping;\n\t}, [t]);\n\treturn /* @__PURE__ */ jsx(TextureImpl, {\n\t\t...props,\n\t\ttexture: texture ?? t,\n\t\topacity\n\t});\n}\n//#endregion\n//#region src/effects/TiltShift.tsx\nvar TiltShiftImpl = /* @__PURE__ */ createEffectComponent(TiltShiftEffect$1);\nfunction TiltShift({ blendFunction = 0, kernelSize, resolutionScale, resolutionX, resolutionY, ...liveProps }) {\n\tconst args = useMemo(() => [{\n\t\tkernelSize,\n\t\tresolutionScale,\n\t\tresolutionX,\n\t\tresolutionY\n\t}], [\n\t\tkernelSize,\n\t\tresolutionScale,\n\t\tresolutionX,\n\t\tresolutionY\n\t]);\n\treturn /* @__PURE__ */ jsx(TiltShiftImpl, {\n\t\tblendFunction,\n\t\targs,\n\t\t...liveProps\n\t});\n}\n//#endregion\n//#region src/effects/TiltShift2.tsx\nvar TiltShiftShader = { fragmentShader: `\n\n    // original shader by Evan Wallace\n\n    #define MAX_ITERATIONS 100\n\n    uniform float blur;\n    uniform float taper;\n    uniform vec2 start;\n    uniform vec2 end;\n    uniform vec2 direction;\n    uniform int samples;\n\n    float random(vec3 scale, float seed) {\n        /* use the fragment position for a different seed per-pixel */\n        return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n    }\n\n    void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n        vec4 color = vec4(0.0);\n        float total = 0.0;\n        vec2 startPixel = vec2(start.x * resolution.x, start.y * resolution.y);\n        vec2 endPixel = vec2(end.x * resolution.x, end.y * resolution.y);\n        float f_samples = float(samples);\n        float half_samples = f_samples / 2.0;\n\n        // use screen diagonal to normalize blur radii\n        float maxScreenDistance = distance(vec2(0.0), resolution); // diagonal distance\n        float gradientRadius = taper * (maxScreenDistance);\n        float blurRadius = blur * (maxScreenDistance / 16.0);\n\n        /* randomize the lookup values to hide the fixed number of samples */\n        float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n        vec2 normal = normalize(vec2(startPixel.y - endPixel.y, endPixel.x - startPixel.x));\n        float radius = smoothstep(0.0, 1.0, abs(dot(uv * resolution - startPixel, normal)) / gradientRadius) * blurRadius;\n\n        #pragma unroll_loop_start\n        for (int i = 0; i <= MAX_ITERATIONS; i++) {\n            if (i >= samples) { break; } // return early if over sample count\n            float f_i = float(i);\n            float s_i = -half_samples + f_i;\n            float percent = (s_i + offset - 0.5) / half_samples;\n            float weight = 1.0 - abs(percent);\n            vec4 sample_i = texture2D(inputBuffer, uv + normalize(direction) / resolution * percent * radius);\n            /* switch to pre-multiplied alpha to correctly blur transparent images */\n            sample_i.rgb *= sample_i.a;\n            color += sample_i * weight;\n            total += weight;\n        }\n        #pragma unroll_loop_end\n\n        outputColor = color / total;\n\n        /* switch back from pre-multiplied alpha */\n        outputColor.rgb /= outputColor.a + 0.00001;\n    }\n    ` };\nvar TiltShiftEffect = class extends Effect {\n\tconstructor({ blendFunction = 23, blur = .15, taper = .5, start = [.5, 0], end = [.5, 1], samples = 10, direction = [1, 1] } = {}) {\n\t\tsuper(\"TiltShiftEffect\", TiltShiftShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tattributes: 2,\n\t\t\tuniforms: /* @__PURE__ */ new Map([\n\t\t\t\t[\"blur\", new Uniform(blur)],\n\t\t\t\t[\"taper\", new Uniform(taper)],\n\t\t\t\t[\"start\", new Uniform(start)],\n\t\t\t\t[\"end\", new Uniform(end)],\n\t\t\t\t[\"samples\", new Uniform(samples)],\n\t\t\t\t[\"direction\", new Uniform(direction)]\n\t\t\t])\n\t\t});\n\t}\n\tu(name) {\n\t\treturn this.uniforms.get(name).value;\n\t}\n\tsetU(name, value) {\n\t\tthis.uniforms.get(name).value = value;\n\t}\n\tget blur() {\n\t\treturn this.u(\"blur\");\n\t}\n\tset blur(value) {\n\t\tthis.setU(\"blur\", value);\n\t}\n\tget taper() {\n\t\treturn this.u(\"taper\");\n\t}\n\tset taper(value) {\n\t\tthis.setU(\"taper\", value);\n\t}\n\tget start() {\n\t\treturn this.u(\"start\");\n\t}\n\tset start(value) {\n\t\tthis.setU(\"start\", value);\n\t}\n\tget end() {\n\t\treturn this.u(\"end\");\n\t}\n\tset end(value) {\n\t\tthis.setU(\"end\", value);\n\t}\n\tget samples() {\n\t\treturn this.u(\"samples\");\n\t}\n\tset samples(value) {\n\t\tthis.setU(\"samples\", value);\n\t}\n\tget direction() {\n\t\treturn this.u(\"direction\");\n\t}\n\tset direction(value) {\n\t\tthis.setU(\"direction\", value);\n\t}\n};\nvar TiltShift2 = /* @__PURE__ */ createEffectComponent(TiltShiftEffect);\n//#endregion\n//#region src/effects/ToneMapping.tsx\nvar ToneMappingImpl = /* @__PURE__ */ createEffectComponent(ToneMappingEffect);\nfunction ToneMapping({ minLuminance, maxLuminance, ...liveProps }) {\n\tconst args = useMemo(() => [{\n\t\tminLuminance,\n\t\tmaxLuminance\n\t}], [minLuminance, maxLuminance]);\n\treturn /* @__PURE__ */ jsx(ToneMappingImpl, {\n\t\targs,\n\t\t...liveProps\n\t});\n}\n//#endregion\n//#region src/effects/Vignette.tsx\nvar Vignette = /* @__PURE__ */ createEffectComponent(VignetteEffect);\n//#endregion\n//#region src/effects/Water.tsx\nvar WaterShader = { fragmentShader: `\n    uniform float factor;\n\n    void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n      vec2 vUv = uv;\n      float frequency = 6.0 * factor;\n      float amplitude = 0.015 * factor;\n      float x = vUv.y * frequency + time * 0.7;\n      float y = vUv.x * frequency + time * 0.3;\n      vUv.x += cos(x + y) * amplitude * cos(y);\n      vUv.y += sin(x - y) * amplitude * cos(y);\n      vec4 rgba = texture(inputBuffer, vUv);\n      outputColor = rgba;\n    }\n  ` };\nvar WaterEffectImpl = class extends Effect {\n\tconstructor({ blendFunction = 23, factor = 0 } = {}) {\n\t\tsuper(\"WaterEffect\", WaterShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tattributes: 2,\n\t\t\tuniforms: /* @__PURE__ */ new Map([[\"factor\", new Uniform(factor)]])\n\t\t});\n\t}\n\tget factor() {\n\t\treturn this.uniforms.get(\"factor\").value;\n\t}\n\tset factor(value) {\n\t\tthis.uniforms.get(\"factor\").value = value;\n\t}\n};\nvar WaterEffect = /* @__PURE__ */ createEffectComponent(WaterEffectImpl);\n//#endregion\n//#region src/passes/N8AO.tsx\nfunction N8AO({ enabled = true, halfRes, screenSpaceRadius, quality, depthAwareUpsampling = true, aoRadius = 5, aoSamples = 16, denoiseSamples = 4, denoiseRadius = 12, distanceFalloff = 1, intensity = 1, color, renderMode = 0, ref }) {\n\tconst { camera, scene, invalidate } = useThree();\n\tconst effect = useMemo(() => {\n\t\tconst instance = new N8AOPostPass(scene, camera);\n\t\tgroupPasses.add(instance);\n\t\treturn instance;\n\t}, [camera, scene]);\n\tuseDispose(effect);\n\tuseLayoutEffect(() => {\n\t\teffect.enabled = enabled;\n\t\tinvalidate();\n\t}, [\n\t\teffect,\n\t\tenabled,\n\t\tinvalidate\n\t]);\n\tuseLayoutEffect(() => {\n\t\tapplyProps(effect.configuration, {\n\t\t\tcolor,\n\t\t\taoRadius,\n\t\t\tdistanceFalloff,\n\t\t\tintensity,\n\t\t\taoSamples,\n\t\t\tdenoiseSamples,\n\t\t\tdenoiseRadius,\n\t\t\tscreenSpaceRadius,\n\t\t\trenderMode,\n\t\t\thalfRes,\n\t\t\tdepthAwareUpsampling\n\t\t});\n\t\tinvalidate();\n\t}, [\n\t\tscreenSpaceRadius,\n\t\tcolor,\n\t\taoRadius,\n\t\tdistanceFalloff,\n\t\tintensity,\n\t\taoSamples,\n\t\tdenoiseSamples,\n\t\tdenoiseRadius,\n\t\trenderMode,\n\t\thalfRes,\n\t\tdepthAwareUpsampling,\n\t\teffect,\n\t\tinvalidate\n\t]);\n\tuseLayoutEffect(() => {\n\t\tif (quality) {\n\t\t\teffect.setQualityMode(quality.charAt(0).toUpperCase() + quality.slice(1));\n\t\t\tinvalidate();\n\t\t}\n\t}, [\n\t\teffect,\n\t\tquality,\n\t\tinvalidate\n\t]);\n\treturn /* @__PURE__ */ jsx(\"primitive\", {\n\t\tref,\n\t\tobject: effect\n\t});\n}\n//#endregion\nexport { ASCII, Autofocus, Bloom, BrightnessContrast, ChromaticAberration, ColorAverage, ColorDepth, Depth, DepthOfField, DepthPicking, DotScreen, EMPTY_ARRAY, EffectComposer, EffectComposerContext, EffectGroup, FXAA, Glitch, GodRays, Grid, HueSaturation, LUT, LensFlare, LensFlareEffect, N8AO, Noise, Outline, Pixelation, Ramp, RampEffect, RampType, SMAA, SSAO, Scanline, Select, Selection, SelectiveBloom, Sepia, ShockWave, Texture, TiltShift, TiltShift2, TiltShiftEffect, ToneMapping, Vignette, WaterEffect, WaterEffectImpl, applyPierced, createEffectComponent, disposePassWithoutEffects, groupPasses, readGroupChildren, readPierced, resolveRef, selectionContext, updateIfChanged, useDepthPicking, useDispose, useLiveDefaults, useMergeRefs, useSelectionSync, useVector2, useVector3, wrapEffect };\n\n"]}