From cd5eddcb4e7ab9bba6901733f18dd16ff66bf675 Mon Sep 17 00:00:00 2001 From: Kevin Levron Date: Sun, 28 Feb 2021 16:56:24 +0100 Subject: [PATCH] 0.1.4 --- build/trois.module.cdn.js | 269 +++++++++++++++++++++++++++--- build/trois.module.cdn.js.map | 2 +- build/trois.module.cdn.min.js | 2 +- build/trois.module.cdn.min.js.map | 2 +- build/trois.module.js | 269 +++++++++++++++++++++++++++--- build/trois.module.js.map | 2 +- build/trois.module.min.js | 2 +- build/trois.module.min.js.map | 2 +- package.json | 2 +- rollup.config.js | 65 ++------ 10 files changed, 517 insertions(+), 100 deletions(-) diff --git a/build/trois.module.cdn.js b/build/trois.module.cdn.js index 045f217..1ebbee6 100644 --- a/build/trois.module.cdn.js +++ b/build/trois.module.cdn.js @@ -229,12 +229,19 @@ function useThree() { this.renderer.dispose(); } + /** + */ + function updateMouse(e) { + var rect = e.target.getBoundingClientRect(); + mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1; + mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1; + } + /** * click listener */ function onClick(e) { - mouse.x = (e.clientX / size.width) * 2 - 1; - mouse.y = -(e.clientY / size.height) * 2 + 1; + updateMouse(e); raycaster.setFromCamera(mouse, obj.camera); var objects = raycaster.intersectObjects(intersectObjects); for (var i = 0; i < objects.length; i++) { @@ -247,8 +254,7 @@ function useThree() { * mousemove listener */ function onMousemove(e) { - mouse.x = (e.clientX / size.width) * 2 - 1; - mouse.y = -(e.clientY / size.height) * 2 + 1; + updateMouse(e); onMousechange(); } @@ -3217,12 +3223,9 @@ var script = { events: { type: Object, default: function () { return { wheel: true, click: true, keyup: true }; } }, }, setup: function setup() { - var ref = useTextures(); - var textures = ref.textures; - var loadTextures = ref.loadTextures; + var loader = useTextures(); return { - textures: textures, - loadTextures: loadTextures, + loader: loader, progress: 0, targetProgress: 0, }; @@ -3233,13 +3236,15 @@ var script = { if (this.images.length < 2) { console.error('This slider needs at least 2 images.'); } else { - this.loadTextures(this.images, this.init); + this.loader.loadTextures(this.images, this.init); } }, unmounted: function unmounted() { - document.removeEventListener('click', this.onClick); + this.loader.dispose(); + var domElement = this.three.renderer.domElement; + domElement.removeEventListener('click', this.onClick); + domElement.removeEventListener('wheel', this.onWheel); document.removeEventListener('keyup', this.onKeyup); - window.removeEventListener('wheel', this.onWheel); }, methods: { init: function init() { @@ -3256,9 +3261,10 @@ var script = { } ); - if (this.events.click) { document.addEventListener('click', this.onClick); } + var domElement = this.three.renderer.domElement; + if (this.events.click) { domElement.addEventListener('click', this.onClick); } + if (this.events.wheel) { domElement.addEventListener('wheel', this.onWheel); } if (this.events.keyup) { document.addEventListener('keyup', this.onKeyup); } - if (this.events.wheel) { window.addEventListener('wheel', this.onWheel); } this.three.onBeforeRender(this.updateProgress); this.three.onAfterResize(this.onResize); }, @@ -3270,14 +3276,14 @@ var script = { renderer: renderer, screen: this.three.size, size: 10, anim: 1, - texture: this.textures[0], + texture: this.loader.textures[0], }); this.plane2 = new AnimatedPlane({ renderer: renderer, screen: this.three.size, size: 10, anim: 2, - texture: this.textures[1], + texture: this.loader.textures[1], }); this.setPlanesProgress(0); @@ -3337,8 +3343,8 @@ var script = { if ((pdiff > 0 && p1 < p0) || (pdiff < 0 && p0 < p1)) { var i = Math.floor(progress1) % this.images.length; var j = (i + 1) % this.images.length; - this.plane1.setTexture(this.textures[i]); - this.plane2.setTexture(this.textures[j]); + this.plane1.setTexture(this.loader.textures[i]); + this.plane2.setTexture(this.loader.textures[j]); } this.progress = progress1; @@ -3378,7 +3384,223 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { script.render = render; script.__file = "src/components/sliders/Slider1.vue"; +function ZoomBlurImage(three) { + var geometry, material, mesh; + + var uMap = { value: null }; + var uCenter = { value: new Vector2(0.5, 0.5) }; + var uStrength = { value: 0 }; + var uUVOffset = { value: new Vector2(0, 0) }; + var uUVScale = { value: new Vector2(1, 1) }; + + init(); + + return { geometry: geometry, material: material, mesh: mesh, uCenter: uCenter, uStrength: uStrength, setMap: setMap, updateUV: updateUV }; + + function init() { + geometry = new PlaneBufferGeometry(2, 2, 1, 1); + + material = new ShaderMaterial$1({ + transparent: true, + uniforms: { + map: uMap, + center: uCenter, + strength: uStrength, + uvOffset: uUVOffset, + uvScale: uUVScale, + }, + vertexShader: "\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ", + // adapted from https://github.com/evanw/glfx.js + fragmentShader: "\n uniform sampler2D map;\n uniform vec2 center;\n uniform float strength;\n uniform vec2 uvOffset;\n uniform vec2 uvScale;\n varying vec2 vUv;\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 main() {\n vec2 tUv = vUv * uvScale + uvOffset;\n if (abs(strength) > 0.001) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center * uvScale + uvOffset - tUv;\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 \n for (float t = 0.0; t <= 20.0; t++) {\n float percent = (t + offset) / 20.0;\n float weight = 2.0 * (percent - percent * percent);\n vec4 texel = texture2D(map, tUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n gl_FragColor.a = 1.0 - abs(strength);\n } else {\n gl_FragColor = texture2D(map, tUv);\n }\n }\n ", + }); + + mesh = new Mesh$1(geometry, material); + } + + function setMap(value) { + uMap.value = value; + updateUV(); + } + + function updateUV() { + var ratio = three.size.ratio; + var iRatio = uMap.value.image.width / uMap.value.image.height; + uUVOffset.value.set(0, 0); + uUVScale.value.set(1, 1); + if (iRatio > ratio) { + uUVScale.value.x = ratio / iRatio; + uUVOffset.value.x = (1 - uUVScale.value.x) / 2; + } else { + uUVScale.value.y = iRatio / ratio; + uUVOffset.value.y = (1 - uUVScale.value.y) / 2; + } + } +} + var script$1 = { + props: { + images: Array, + events: { type: Object, default: function () { return { wheel: true, click: true, keyup: true }; } }, + }, + setup: function setup() { + var center = new Vector2(); + var loader = useTextures(); + + return { + loader: loader, + center: center, + progress: 0, + targetProgress: 0, + }; + }, + mounted: function mounted() { + this.three = this.$refs.renderer.three; + + if (this.images.length < 2) { + console.error('This slider needs at least 2 images.'); + } else { + this.loader.loadTextures(this.images, this.init); + } + }, + unmounted: function unmounted() { + this.loader.dispose(); + var domElement = this.three.renderer.domElement; + domElement.removeEventListener('click', this.onClick); + domElement.removeEventListener('wheel', this.onWheel); + document.removeEventListener('keyup', this.onKeyup); + }, + methods: { + init: function init() { + this.initScene(); + gsap.fromTo(this.image1.uStrength, + { + value: -2, + }, + { + value: 0, + duration: 2.5, + ease: Power4.easeOut, + } + ); + + var domElement = this.three.renderer.domElement; + if (this.events.click) { domElement.addEventListener('click', this.onClick); } + if (this.events.wheel) { domElement.addEventListener('wheel', this.onWheel); } + if (this.events.keyup) { document.addEventListener('keyup', this.onKeyup); } + this.three.onBeforeRender(this.animate); + this.three.onAfterResize(this.onResize); + }, + initScene: function initScene() { + var scene = this.$refs.scene.scene; + + this.image1 = new ZoomBlurImage(this.three); + this.image1.setMap(this.loader.textures[0]); + this.image2 = new ZoomBlurImage(this.three); + this.image2.setMap(this.loader.textures[1]); + this.setImagesProgress(0); + + scene.add(this.image1.mesh); + scene.add(this.image2.mesh); + }, + animate: function animate() { + var ref = this.three; + var mouse = ref.mouse; + this.center.copy(mouse).divideScalar(2).addScalar(0.5); + lerpv2(this.image1.uCenter.value, this.center, 0.1); + lerpv2(this.image2.uCenter.value, this.center, 0.1); + + this.updateProgress(); + }, + onResize: function onResize() { + this.image1.updateUV(); + this.image2.updateUV(); + }, + onWheel: function onWheel(e) { + // e.preventDefault(); + if (e.deltaY > 0) { + this.setTargetProgress(this.targetProgress + 1 / 20); + } else { + this.setTargetProgress(this.targetProgress - 1 / 20); + } + }, + onClick: function onClick(e) { + if (e.clientY < this.three.size.height / 2) { + this.navPrevious(); + } else { + this.navNext(); + } + }, + onKeyup: function onKeyup(e) { + if (e.keyCode === 37 || e.keyCode === 38) { + this.navPrevious(); + } else if (e.keyCode === 39 || e.keyCode === 40) { + this.navNext(); + } + }, + navNext: function navNext() { + if (Number.isInteger(this.targetProgress)) { this.setTargetProgress(this.targetProgress + 1); } + else { this.setTargetProgress(Math.ceil(this.targetProgress)); } + }, + navPrevious: function navPrevious() { + if (Number.isInteger(this.targetProgress)) { this.setTargetProgress(this.targetProgress - 1); } + else { this.setTargetProgress(Math.floor(this.targetProgress)); } + }, + setTargetProgress: function setTargetProgress(value) { + this.targetProgress = value; + if (this.targetProgress < 0) { + this.progress += this.images.length; + this.targetProgress += this.images.length; + } + }, + updateProgress: function updateProgress() { + var progress1 = lerp(this.progress, this.targetProgress, 0.1); + var pdiff = progress1 - this.progress; + if (pdiff === 0) { return; } + + var p0 = this.progress % 1; + var p1 = progress1 % 1; + if ((pdiff > 0 && p1 < p0) || (pdiff < 0 && p0 < p1)) { + var i = Math.floor(progress1) % this.images.length; + var j = (i + 1) % this.images.length; + this.image1.setMap(this.loader.textures[i]); + this.image2.setMap(this.loader.textures[j]); + } + + this.progress = progress1; + this.setImagesProgress(this.progress % 1); + }, + setImagesProgress: function setImagesProgress(progress) { + this.image1.uStrength.value = progress; + this.image2.uStrength.value = -1 + progress; + }, + }, +}; + +function render$1(_ctx, _cache, $props, $setup, $data, $options) { + var _component_OrthographicCamera = resolveComponent("OrthographicCamera"); + var _component_Scene = resolveComponent("Scene"); + var _component_Renderer = resolveComponent("Renderer"); + + return (openBlock(), createBlock(_component_Renderer, { + ref: "renderer", + antialias: "", + "mouse-move": "" + }, { + default: withCtx(function () { return [ + createVNode(_component_OrthographicCamera, { + ref: "camera", + position: { z: 10 } + }, null, 512 /* NEED_PATCH */), + createVNode(_component_Scene, { ref: "scene" }, null, 512 /* NEED_PATCH */) + ]; }), + _: 1 /* STABLE */ + }, 512 /* NEED_PATCH */)) +} + +script$1.render = render$1; +script$1.__file = "src/components/sliders/Slider2.vue"; + +var script$2 = { props: { src: String, cameraPosition: Object, @@ -3395,7 +3617,7 @@ var script$1 = { }, }; -function render$1(_ctx, _cache, $props, $setup, $data, $options) { +function render$2(_ctx, _cache, $props, $setup, $data, $options) { var _component_Camera = resolveComponent("Camera"); var _component_Scene = resolveComponent("Scene"); var _component_Renderer = resolveComponent("Renderer"); @@ -3420,8 +3642,8 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) { }, 8 /* PROPS */, ["orbit-ctrl"])) } -script$1.render = render$1; -script$1.__file = "src/components/viewers/GLTFViewer.vue"; +script$2.render = render$2; +script$2.__file = "src/components/viewers/GLTFViewer.vue"; var TROIS = /*#__PURE__*/Object.freeze({ __proto__: null, @@ -3499,7 +3721,8 @@ var TROIS = /*#__PURE__*/Object.freeze({ NoisySphere: NoisySphere, NoisyText: NoisyText, Slider1: script, - GLTFViewer: script$1, + Slider2: script$1, + GLTFViewer: script$2, setFromProp: setFromProp, propsValues: propsValues, lerp: lerp, @@ -3599,5 +3822,5 @@ var TroisJSVuePlugin = { }, }; -export { AmbientLight, BasicMaterial, BokehPass, Box, BoxGeometry, PerspectiveCamera as Camera, Circle, CircleGeometry, Cone, ConeGeometry, CubeTexture, Cylinder, CylinderGeometry, DirectionalLight, Dodecahedron, DodecahedronGeometry, EffectComposer, FXAAPass, FilmPass, script$1 as GLTFViewer, Gem, Group, HalftonePass, Icosahedron, IcosahedronGeometry, Image, InstancedMesh, LambertMaterial, Lathe, LatheGeometry, MatcapMaterial, Mesh, MirrorMesh, NoisyImage, NoisyPlane, NoisySphere, NoisyText, Octahedron, OctahedronGeometry, OrthographicCamera, PerspectiveCamera, PhongMaterial, PhysicalMaterial, Plane, PointLight, Polyhedron, PolyhedronGeometry, RefractionMesh, RenderPass, Renderer, Ring, RingGeometry, SMAAPass, Scene, script as Slider1, Sphere, SphereGeometry, SpotLight, Sprite, StandardMaterial, SubSurfaceMaterial, Tetrahedron, TetrahedronGeometry, Text, Texture, TiltShiftPass, ToonMaterial, Torus, TorusGeometry, TorusKnot, TorusKnotGeometry, TroisJSVuePlugin, Tube, TubeGeometry, UnrealBloomPass, ZoomBlurPass, getMatcapUrl, lerp, lerpv2, lerpv3, limit, propsValues, setFromProp }; +export { AmbientLight, BasicMaterial, BokehPass, Box, BoxGeometry, PerspectiveCamera as Camera, Circle, CircleGeometry, Cone, ConeGeometry, CubeTexture, Cylinder, CylinderGeometry, DirectionalLight, Dodecahedron, DodecahedronGeometry, EffectComposer, FXAAPass, FilmPass, script$2 as GLTFViewer, Gem, Group, HalftonePass, Icosahedron, IcosahedronGeometry, Image, InstancedMesh, LambertMaterial, Lathe, LatheGeometry, MatcapMaterial, Mesh, MirrorMesh, NoisyImage, NoisyPlane, NoisySphere, NoisyText, Octahedron, OctahedronGeometry, OrthographicCamera, PerspectiveCamera, PhongMaterial, PhysicalMaterial, Plane, PointLight, Polyhedron, PolyhedronGeometry, RefractionMesh, RenderPass, Renderer, Ring, RingGeometry, SMAAPass, Scene, script as Slider1, script$1 as Slider2, Sphere, SphereGeometry, SpotLight, Sprite, StandardMaterial, SubSurfaceMaterial, Tetrahedron, TetrahedronGeometry, Text, Texture, TiltShiftPass, ToonMaterial, Torus, TorusGeometry, TorusKnot, TorusKnotGeometry, TroisJSVuePlugin, Tube, TubeGeometry, UnrealBloomPass, ZoomBlurPass, getMatcapUrl, lerp, lerpv2, lerpv3, limit, propsValues, setFromProp }; //# sourceMappingURL=trois.module.cdn.js.map diff --git a/build/trois.module.cdn.js.map b/build/trois.module.cdn.js.map index 561d653..000d12f 100644 --- a/build/trois.module.cdn.js.map +++ b/build/trois.module.cdn.js.map @@ -1 +1 @@ -{"version":3,"file":"trois.module.cdn.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/use/useBindProp.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/PointLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/ShaderMaterial.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/use/useBindPropValue.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/glsl/snoise2.glsl.js","../src/components/noisy/NoisyImage.js","../src/glsl/snoise3.glsl.js","../src/components/noisy/NoisyPlane.js","../src/glsl/snoise4.glsl.js","../src/components/noisy/NoisySphere.js","../src/components/noisy/NoisyText.js","../src/components/sliders/AnimatedPlane.js","../src/use/useTextures.js","../src/components/sliders/Slider1.vue","../src/components/sliders/Slider1.vue?vue&type=template&id=23f29a93&lang.js","../src/components/viewers/GLTFViewer.vue","../src/components/viewers/GLTFViewer.vue?vue&type=template&id=683b03c7&lang.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.width && conf.height) {\n setSize(conf.width, conf.height);\n } else if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n mouse.x = (e.clientX / size.width) * 2 - 1;\n mouse.y = -(e.clientY / size.height) * 2 + 1;\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n mouse.x = (e.clientX / size.width) * 2 - 1;\n mouse.y = -(e.clientY / size.height) * 2 + 1;\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: true },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport { inject } from 'vue';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: ['three', 'scene'],\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n setup(props) {\r\n const parent = inject('group', inject('scene'));\r\n const group = new Group();\r\n useBindProp(props, 'position', group.position);\r\n useBindProp(props, 'rotation', group.rotation);\r\n useBindProp(props, 'scale', group.scale);\r\n return { parent, group };\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { inject, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n diffuse: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n Object.entries(this.$props).forEach(([key, value]) => {\n if (key === 'diffuse' || key === 'thicknessColor') {\n value = new Color(value);\n }\n if (key !== 'id' && key !== 'transparent' && key !== 'vertexColors') {\n uniforms[key].value = value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n // console.log('Mesh mounted');\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n // console.log('Mesh unmounted');\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three', 'scene'],\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport { inject } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: ['three', 'scene'],\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine);\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n`;\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Image from '../../meshes/Image.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Image,\n props: {\n widthSegments: { type: Number, default: 20 },\n heightSegments: { type: Number, default: 20 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 1 },\n zCoef: { type: Number, default: 5 },\n dispCoef: { type: Number, default: 0.05 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef, uDispCoef,\n };\n },\n mounted() {\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, this.widthSegments, this.heightSegments);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n `\n );\n\n shader.fragmentShader = `\n uniform float uDispCoef;\n varying float vNoise;\n ` + shader.fragmentShader;\n\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include ',\n `\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n `\n );\n this.materialShader = shader;\n };\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyImage',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v)\n{\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n // First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n // Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n // Permutations\n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n // Gradients: 7x7 points over a square, mapped onto an octahedron.\n // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n // Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n}\n`;\n","import { ObjectSpaceNormalMap, ShaderMaterial, Vector2, WebGLRenderTarget } from 'three';\nimport { Pass } from 'three/examples/jsm/postprocessing/Pass.js';\nimport { watch } from 'vue';\nimport Plane from '../../meshes/Plane.js';\nimport snoise3 from '../../glsl/snoise3.glsl.js';\n\nexport default {\n extends: Plane,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 5 },\n deltaCoef: { type: Number, default: 1 / 512 },\n displacementScale: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDelta = { value: new Vector2(props.deltaCoef, props.deltaCoef) };\n watch(() => props.deltaCoef, (value) => { uDelta.value.set(value, value); });\n\n return {\n uTime, uNoiseCoef, uDelta,\n };\n },\n mounted() {\n this.init();\n\n watch(() => this.displacementScale, (value) => { this.material.displacementScale = value; });\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.update);\n },\n unmounted() {\n this.three.offBeforeRender(this.update);\n this.fsQuad.dispose();\n this.dispRT.dispose();\n this.dispMat.dispose();\n this.normRT.dispose();\n this.normMat.dispose();\n },\n methods: {\n init() {\n this.fsQuad = new Pass.FullScreenQuad();\n\n // displacement map\n this.dispRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.dispMat = new ShaderMaterial({\n uniforms: {\n uTime: this.uTime,\n uNoiseCoef: this.uNoiseCoef,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n ${snoise3}\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n `,\n });\n\n // normal map\n this.normRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.normMat = new ShaderMaterial({\n uniforms: {\n dispMap: { value: this.dispRT.texture },\n delta: this.uDelta,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n `,\n });\n\n this.material.displacementMap = this.dispRT.texture;\n this.material.displacementScale = this.displacementScale;\n this.material.normalMap = this.normRT.texture;\n this.material.normalMapType = ObjectSpaceNormalMap;\n // this.material.needsUpdate = true;\n },\n update() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n this.renderDisp();\n },\n renderDisp() {\n this.renderMat(this.dispMat, this.dispRT);\n this.renderMat(this.normMat, this.normRT);\n },\n renderMat(mat, target) {\n const renderer = this.three.renderer;\n this.fsQuad.material = mat;\n const oldTarget = renderer.getRenderTarget();\n renderer.setRenderTarget(target);\n this.fsQuad.render(renderer);\n renderer.setRenderTarget(oldTarget);\n },\n },\n __hmrId: 'NoisyPlane',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nfloat mod289(float x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nfloat permute(float x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\nfloat taylorInvSqrt(float r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nvec4 grad4(float j, vec4 ip)\n{\n const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n vec4 p,s;\n\n p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n s = vec4(lessThan(p, vec4(0.0)));\n p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\n return p;\n}\n\n// (sqrt(5) - 1)/4 = F4, used once below\n#define F4 0.309016994374947451\n\nfloat snoise(vec4 v)\n{\n const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4\n 0.276393202250021, // 2 * G4\n 0.414589803375032, // 3 * G4\n -0.447213595499958); // -1 + 4 * G4\n\n // First corner\n vec4 i = floor(v + dot(v, vec4(F4)) );\n vec4 x0 = v - i + dot(i, C.xxxx);\n\n // Other corners\n\n // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n vec4 i0;\n vec3 isX = step( x0.yzw, x0.xxx );\n vec3 isYZ = step( x0.zww, x0.yyz );\n // i0.x = dot( isX, vec3( 1.0 ) );\n i0.x = isX.x + isX.y + isX.z;\n i0.yzw = 1.0 - isX;\n // i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n i0.y += isYZ.x + isYZ.y;\n i0.zw += 1.0 - isYZ.xy;\n i0.z += isYZ.z;\n i0.w += 1.0 - isYZ.z;\n\n // i0 now contains the unique values 0,1,2,3 in each channel\n vec4 i3 = clamp( i0, 0.0, 1.0 );\n vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n vec4 x1 = x0 - i1 + C.xxxx;\n vec4 x2 = x0 - i2 + C.yyyy;\n vec4 x3 = x0 - i3 + C.zzzz;\n vec4 x4 = x0 + C.wwww;\n\n // Permutations\n i = mod289(i);\n float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n vec4 j1 = permute( permute( permute( permute (\n i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\n // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope\n // 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n vec4 p0 = grad4(j0, ip);\n vec4 p1 = grad4(j1.x, ip);\n vec4 p2 = grad4(j1.y, ip);\n vec4 p3 = grad4(j1.z, ip);\n vec4 p4 = grad4(j1.w, ip);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n p4 *= taylorInvSqrt(dot(p4,p4));\n\n // Mix contributions from the five corners\n vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n m0 = m0 * m0;\n m1 = m1 * m1;\n return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\n}\n`;\n","import { watch } from 'vue';\nimport Sphere from '../../meshes/Sphere.js';\nimport snoise4 from '../../glsl/snoise4.glsl.js';\n\nexport default {\n extends: Sphere,\n props: {\n radius: { type: Number, default: 20 },\n widthSegments: { type: Number, default: 128 },\n heightSegments: { type: Number, default: 128 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.05 },\n dispCoef: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uDispCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n ${snoise4}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n `\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisySphere',\n};\n","import { watch } from 'vue';\nimport Text from '../../meshes/Text.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Text,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.015 },\n zCoef: { type: Number, default: 10 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyText',\n};\n","import {\n DoubleSide,\n Face3,\n InstancedBufferAttribute,\n InstancedMesh,\n MathUtils,\n MeshBasicMaterial,\n Object3D,\n Vector2,\n Vector3,\n} from 'three';\n\nimport { Geometry } from 'three/examples/jsm/deprecated/Geometry.js';\n\nexport default class AnimatedPlane {\n constructor(params) {\n Object.entries(params).forEach(([key, value]) => {\n this[key] = value;\n });\n\n this.o3d = new Object3D();\n this.uProgress = { value: 0 };\n this.uvScale = new Vector2();\n\n this.initMaterial();\n this.initPlane();\n }\n\n initMaterial() {\n this.material = new MeshBasicMaterial({\n side: DoubleSide,\n transparent: true,\n map: this.texture,\n onBeforeCompile: shader => {\n shader.uniforms.progress = this.uProgress;\n shader.uniforms.uvScale = { value: this.uvScale };\n shader.vertexShader = `\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n #include \n vUv = vUv * uvScale + uvOffset;\n `);\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n `);\n },\n });\n }\n\n initPlane() {\n const { width, wWidth, wHeight } = this.screen;\n this.wSize = this.size * wWidth / width;\n this.nx = Math.ceil(wWidth / this.wSize) + 1;\n this.ny = Math.ceil(wHeight / this.wSize) + 1;\n this.icount = this.nx * this.ny;\n\n this.initGeometry();\n this.initUV();\n this.initAnimAttributes();\n\n if (this.imesh) {\n this.o3d.remove(this.imesh);\n }\n this.imesh = new InstancedMesh(this.bGeometry, this.material, this.icount);\n this.o3d.add(this.imesh);\n\n const dummy = new Object3D();\n let index = 0;\n let x = -(wWidth - (wWidth - this.nx * this.wSize)) / 2 + this.dx;\n for (let i = 0; i < this.nx; i++) {\n let y = -(wHeight - (wHeight - this.ny * this.wSize)) / 2 + this.dy;\n for (let j = 0; j < this.ny; j++) {\n dummy.position.set(x, y, 0);\n dummy.updateMatrix();\n this.imesh.setMatrixAt(index++, dummy.matrix);\n y += this.wSize;\n }\n x += this.wSize;\n }\n }\n\n initGeometry() {\n // square\n const geometry = new Geometry();\n geometry.vertices.push(new Vector3(0, 0, 0));\n geometry.vertices.push(new Vector3(this.wSize, 0, 0));\n geometry.vertices.push(new Vector3(0, this.wSize, 0));\n geometry.vertices.push(new Vector3(this.wSize, this.wSize, 0));\n geometry.faces.push(new Face3(0, 2, 1));\n geometry.faces.push(new Face3(2, 3, 1));\n\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 0),\n new Vector2(0, 1),\n new Vector2(1, 0),\n ]);\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 1),\n new Vector2(1, 1),\n new Vector2(1, 0),\n ]);\n\n // geometry.computeFaceNormals();\n // geometry.computeVertexNormals();\n\n // center\n this.dx = this.wSize / 2;\n this.dy = this.wSize / 2;\n geometry.translate(-this.dx, -this.dy, 0);\n\n this.bGeometry = geometry.toBufferGeometry();\n }\n\n initAnimAttributes() {\n const { randFloat: rnd, randFloatSpread: rndFS } = MathUtils;\n const v3 = new Vector3();\n\n const offsets = new Float32Array(this.icount * 3);\n for (let i = 0; i < offsets.length; i += 3) {\n if (this.anim === 1) v3.set(rndFS(10), rnd(50, 100), rnd(20, 50)).toArray(offsets, i);\n else v3.set(rndFS(20), rndFS(20), rnd(20, 200)).toArray(offsets, i);\n }\n this.bGeometry.setAttribute('offset', new InstancedBufferAttribute(offsets, 3));\n\n const rotations = new Float32Array(this.icount * 3);\n const angle = Math.PI * 4;\n for (let i = 0; i < rotations.length; i += 3) {\n rotations[i] = rndFS(angle);\n rotations[i + 1] = rndFS(angle);\n rotations[i + 2] = rndFS(angle);\n }\n this.bGeometry.setAttribute('rotation', new InstancedBufferAttribute(rotations, 3));\n }\n\n initUV() {\n const ratio = this.nx / this.ny;\n const tRatio = this.texture.image.width / this.texture.image.height;\n if (ratio > tRatio) this.uvScale.set(1 / this.nx, (tRatio / ratio) / this.ny);\n else this.uvScale.set((ratio / tRatio) / this.nx, 1 / this.ny);\n const nW = this.uvScale.x * this.nx;\n const nH = this.uvScale.y * this.ny;\n\n const v2 = new Vector2();\n const uvOffsets = new Float32Array(this.icount * 2);\n for (let i = 0; i < this.nx; i++) {\n for (let j = 0; j < this.ny; j++) {\n v2.set(\n this.uvScale.x * i + (1 - nW) / 2,\n this.uvScale.y * j + (1 - nH) / 2\n ).toArray(uvOffsets, (i * this.ny + j) * 2);\n }\n }\n this.bGeometry.setAttribute('uvOffset', new InstancedBufferAttribute(uvOffsets, 2));\n }\n\n setTexture(texture) {\n this.texture = texture;\n this.material.map = texture;\n this.initUV();\n }\n\n resize() {\n this.initPlane();\n }\n}\n","import { TextureLoader } from 'three';\n\nexport default function useTextures() {\n const obj = {\n loader: new TextureLoader(),\n count: 0,\n textures: [],\n loadProgress: 0,\n loadTextures,\n dispose,\n };\n return obj;\n\n function loadTextures(images, cb) {\n obj.count = images.length;\n obj.textures.splice(0);\n obj.loadProgress = 0;\n Promise.all(images.map(loadTexture)).then(cb);\n };\n\n function loadTexture(img, index) {\n return new Promise(resolve => {\n obj.loader.load(\n img.src,\n texture => {\n obj.loadProgress += 1 / obj.count;\n obj.textures[index] = texture;\n resolve(texture);\n }\n );\n });\n };\n\n function dispose() {\n obj.textures.forEach(t => t.dispose());\n }\n};\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["const","let","Plane","i","o","OrthographicCamera","this","PerspectiveCamera","Group","Scene","AmbientLight","DirectionalLight","PointLight","SpotLight","TShaderMaterial","Mesh","TMesh","InstancedMesh","Sprite","EffectComposer","RenderPass","BokehPass","FilmPass","HalftonePass","SMAAPass","UnrealBloomPass","ShaderMaterial","Geometry","_createBlock","_createVNode","_renderSlot"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"trois.module.cdn.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/use/useBindProp.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/PointLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/ShaderMaterial.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/use/useBindPropValue.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/glsl/snoise2.glsl.js","../src/components/noisy/NoisyImage.js","../src/glsl/snoise3.glsl.js","../src/components/noisy/NoisyPlane.js","../src/glsl/snoise4.glsl.js","../src/components/noisy/NoisySphere.js","../src/components/noisy/NoisyText.js","../src/components/sliders/AnimatedPlane.js","../src/use/useTextures.js","../src/components/sliders/Slider1.vue","../src/components/sliders/Slider1.vue?vue&type=template&id=23f29a93&lang.js","../src/components/sliders/ZoomBlurImage.js","../src/components/sliders/Slider2.vue","../src/components/sliders/Slider2.vue?vue&type=template&id=2400b214&lang.js","../src/components/viewers/GLTFViewer.vue","../src/components/viewers/GLTFViewer.vue?vue&type=template&id=683b03c7&lang.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.width && conf.height) {\n setSize(conf.width, conf.height);\n } else if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: true },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport { inject } from 'vue';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: ['three', 'scene'],\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n setup(props) {\r\n const parent = inject('group', inject('scene'));\r\n const group = new Group();\r\n useBindProp(props, 'position', group.position);\r\n useBindProp(props, 'rotation', group.rotation);\r\n useBindProp(props, 'scale', group.scale);\r\n return { parent, group };\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { inject, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n diffuse: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n Object.entries(this.$props).forEach(([key, value]) => {\n if (key === 'diffuse' || key === 'thicknessColor') {\n value = new Color(value);\n }\n if (key !== 'id' && key !== 'transparent' && key !== 'vertexColors') {\n uniforms[key].value = value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n // console.log('Mesh mounted');\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n // console.log('Mesh unmounted');\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three', 'scene'],\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport { inject } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: ['three', 'scene'],\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine);\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n`;\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Image from '../../meshes/Image.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Image,\n props: {\n widthSegments: { type: Number, default: 20 },\n heightSegments: { type: Number, default: 20 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 1 },\n zCoef: { type: Number, default: 5 },\n dispCoef: { type: Number, default: 0.05 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef, uDispCoef,\n };\n },\n mounted() {\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, this.widthSegments, this.heightSegments);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n `\n );\n\n shader.fragmentShader = `\n uniform float uDispCoef;\n varying float vNoise;\n ` + shader.fragmentShader;\n\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include ',\n `\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n `\n );\n this.materialShader = shader;\n };\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyImage',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v)\n{\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n // First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n // Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n // Permutations\n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n // Gradients: 7x7 points over a square, mapped onto an octahedron.\n // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n // Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n}\n`;\n","import { ObjectSpaceNormalMap, ShaderMaterial, Vector2, WebGLRenderTarget } from 'three';\nimport { Pass } from 'three/examples/jsm/postprocessing/Pass.js';\nimport { watch } from 'vue';\nimport Plane from '../../meshes/Plane.js';\nimport snoise3 from '../../glsl/snoise3.glsl.js';\n\nexport default {\n extends: Plane,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 5 },\n deltaCoef: { type: Number, default: 1 / 512 },\n displacementScale: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDelta = { value: new Vector2(props.deltaCoef, props.deltaCoef) };\n watch(() => props.deltaCoef, (value) => { uDelta.value.set(value, value); });\n\n return {\n uTime, uNoiseCoef, uDelta,\n };\n },\n mounted() {\n this.init();\n\n watch(() => this.displacementScale, (value) => { this.material.displacementScale = value; });\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.update);\n },\n unmounted() {\n this.three.offBeforeRender(this.update);\n this.fsQuad.dispose();\n this.dispRT.dispose();\n this.dispMat.dispose();\n this.normRT.dispose();\n this.normMat.dispose();\n },\n methods: {\n init() {\n this.fsQuad = new Pass.FullScreenQuad();\n\n // displacement map\n this.dispRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.dispMat = new ShaderMaterial({\n uniforms: {\n uTime: this.uTime,\n uNoiseCoef: this.uNoiseCoef,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n ${snoise3}\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n `,\n });\n\n // normal map\n this.normRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.normMat = new ShaderMaterial({\n uniforms: {\n dispMap: { value: this.dispRT.texture },\n delta: this.uDelta,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n `,\n });\n\n this.material.displacementMap = this.dispRT.texture;\n this.material.displacementScale = this.displacementScale;\n this.material.normalMap = this.normRT.texture;\n this.material.normalMapType = ObjectSpaceNormalMap;\n // this.material.needsUpdate = true;\n },\n update() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n this.renderDisp();\n },\n renderDisp() {\n this.renderMat(this.dispMat, this.dispRT);\n this.renderMat(this.normMat, this.normRT);\n },\n renderMat(mat, target) {\n const renderer = this.three.renderer;\n this.fsQuad.material = mat;\n const oldTarget = renderer.getRenderTarget();\n renderer.setRenderTarget(target);\n this.fsQuad.render(renderer);\n renderer.setRenderTarget(oldTarget);\n },\n },\n __hmrId: 'NoisyPlane',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nfloat mod289(float x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nfloat permute(float x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\nfloat taylorInvSqrt(float r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nvec4 grad4(float j, vec4 ip)\n{\n const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n vec4 p,s;\n\n p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n s = vec4(lessThan(p, vec4(0.0)));\n p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\n return p;\n}\n\n// (sqrt(5) - 1)/4 = F4, used once below\n#define F4 0.309016994374947451\n\nfloat snoise(vec4 v)\n{\n const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4\n 0.276393202250021, // 2 * G4\n 0.414589803375032, // 3 * G4\n -0.447213595499958); // -1 + 4 * G4\n\n // First corner\n vec4 i = floor(v + dot(v, vec4(F4)) );\n vec4 x0 = v - i + dot(i, C.xxxx);\n\n // Other corners\n\n // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n vec4 i0;\n vec3 isX = step( x0.yzw, x0.xxx );\n vec3 isYZ = step( x0.zww, x0.yyz );\n // i0.x = dot( isX, vec3( 1.0 ) );\n i0.x = isX.x + isX.y + isX.z;\n i0.yzw = 1.0 - isX;\n // i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n i0.y += isYZ.x + isYZ.y;\n i0.zw += 1.0 - isYZ.xy;\n i0.z += isYZ.z;\n i0.w += 1.0 - isYZ.z;\n\n // i0 now contains the unique values 0,1,2,3 in each channel\n vec4 i3 = clamp( i0, 0.0, 1.0 );\n vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n vec4 x1 = x0 - i1 + C.xxxx;\n vec4 x2 = x0 - i2 + C.yyyy;\n vec4 x3 = x0 - i3 + C.zzzz;\n vec4 x4 = x0 + C.wwww;\n\n // Permutations\n i = mod289(i);\n float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n vec4 j1 = permute( permute( permute( permute (\n i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\n // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope\n // 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n vec4 p0 = grad4(j0, ip);\n vec4 p1 = grad4(j1.x, ip);\n vec4 p2 = grad4(j1.y, ip);\n vec4 p3 = grad4(j1.z, ip);\n vec4 p4 = grad4(j1.w, ip);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n p4 *= taylorInvSqrt(dot(p4,p4));\n\n // Mix contributions from the five corners\n vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n m0 = m0 * m0;\n m1 = m1 * m1;\n return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\n}\n`;\n","import { watch } from 'vue';\nimport Sphere from '../../meshes/Sphere.js';\nimport snoise4 from '../../glsl/snoise4.glsl.js';\n\nexport default {\n extends: Sphere,\n props: {\n radius: { type: Number, default: 20 },\n widthSegments: { type: Number, default: 128 },\n heightSegments: { type: Number, default: 128 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.05 },\n dispCoef: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uDispCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n ${snoise4}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n `\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisySphere',\n};\n","import { watch } from 'vue';\nimport Text from '../../meshes/Text.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Text,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.015 },\n zCoef: { type: Number, default: 10 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyText',\n};\n","import {\n DoubleSide,\n Face3,\n InstancedBufferAttribute,\n InstancedMesh,\n MathUtils,\n MeshBasicMaterial,\n Object3D,\n Vector2,\n Vector3,\n} from 'three';\n\nimport { Geometry } from 'three/examples/jsm/deprecated/Geometry.js';\n\nexport default class AnimatedPlane {\n constructor(params) {\n Object.entries(params).forEach(([key, value]) => {\n this[key] = value;\n });\n\n this.o3d = new Object3D();\n this.uProgress = { value: 0 };\n this.uvScale = new Vector2();\n\n this.initMaterial();\n this.initPlane();\n }\n\n initMaterial() {\n this.material = new MeshBasicMaterial({\n side: DoubleSide,\n transparent: true,\n map: this.texture,\n onBeforeCompile: shader => {\n shader.uniforms.progress = this.uProgress;\n shader.uniforms.uvScale = { value: this.uvScale };\n shader.vertexShader = `\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n #include \n vUv = vUv * uvScale + uvOffset;\n `);\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n `);\n },\n });\n }\n\n initPlane() {\n const { width, wWidth, wHeight } = this.screen;\n this.wSize = this.size * wWidth / width;\n this.nx = Math.ceil(wWidth / this.wSize) + 1;\n this.ny = Math.ceil(wHeight / this.wSize) + 1;\n this.icount = this.nx * this.ny;\n\n this.initGeometry();\n this.initUV();\n this.initAnimAttributes();\n\n if (this.imesh) {\n this.o3d.remove(this.imesh);\n }\n this.imesh = new InstancedMesh(this.bGeometry, this.material, this.icount);\n this.o3d.add(this.imesh);\n\n const dummy = new Object3D();\n let index = 0;\n let x = -(wWidth - (wWidth - this.nx * this.wSize)) / 2 + this.dx;\n for (let i = 0; i < this.nx; i++) {\n let y = -(wHeight - (wHeight - this.ny * this.wSize)) / 2 + this.dy;\n for (let j = 0; j < this.ny; j++) {\n dummy.position.set(x, y, 0);\n dummy.updateMatrix();\n this.imesh.setMatrixAt(index++, dummy.matrix);\n y += this.wSize;\n }\n x += this.wSize;\n }\n }\n\n initGeometry() {\n // square\n const geometry = new Geometry();\n geometry.vertices.push(new Vector3(0, 0, 0));\n geometry.vertices.push(new Vector3(this.wSize, 0, 0));\n geometry.vertices.push(new Vector3(0, this.wSize, 0));\n geometry.vertices.push(new Vector3(this.wSize, this.wSize, 0));\n geometry.faces.push(new Face3(0, 2, 1));\n geometry.faces.push(new Face3(2, 3, 1));\n\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 0),\n new Vector2(0, 1),\n new Vector2(1, 0),\n ]);\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 1),\n new Vector2(1, 1),\n new Vector2(1, 0),\n ]);\n\n // geometry.computeFaceNormals();\n // geometry.computeVertexNormals();\n\n // center\n this.dx = this.wSize / 2;\n this.dy = this.wSize / 2;\n geometry.translate(-this.dx, -this.dy, 0);\n\n this.bGeometry = geometry.toBufferGeometry();\n }\n\n initAnimAttributes() {\n const { randFloat: rnd, randFloatSpread: rndFS } = MathUtils;\n const v3 = new Vector3();\n\n const offsets = new Float32Array(this.icount * 3);\n for (let i = 0; i < offsets.length; i += 3) {\n if (this.anim === 1) v3.set(rndFS(10), rnd(50, 100), rnd(20, 50)).toArray(offsets, i);\n else v3.set(rndFS(20), rndFS(20), rnd(20, 200)).toArray(offsets, i);\n }\n this.bGeometry.setAttribute('offset', new InstancedBufferAttribute(offsets, 3));\n\n const rotations = new Float32Array(this.icount * 3);\n const angle = Math.PI * 4;\n for (let i = 0; i < rotations.length; i += 3) {\n rotations[i] = rndFS(angle);\n rotations[i + 1] = rndFS(angle);\n rotations[i + 2] = rndFS(angle);\n }\n this.bGeometry.setAttribute('rotation', new InstancedBufferAttribute(rotations, 3));\n }\n\n initUV() {\n const ratio = this.nx / this.ny;\n const tRatio = this.texture.image.width / this.texture.image.height;\n if (ratio > tRatio) this.uvScale.set(1 / this.nx, (tRatio / ratio) / this.ny);\n else this.uvScale.set((ratio / tRatio) / this.nx, 1 / this.ny);\n const nW = this.uvScale.x * this.nx;\n const nH = this.uvScale.y * this.ny;\n\n const v2 = new Vector2();\n const uvOffsets = new Float32Array(this.icount * 2);\n for (let i = 0; i < this.nx; i++) {\n for (let j = 0; j < this.ny; j++) {\n v2.set(\n this.uvScale.x * i + (1 - nW) / 2,\n this.uvScale.y * j + (1 - nH) / 2\n ).toArray(uvOffsets, (i * this.ny + j) * 2);\n }\n }\n this.bGeometry.setAttribute('uvOffset', new InstancedBufferAttribute(uvOffsets, 2));\n }\n\n setTexture(texture) {\n this.texture = texture;\n this.material.map = texture;\n this.initUV();\n }\n\n resize() {\n this.initPlane();\n }\n}\n","import { TextureLoader } from 'three';\n\nexport default function useTextures() {\n const obj = {\n loader: new TextureLoader(),\n count: 0,\n textures: [],\n loadProgress: 0,\n loadTextures,\n dispose,\n };\n return obj;\n\n function loadTextures(images, cb) {\n obj.count = images.length;\n obj.textures.splice(0);\n obj.loadProgress = 0;\n Promise.all(images.map(loadTexture)).then(cb);\n };\n\n function loadTexture(img, index) {\n return new Promise(resolve => {\n obj.loader.load(\n img.src,\n texture => {\n obj.loadProgress += 1 / obj.count;\n obj.textures[index] = texture;\n resolve(texture);\n }\n );\n });\n };\n\n function dispose() {\n obj.textures.forEach(t => t.dispose());\n }\n};\n","\n\n\n","\n\n\n","import {\n Mesh,\n PlaneBufferGeometry,\n ShaderMaterial,\n Vector2,\n} from 'three';\n\nexport default function ZoomBlurImage(three) {\n let geometry, material, mesh;\n\n const uMap = { value: null };\n const uCenter = { value: new Vector2(0.5, 0.5) };\n const uStrength = { value: 0 };\n const uUVOffset = { value: new Vector2(0, 0) };\n const uUVScale = { value: new Vector2(1, 1) };\n\n init();\n\n return { geometry, material, mesh, uCenter, uStrength, setMap, updateUV };\n\n function init() {\n geometry = new PlaneBufferGeometry(2, 2, 1, 1);\n\n material = new ShaderMaterial({\n transparent: true,\n uniforms: {\n map: uMap,\n center: uCenter,\n strength: uStrength,\n uvOffset: uUVOffset,\n uvScale: uUVScale,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n // adapted from https://github.com/evanw/glfx.js\n fragmentShader: `\n uniform sampler2D map;\n uniform vec2 center;\n uniform float strength;\n uniform vec2 uvOffset;\n uniform vec2 uvScale;\n varying vec2 vUv;\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 main() {\n vec2 tUv = vUv * uvScale + uvOffset;\n if (abs(strength) > 0.001) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center * uvScale + uvOffset - tUv;\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 \n for (float t = 0.0; t <= 20.0; t++) {\n float percent = (t + offset) / 20.0;\n float weight = 2.0 * (percent - percent * percent);\n vec4 texel = texture2D(map, tUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n gl_FragColor.a = 1.0 - abs(strength);\n } else {\n gl_FragColor = texture2D(map, tUv);\n }\n }\n `,\n });\n\n mesh = new Mesh(geometry, material);\n }\n\n function setMap(value) {\n uMap.value = value;\n updateUV();\n }\n\n function updateUV() {\n const ratio = three.size.ratio;\n const iRatio = uMap.value.image.width / uMap.value.image.height;\n uUVOffset.value.set(0, 0);\n uUVScale.value.set(1, 1);\n if (iRatio > ratio) {\n uUVScale.value.x = ratio / iRatio;\n uUVOffset.value.x = (1 - uUVScale.value.x) / 2;\n } else {\n uUVScale.value.y = iRatio / ratio;\n uUVOffset.value.y = (1 - uUVScale.value.y) / 2;\n }\n }\n}\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["const","let","Plane","i","o","OrthographicCamera","this","PerspectiveCamera","Group","Scene","AmbientLight","DirectionalLight","PointLight","SpotLight","TShaderMaterial","Mesh","TMesh","InstancedMesh","Sprite","EffectComposer","RenderPass","BokehPass","FilmPass","HalftonePass","SMAAPass","UnrealBloomPass","ShaderMaterial","Geometry","_createBlock","_createVNode","_renderSlot"],"mappings":"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"} \ No newline at end of file diff --git a/build/trois.module.cdn.min.js b/build/trois.module.cdn.min.js index 118c646..75c7a9f 100644 --- a/build/trois.module.cdn.min.js +++ b/build/trois.module.cdn.min.js @@ -1,2 +1,2 @@ -import{h as e,toRef as t,watch as i,inject as r}from"https://unpkg.com/vue@3.0.5/dist/vue.esm-browser.prod.js";import{Vector2 as n,Vector3 as s,Plane as a,Raycaster as o,WebGLRenderer as h,OrthographicCamera as u,PerspectiveCamera as m,Group as d,Scene as c,Color as l,BoxBufferGeometry as f,CircleBufferGeometry as p,ConeBufferGeometry as v,CylinderBufferGeometry as y,DodecahedronBufferGeometry as g,IcosahedronBufferGeometry as x,LatheBufferGeometry as b,OctahedronBufferGeometry as S,PolyhedronBufferGeometry as w,RingBufferGeometry as N,SphereBufferGeometry as C,TetrahedronBufferGeometry as z,TorusBufferGeometry as _,TorusKnotBufferGeometry as M,Curve as P,TubeBufferGeometry as T,AmbientLight as G,DirectionalLight as I,PointLight as R,SpotLight as j,FrontSide as L,MeshBasicMaterial as k,MeshLambertMaterial as B,TextureLoader as E,MeshMatcapMaterial as A,MeshPhongMaterial as D,MeshStandardMaterial as O,MeshPhysicalMaterial as U,ShaderChunk as F,UniformsUtils as $,ShaderLib as W,ShaderMaterial as Z,MeshToonMaterial as H,CubeTextureLoader as q,CubeRefractionMapping as V,Mesh as X,PlaneBufferGeometry as Y,FontLoader as K,TextBufferGeometry as Q,WebGLCubeRenderTarget as J,RGBFormat as ee,LinearMipmapLinearFilter as te,CubeCamera as ie,BackSide as re,DoubleSide as ne,InstancedMesh as se,SpriteMaterial as ae,Sprite as oe,WebGLRenderTarget as he,ObjectSpaceNormalMap as ue,Object3D as me,Face3 as de,MathUtils as ce,InstancedBufferAttribute as le}from"https://unpkg.com/three@0.125.2/build/three.module.js";import{OrbitControls as fe}from"https://unpkg.com/three@0.125.2/examples/jsm/controls/OrbitControls.js";import{EffectComposer as pe}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/EffectComposer.js";import{RenderPass as ve}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/RenderPass.js";import{BokehPass as ye}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/BokehPass.js";import{FilmPass as ge}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/FilmPass.js";import{ShaderPass as xe}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/ShaderPass.js";import{FXAAShader as be}from"https://unpkg.com/three@0.125.2/examples/jsm/shaders/FXAAShader.js";import{HalftonePass as Se}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/HalftonePass.js";import{SMAAPass as we}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/SMAAPass.js";import{UnrealBloomPass as Ne}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/UnrealBloomPass.js";import{Pass as Ce}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/Pass.js";import{gsap as ze,Power4 as _e}from"https://unpkg.com/gsap@3.5.1/index.js";import{Geometry as Me}from"https://unpkg.com/three@0.125.2/examples/jsm/deprecated/Geometry.js";import{resolveComponent as Pe,openBlock as Te,createBlock as Ge,withCtx as Ie,createVNode as Re,renderSlot as je}from"https://unpkg.com/vue@3.0.5/dist/vue.esm-browser.prod.js";import{GLTFLoader as Le}from"https://unpkg.com/three@0.125.2/examples/jsm/loaders/GLTFLoader.js";function ke(){var e={canvas:null,antialias:!0,alpha:!1,autoClear:!0,orbit_ctrl:!1,mouse_move:!1,mouse_raycast:!1,mouse_over:!1,click:!1,resize:!0,width:0,height:0},t={width:1,height:1,wWidth:1,wHeight:1,ratio:1},i=[],r=[],u=[],m=new n,d=new s,c=new a(new s(0,0,1),0),l=new o,f=[],p={conf:e,renderer:null,camera:null,cameraCtrl:null,materials:{},scene:null,size:t,mouse:m,mouseV3:d,init:function(t){t&&Object.entries(t).forEach((function(t){var i=t[0],r=t[1];e[i]=r}));if(!p.scene)return void console.error("Missing Scene");if(!p.camera)return void console.error("Missing Camera");p.renderer=new h({canvas:e.canvas,antialias:e.antialias,alpha:e.alpha}),p.renderer.autoClear=e.autoClear,e.orbit_ctrl&&(p.orbitCtrl=new fe(p.camera,p.renderer.domElement),e.orbit_ctrl instanceof Object&&Object.entries(e.orbit_ctrl).forEach((function(e){var t=e[0],i=e[1];p.orbitCtrl[t]=i})));e.width&&e.height?S(e.width,e.height):e.resize&&(b(),window.addEventListener("resize",b));e.mouse_move=e.mouse_move||e.mouse_over,e.mouse_move&&("body"===e.mouse_move?p.mouse_move_element=document.body:p.mouse_move_element=p.renderer.domElement,p.mouse_move_element.addEventListener("mousemove",y),p.mouse_move_element.addEventListener("mouseleave",g));e.click&&p.renderer.domElement.addEventListener("click",v);return i.forEach((function(e){return e()})),!0},dispose:function(){u=[],window.removeEventListener("resize",b),p.mouse_move_element&&(p.mouse_move_element.removeEventListener("mousemove",y),p.mouse_move_element.removeEventListener("mouseleave",g));p.renderer.domElement.removeEventListener("click",v),p.orbitCtrl&&p.orbitCtrl.dispose();this.renderer.dispose()},render:function(){p.orbitCtrl&&p.orbitCtrl.update();u.forEach((function(e){return e()})),p.renderer.render(p.scene,p.camera)},renderC:function(){p.orbitCtrl&&p.orbitCtrl.update();u.forEach((function(e){return e()})),p.composer.render()},setSize:S,onAfterInit:function(e){i.push(e)},onAfterResize:function(e){r.push(e)},offAfterResize:function(e){r=r.filter((function(t){return t!==e}))},onBeforeRender:function(e){u.push(e)},offBeforeRender:function(e){u=u.filter((function(t){return t!==e}))},addIntersectObject:function(e){-1===f.indexOf(e)&&f.push(e)},removeIntersectObject:function(e){var t=f.indexOf(e);-1!==t&&f.splice(t,1)}};function v(e){m.x=e.clientX/t.width*2-1,m.y=-e.clientY/t.height*2+1,l.setFromCamera(m,p.camera);for(var i=l.intersectObjects(f),r=0;r1?1:i)}function Oe(e,t,i){e.x=De(e.x,t.x,i),e.y=De(e.y,t.y,i)}function Ue(e,t,i){e.x=De(e.x,t.x,i),e.y=De(e.y,t.y,i),e.z=De(e.z,t.z,i)}function Fe(e,t,i){return ei?i:e}function $e(e,t){return void 0===t&&(t=1024),"https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d/"+t+"/"+(""+e+function(e){switch(e){case 64:return"-64px";case 128:return"-128px";case 256:return"-256px";case 512:return"-512px";default:return""}}(t)+".png")}function We(e,r,n){if(e[r]){var s=t(e,r);Ee(n,s.value),i(s,(function(){Ee(n,s.value)}),{deep:!0})}}var Ze={inject:["three"],props:{left:{type:Number,default:-1},right:{type:Number,default:1},top:{type:Number,default:1},bottom:{type:Number,default:-1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:1},position:{type:[Object,s],default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new u(this.left,this.right,this.top,this.bottom,this.near,this.far),We(this,"position",this.camera.position),["left","right","top","bottom","near","far","zoom"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"OrthographicCamera"},He={inject:["three"],props:{aspect:{type:Number,default:1},far:{type:Number,default:2e3},fov:{type:Number,default:50},near:{type:Number,default:.1},position:{type:[Object,s],default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new m(this.fov,this.aspect,this.near,this.far),We(this,"position",this.camera.position),["aspect","far","fov","near"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"PerspectiveCamera"},qe={inject:["three","scene"],props:{position:Object,rotation:Object,scale:Object},setup:function(e){var t=r("group",r("scene")),i=new d;return We(e,"position",i.position),We(e,"rotation",i.rotation),We(e,"scale",i.scale),{parent:t,group:i}},provide:function(){return{group:this.group}},created:function(){this.parent.add(this.group)},unmounted:function(){this.parent.remove(this.group)},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Group"},Ve={inject:["three"],props:{id:String,background:[String,Number]},setup:function(e){var t=new c;return e.background&&(t.background=new l(e.background)),i((function(){return e.background}),(function(e){t.background=new l(e)})),{scene:t}},provide:function(){return{scene:this.scene}},mounted:function(){this.three.scene||(this.three.scene=this.scene)},methods:{},render:function(){return this.$slots.default?this.$slots.default():[]}},Xe={emits:["ready"],inject:["mesh"],props:{rotateX:Number,rotateY:Number,rotateZ:Number},created:function(){var e=this;this.mesh||console.error("Missing parent Mesh"),this.watchProps=[],Object.entries(this.$props).forEach((function(t){return e.watchProps.push(t[0])}))},beforeMount:function(){this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry)},mounted:function(){this.addWatchers()},unmounted:function(){this.geometry.dispose()},methods:{rotateGeometry:function(){this.rotateX&&this.geometry.rotateX(this.rotateX),this.rotateY&&this.geometry.rotateY(this.rotateY),this.rotateZ&&this.geometry.rotateZ(this.rotateZ)},addWatchers:function(){var e=this;this.watchProps.forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry),e.dispose()}},render:function(){return[]}},Ye={extends:Xe,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},methods:{createGeometry:function(){var e=this.width,t=this.height,i=this.depth;this.size&&(e=this.size,t=this.size,i=this.size),this.geometry=new f(e,t,i,this.widthSegments,this.heightSegments,this.depthSegments)}}},Ke={extends:Xe,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new p(this.radius,this.segments,this.thetaStart,this.thetaLength)}}},Qe={extends:Xe,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new v(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},Je={extends:Xe,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new y(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},et={extends:Xe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new g(this.radius,this.detail)}}},tt={extends:Xe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new x(this.radius,this.detail)}}},it={extends:Xe,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new b(this.points,this.segments,this.phiStart,this.phiLength)}}},rt={extends:Xe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.detail)}}},nt={extends:Xe,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new w(this.vertices,this.indices,this.radius,this.detail)}}},st={extends:Xe,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new N(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}}},at={extends:Xe,props:{radius:{type:Number,default:1},widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},methods:{createGeometry:function(){this.geometry=new C(this.radius,this.widthSegments,this.heightSegments)}}},ot={extends:Xe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new z(this.radius,this.detail)}}},ht={extends:Xe,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new _(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}}},ut={extends:Xe,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}}},mt={extends:Xe,props:{path:P,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radiusSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},methods:{createGeometry:function(){this.geometry=new T(this.path,this.tubularSegments,this.radius,this.radiusSegments,this.closed)}}},dt={inject:{scene:"scene",parent:{from:"group",default:function(){return r("scene")}}},props:{color:{type:String,default:"#ffffff"},intensity:{type:Number,default:1},castShadow:{type:Boolean,default:!1},shadowMapSize:Object,position:Object},mounted:function(){var e=this;We(this,"position",this.light.position),this.light.target&&We(this,"target",this.light.target.position),this.light.shadow&&(this.light.castShadow=this.castShadow,Ee(this.light.shadow.mapSize,this.shadowMapSize)),["color","intensity","castShadow"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.light.color=new l(e.color):e.light[t]=e[t]}))})),this.parent.add(this.light),this.light.target&&this.parent.add(this.light.target)},unmounted:function(){this.parent.remove(this.light),this.light.target&&this.parent.remove(this.light.target)},render:function(){return[]},__hmrId:"Light"},ct={extends:dt,created:function(){this.light=new G(this.color,this.intensity)},__hmrId:"AmbientLight"},lt={extends:dt,props:{target:Object},created:function(){this.light=new I(this.color,this.intensity)},__hmrId:"DirectionalLight"},ft={extends:dt,props:{distance:{type:Number,default:0},decay:{type:Number,default:1}},created:function(){this.light=new R(this.color,this.intensity,this.distance,this.decay)},__hmrId:"PointLight"},pt={extends:dt,props:{angle:{type:Number,default:Math.PI/3},decay:{type:Number,default:1},distance:{type:Number,default:0},penumbra:{type:Number,default:0},target:Object},created:function(){var e=this;this.light=new j(this.color,this.intensity,this.distance,this.angle,this.penumbra,this.decay),["angle","decay","distance","penumbra"].forEach((function(t){i((function(){return e[t]}),(function(){e.light[t]=e[t]}))}))},__hmrId:"SpotLight"},vt={inject:["three","mesh"],props:{id:String,color:{type:[String,Number],default:"#ffffff"},depthTest:{type:Boolean,default:!0},depthWrite:{type:Boolean,default:!0},flatShading:Boolean,fog:{type:Boolean,default:!0},opacity:{type:Number,default:1},side:{type:Number,default:L},transparent:Boolean,vertexColors:Boolean},provide:function(){return{material:this}},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this._addWatchers(),this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},methods:{setProp:function(e,t,i){void 0===i&&(i=!1),this.material[e]=t,this.material.needsUpdate=i},setTexture:function(e,t){void 0===t&&(t="map"),this.setProp(t,e,!0)},_addWatchers:function(){var e=this;["color","depthTest","depthWrite","fog","opacity","side","transparent"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.material.color.set(e.color):e.material[t]=e[t]}))}))}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Material"},yt={extends:vt,methods:{createMaterial:function(){this.material=new k(Ae(this.$props,["id"]))}},__hmrId:"BasicMaterial"},gt={extends:vt,methods:{createMaterial:function(){this.material=new B(Ae(this.$props,["id"]))}},__hmrId:"LambertMaterial"},xt={extends:vt,props:{src:String,name:String},methods:{createMaterial:function(){var e=this.name?$e(this.name):this.src,t=Ae(this.$props,["id","src","name"]);t.matcap=(new E).load(e),this.material=new A(t)}},__hmrId:"MatcapMaterial"},bt={extends:vt,props:{emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},reflectivity:{type:Number,default:1},shininess:{type:Number,default:30},specular:{type:[String,Number],default:1118481}},methods:{createMaterial:function(){this.material=new D(Ae(this.$props,["id"]))},addWatchers:function(){var e=this;["emissive","emissiveIntensity","reflectivity","shininess","specular"].forEach((function(t){i((function(){return e[t]}),(function(i){"emissive"===t||"specular"===t?e.material[t].set(i):e.material[t]=i}))}))}},__hmrId:"PhongMaterial"},St={aoMapIntensity:{type:Number,default:1},bumpScale:{type:Number,default:1},displacementBias:{type:Number,default:0},displacementScale:{type:Number,default:1},emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},envMapIntensity:{type:Number,default:1},lightMapIntensity:{type:Number,default:1},metalness:{type:Number,default:0},normalScale:{type:Object,default:function(){return new n(1,1)}},roughness:{type:Number,default:1},refractionRatio:{type:Number,default:.98},wireframe:Boolean},wt={extends:vt,props:St,methods:{createMaterial:function(){this.material=new O(Ae(this.$props,["id","normalScale"]))},addWatchers:function(){var e=this;Object.keys(St).forEach((function(t){"normalScale"!==t&&i((function(){return e[t]}),(function(i){"emissive"===t?e.material[t].set(i):e.material[t]=i}))})),We(this,"normalScale",this.material.normalScale)}},__hmrId:"StandardMaterial"},Nt={extends:wt,methods:{createMaterial:function(){this.material=new U(Ae(this.$props,["id"]))}},__hmrId:"PhysicalMaterial"};var Ct,zt,_t,Mt=F.meshphong_frag.slice(0,F.meshphong_frag.indexOf("void main() {")),Pt=F.meshphong_frag.slice(F.meshphong_frag.indexOf("void main() {")),Tt={uniforms:$.merge([W.phong.uniforms,{thicknessColor:{value:new l(6718871)},thicknessDistortion:{value:.1},thicknessAmbient:{value:0},thicknessAttenuation:{value:.1},thicknessPower:{value:2},thicknessScale:{value:10}}]),vertexShader:"\n #define USE_UV\n "+F.meshphong_vert+"\n ",fragmentShader:"\n #define USE_UV\n #define SUBSURFACE\n\n "+Mt+"\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n "+Pt.replace("#include ",(Ct=F.lights_fragment_begin,zt="RE_Direct( directLight, geometry, material, reflectedLight );",_t="\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n ",Ct.split(zt).join(_t)))},Gt={extends:{inject:["three","mesh"],props:{id:String,uniforms:Object,vertexShader:String,fragmentShader:String},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},render:function(){return[]},__hmrId:"ShaderMaterial"},props:{diffuse:{type:String,default:"#ffffff"},thicknessColor:{type:String,default:"#ffffff"},thicknessDistortion:{type:Number,default:.4},thicknessAmbient:{type:Number,default:.01},thicknessAttenuation:{type:Number,default:.7},thicknessPower:{type:Number,default:2},thicknessScale:{type:Number,default:4},transparent:{type:Boolean,default:!1},opacity:{type:Number,default:1},vertexColors:{type:Boolean,default:!1}},methods:{createMaterial:function(){var e=Tt,t=$.clone(e.uniforms);Object.entries(this.$props).forEach((function(e){var i=e[0],r=e[1];"diffuse"!==i&&"thicknessColor"!==i||(r=new l(r)),"id"!==i&&"transparent"!==i&&"vertexColors"!==i&&(t[i].value=r)})),this.material=new Z(Object.assign({},e,{uniforms:t,lights:!0,transparent:this.transparent,vertexColors:this.vertexColors}))}},__hmrId:"SubSurfaceMaterial"},It={extends:vt,methods:{createMaterial:function(){this.material=new H(Ae(this.$props,["id"]))}},__hmrId:"ToonMaterial"},Rt={inject:["material"],emits:["loaded"],props:{src:String,onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"map"}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.src}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new E).load(this.src,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id)},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},jt={inject:["material"],emits:["loaded"],props:{path:String,urls:{type:Array,default:["px.jpg","nx.jpg","py.jpg","ny.jpg","pz.jpg","nz.jpg"]},onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"envMap"},refraction:Boolean,refractionRatio:{type:Number,default:.98}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.path}),this.refreshTexture),i((function(){return e.urls}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new q).setPath(this.path).load(this.urls,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id),this.refraction&&(this.texture.mapping=V,this.material.setProp("refractionRatio",this.refractionRatio))},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},Lt={inject:{three:"three",scene:"scene",rendererComponent:"rendererComponent",parent:{from:"group",default:function(){return r("scene")}}},emits:["ready"],props:{materialId:String,position:Object,rotation:Object,scale:Object,castShadow:Boolean,receiveShadow:Boolean,onHover:Function,onClick:Function},provide:function(){return{mesh:this}},mounted:function(){this.geometry&&!this.mesh&&this.initMesh()},unmounted:function(){this.mesh&&(this.three.removeIntersectObject(this.mesh),this.parent.remove(this.mesh)),this.geometry&&this.geometry.dispose(),this.material&&!this.materialId&&this.material.dispose()},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new X(this.geometry,this.material),this.onHover&&(this.mesh.onHover=function(t){e.onHover({component:e,over:t})},this.three.addIntersectObject(this.mesh)),this.onClick&&(this.mesh.onClick=function(t){e.onClick({component:e,event:t})},this.three.addIntersectObject(this.mesh)),this.bindProps(),this.parent.add(this.mesh),this.$emit("ready")},bindProps:function(){var e=this;We(this,"position",this.mesh.position),We(this,"rotation",this.mesh.rotation),We(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),i((function(){return e.materialId}),(function(){e.mesh.material=e.three.materials[e.materialId]}))},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.mesh.geometry=this.geometry,e.dispose()}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Mesh"},kt={extends:Lt,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry(),["size","width","height","depth","widthSegments","heightSegments","depthSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.size?this.geometry=new f(this.size,this.size,this.size):this.geometry=new f(this.width,this.height,this.depth)}},__hmrId:"Box"},Bt={extends:Lt,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","segments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new p(this.radius,this.segments,this.thetaStart,this.thetaLength)}},__hmrId:"Circle"},Et={extends:Lt,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new v(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cone"},At={extends:Lt,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radiusTop","radiusBottom","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new y(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cylinder"},Dt={extends:Lt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new g(this.radius,this.detail)}},__hmrId:"Dodecahedron"},Ot={extends:Lt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new x(this.radius,this.detail)}},__hmrId:"Icosahedron"},Ut={extends:Lt,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["points","segments","phiStart","phiLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new b(this.points,this.segments,this.phiStart,this.phiLength)}},__hmrId:"Lathe"},Ft={extends:Lt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.detail)}},__hmrId:"Octahedron"},$t={extends:Lt,props:{width:{type:Number,default:1},height:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry();["width","height","widthSegments","heightSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new Y(this.width,this.height,this.widthSegments,this.heightSegments)}},__hmrId:"Plane"},Wt={extends:Lt,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["vertices","indices","radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new w(this.vertices,this.indices,this.radius,this.detail)}},__hmrId:"Polyhedron"},Zt={extends:Lt,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["innerRadius","outerRadius","thetaSegments","phiSegments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new N(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}},__hmrId:"Ring"},Ht={extends:Lt,props:{radius:Number,widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},watch:{radius:function(){this.refreshGeometry()},widthSegments:function(){this.refreshGeometry()},heightSegments:function(){this.refreshGeometry()}},created:function(){this.createGeometry()},methods:{createGeometry:function(){this.geometry=new C(this.radius,this.widthSegments,this.heightSegments)}},__hmrId:"Sphere"},qt={extends:Lt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new z(this.radius,this.detail)}},__hmrId:"Tetrahedron"},Vt={text:String,fontSrc:String,size:{type:Number,default:80},height:{type:Number,default:5},depth:{type:Number,default:1},curveSegments:{type:Number,default:12},bevelEnabled:{type:Boolean,default:!1},bevelThickness:{type:Number,default:10},bevelSize:{type:Number,default:8},bevelOffset:{type:Number,default:0},bevelSegments:{type:Number,default:5},align:{type:[Boolean,String],default:!1}},Xt={extends:Lt,props:Object.assign({},Vt),created:function(){var e=this;["text","size","height","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align"].forEach((function(t){i((function(){return e[t]}),(function(){e.font&&e.refreshGeometry()}))})),(new K).load(this.fontSrc,(function(t){e.font=t,e.createGeometry(),e.initMesh()}))},methods:{createGeometry:function(){this.geometry=new Q(this.text,{font:this.font,size:this.size,height:this.height,depth:this.depth,curveSegments:this.curveSegments,bevelEnabled:this.bevelEnabled,bevelThickness:this.bevelThickness,bevelSize:this.bevelSize,bevelOffset:this.bevelOffset,bevelSegments:this.bevelSegments}),"center"===this.align&&this.geometry.center()}}},Yt={extends:Lt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","arc"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new _(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}},__hmrId:"Torus"},Kt={extends:Lt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","p","q"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}},__hmrId:"TorusKnot"},Qt={extends:Lt,props:{path:P,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radialSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},created:function(){var e=this;this.createGeometry();["path","tubularSegments","radius","radialSegments","closed"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new T(this.path,this.tubularSegments,this.radius,this.radialSegments,this.closed)}},__hmrId:"Tube"},Jt={extends:Lt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initGem(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.meshBack&&this.parent.remove(this.meshBack),this.materialBack&&this.materialBack.dispose()},methods:{initGem:function(){var e=new J(this.cubeRTSize,{format:ee,generateMipmaps:!0,minFilter:te});this.cubeCamera=new ie(this.cubeCameraNear,this.cubeCameraFar,e),We(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.side=L,this.material.envMap=e.texture,this.material.envMapIntensity=10,this.material.metalness=0,this.material.roughness=0,this.material.opacity=.75,this.material.transparent=!0,this.material.premultipliedAlpha=!0,this.material.needsUpdate=!0,this.materialBack=this.material.clone(),this.materialBack.side=re,this.materialBack.envMapIntensity=5,this.materialBack.metalness=1,this.materialBack.roughness=0,this.materialBack.opacity=.5,this.meshBack=new X(this.geometry,this.materialBack),We(this,"position",this.meshBack.position),We(this,"rotation",this.meshBack.rotation),We(this,"scale",this.meshBack.scale),this.parent.add(this.meshBack)},updateCubeRT:function(){this.mesh.visible=!1,this.meshBack.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0,this.meshBack.visible=!0}},__hmrId:"Gem"},ei={emits:["loaded"],extends:Lt,props:{src:String,width:Number,height:Number,keepSize:Boolean},created:function(){var e=this;this.createGeometry(),this.createMaterial(),this.initMesh(),i((function(){return e.src}),this.refreshTexture),["width","height"].forEach((function(t){i((function(){return e[t]}),e.resize)})),this.keepSize&&this.three.onAfterResize(this.resize)},methods:{createGeometry:function(){this.geometry=new Y(1,1,1,1)},createMaterial:function(){this.material=new k({side:ne,map:this.loadTexture()})},loadTexture:function(){return(new E).load(this.src,this.onLoaded)},refreshTexture:function(){this.texture&&this.texture.dispose(),this.material.map=this.loadTexture(),this.material.needsUpdate=!0},onLoaded:function(e){this.texture=e,this.resize(),this.$emit("loaded")},resize:function(){if(this.texture){var e,t,i=this.three.size,r=this.texture.image.width/this.texture.image.height;this.width&&this.height?(e=this.width*i.wWidth/i.width,t=this.height*i.wHeight/i.height):this.width?t=(e=this.width*i.wWidth/i.width)/r:this.height&&(e=(t=this.height*i.wHeight/i.height)*r),this.mesh.scale.x=e,this.mesh.scale.y=t}}},__hmrId:"Image"},ti={inject:["three","scene"],props:{materialId:String,count:Number,position:Object,castShadow:Boolean,receiveShadow:Boolean},setup:function(){return{parent:r("group",r("scene"))}},provide:function(){return{mesh:this}},beforeMount:function(){this.$slots.default||console.error("Missing Geometry")},mounted:function(){this.initMesh()},unmounted:function(){this.parent.remove(this.mesh)},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new se(this.geometry,this.material,this.count),We(this,"position",this.mesh.position),We(this,"rotation",this.mesh.rotation),We(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),this.parent.add(this.mesh)},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)}},render:function(){return this.$slots.default()},__hmrId:"InstancedMesh"},ii={extends:Lt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new J(this.cubeRTSize,{format:ee,generateMipmaps:!0,minFilter:te});this.cubeCamera=new ie(this.cubeCameraNear,this.cubeCameraFar,e),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"MirrorMesh"},ri={extends:Lt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},refractionRatio:{type:Number,default:.98},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new J(this.cubeRTSize,{mapping:V,format:ee,generateMipmaps:!0,minFilter:te});this.cubeCamera=new ie(this.cubeCameraNear,this.cubeCameraFar,e),We(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.refractionRatio=this.refractionRatio,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"RefractionMesh"},ni={emits:["ready","loaded"],inject:["three","scene"],props:{src:String,position:Object,scale:Object},setup:function(){return{parent:r("group",r("scene"))}},mounted:function(){this.texture=(new E).load(this.src,this.onLoaded),this.material=new ae({map:this.texture}),this.sprite=new oe(this.material),this.geometry=this.sprite.geometry,We(this,"position",this.sprite.position),We(this,"scale",this.sprite.scale),this.parent.add(this.sprite),this.$emit("ready")},unmounted:function(){this.texture.dispose(),this.material.dispose(),this.parent.remove(this.sprite)},methods:{onLoaded:function(){this.updateUV(),this.$emit("loaded")},updateUV:function(){this.iWidth=this.texture.image.width,this.iHeight=this.texture.image.height,this.iRatio=this.iWidth/this.iHeight;var e=.5,t=.5;this.iRatio>1?t=.5/this.iRatio:e=.5/this.iRatio;var i=this.geometry.attributes.position.array;i[0]=-e,i[1]=-t,i[5]=e,i[6]=-t,i[10]=e,i[11]=t,i[15]=-e,i[16]=t,this.geometry.attributes.position.needsUpdate=!0}},render:function(){return[]},__hmrId:"Sprite"},si={setup:function(){return{passes:[]}},inject:["three"],provide:function(){return{passes:this.passes}},mounted:function(){var e=this;this.three.onAfterInit((function(){e.composer=new pe(e.three.renderer),e.three.renderer.autoClear=!1,e.passes.forEach((function(t){e.composer.addPass(t)})),e.three.composer=e.composer,e.resize(),e.three.onAfterResize(e.resize)}))},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){this.composer.setSize(this.three.size.width,this.three.size.height)}},render:function(){return this.$slots.default()},__hmrId:"EffectComposer"},ai={inject:["three","passes"],beforeMount:function(){this.passes||console.error("Missing parent EffectComposer")},unmounted:function(){this.pass.dispose&&this.pass.dispose()},render:function(){return[]},__hmrId:"EffectPass"},oi={extends:ai,mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e=new ve(this.three.scene,this.three.camera);this.passes.push(e),this.pass=e},__hmrId:"RenderPass"},hi={extends:ai,props:{focus:{type:Number,default:1},aperture:{type:Number,default:.025},maxblur:{type:Number,default:.01}},watch:{focus:function(){this.pass.uniforms.focus.value=this.focus},aperture:function(){this.pass.uniforms.aperture.value=this.aperture},maxblur:function(){this.pass.uniforms.maxblur.value=this.maxblur}},mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e={focus:this.focus,aperture:this.aperture,maxblur:this.maxblur,width:this.three.size.width,height:this.three.size.height},t=new ye(this.three.scene,this.three.camera,e);this.passes.push(t),this.pass=t},__hmrId:"BokehPass"},ui={extends:ai,props:{noiseIntensity:{type:Number,default:.5},scanlinesIntensity:{type:Number,default:.05},scanlinesCount:{type:Number,default:4096},grayscale:{type:Number,default:0}},watch:{noiseIntensity:function(){this.pass.uniforms.nIntensity.value=this.noiseIntensity},scanlinesIntensity:function(){this.pass.uniforms.sIntensity.value=this.scanlinesIntensity},scanlinesCount:function(){this.pass.uniforms.sCount.value=this.scanlinesCount},grayscale:function(){this.pass.uniforms.grayscale.value=this.grayscale}},mounted:function(){var e=new ge(this.noiseIntensity,this.scanlinesIntensity,this.scanlinesCount,this.grayscale);this.passes.push(e),this.pass=e},__hmrId:"FilmPass"},mi={extends:ai,mounted:function(){var e=new xe(be);this.passes.push(e),this.pass=e,this.three.onAfterResize(this.resize)},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){var e=this.pass.material.uniforms.resolution;e.value.x=1/this.three.size.width,e.value.y=1/this.three.size.height}},__hmrId:"FXAAPass"},di={extends:ai,props:{shape:{type:Number,default:1},radius:{type:Number,default:4},rotateR:{type:Number,default:Math.PI/12*1},rotateG:{type:Number,default:Math.PI/12*2},rotateB:{type:Number,default:Math.PI/12*3},scatter:{type:Number,default:0}},mounted:function(){var e=this,t=new Se(this.three.size.width,this.three.size.height,{});["shape","radius","rotateR","rotateG","rotateB","scatter"].forEach((function(r){t.uniforms[r].value=e[r],i((function(){return e[r]}),(function(){t.uniforms[r].value=e[r]}))})),this.passes.push(t),this.pass=t},__hmrId:"HalftonePass"},ci={extends:ai,mounted:function(){var e=new we(this.three.size.width,this.three.size.height);this.passes.push(e),this.pass=e},__hmrId:"SMAAPass"},li="\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fi={uniforms:{tDiffuse:{value:null},blurRadius:{value:0},gradientRadius:{value:0},start:{value:new n},end:{value:new n},delta:{value:new n},texSize:{value:new n}},vertexShader:li,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "};function pi(e,t,r,n){void 0===n&&(n="value"),e[t]&&(r[n]=e[t],i((function(){return e[t]}),(function(e){r[n]=e})))}var vi={extends:ai,props:{blurRadius:{type:Number,default:10},gradientRadius:{type:Number,default:100},start:{type:Object,default:{x:0,y:100}},end:{type:Object,default:{x:10,y:100}}},mounted:function(){var e=this;this.pass=new xe(fi),this.passes.push(this.pass),this.pass1=new xe(fi),this.passes.push(this.pass1);var t=this.uniforms=this.pass.uniforms,r=this.uniforms1=this.pass1.uniforms;r.blurRadius=t.blurRadius,r.gradientRadius=t.gradientRadius,r.start=t.start,r.end=t.end,r.texSize=t.texSize,pi(this,"blurRadius",t.blurRadius),pi(this,"gradientRadius",t.gradientRadius),this.updateFocusLine(),["start","end"].forEach((function(t){i((function(){return e[t]}),e.updateFocusLine)})),this.pass.setSize=function(e,i){t.texSize.value.set(e,i)}},methods:{updateFocusLine:function(){this.uniforms.start.value.copy(this.start),this.uniforms.end.value.copy(this.end);var e=(new n).copy(this.end).sub(this.start).normalize();this.uniforms.delta.value.copy(e),this.uniforms1.delta.value.set(-e.y,e.x)}},__hmrId:"TiltShiftPass"},yi={extends:ai,props:{strength:{type:Number,default:1.5},radius:{type:Number,default:0},threshold:{type:Number,default:0}},watch:{strength:function(){this.pass.strength=this.strength},radius:function(){this.pass.radius=this.radius},threshold:function(){this.pass.threshold=this.threshold}},mounted:function(){var e=new n(this.three.size.width,this.three.size.height),t=new Ne(e,this.strength,this.radius,this.threshold);this.passes.push(t),this.pass=t},__hmrId:"UnrealBloomPass"},gi={uniforms:{tDiffuse:{value:null},center:{value:new n(.5,.5)},strength:{value:0}},vertexShader:li,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "},xi={extends:ai,props:{center:{type:Object,default:{x:.5,y:.5}},strength:{type:Number,default:.5}},mounted:function(){this.pass=new xe(gi),this.passes.push(this.pass);var e=this.uniforms=this.pass.uniforms;We(this,"center",e.center.value),pi(this,"strength",e.strength)},__hmrId:"ZoomBlurPass"},bi="\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n",Si={extends:ei,props:{widthSegments:{type:Number,default:20},heightSegments:{type:Number,default:20},timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:1},zCoef:{type:Number,default:5},dispCoef:{type:Number,default:.05}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.zCoef};i((function(){return e.zCoef}),(function(e){r.value=e}));var n={value:e.dispCoef};return i((function(){return e.dispCoef}),(function(e){n.value=e})),{uTime:{value:0},uNoiseCoef:t,uZCoef:r,uDispCoef:n}},mounted:function(){this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{createGeometry:function(){this.geometry=new Y(1,1,this.widthSegments,this.heightSegments)},createMaterial:function(){var e=this;this.material=new k({side:ne,map:this.loadTexture()}),this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uZCoef=e.uZCoef,t.uniforms.uDispCoef=e.uDispCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n "+bi+"\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include "," \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n "),t.fragmentShader="\n uniform float uDispCoef;\n varying float vNoise;\n "+t.fragmentShader,t.fragmentShader=t.fragmentShader.replace("#include ","\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n "),e.materialShader=t}},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisyImage"},wi={extends:$t,props:{timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:5},deltaCoef:{type:Number,default:1/512},displacementScale:{type:Number,default:5}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:new n(e.deltaCoef,e.deltaCoef)};return i((function(){return e.deltaCoef}),(function(e){r.value.set(e,e)})),{uTime:{value:0},uNoiseCoef:t,uDelta:r}},mounted:function(){var e=this;this.init(),i((function(){return e.displacementScale}),(function(t){e.material.displacementScale=t})),this.startTime=Date.now(),this.three.onBeforeRender(this.update)},unmounted:function(){this.three.offBeforeRender(this.update),this.fsQuad.dispose(),this.dispRT.dispose(),this.dispMat.dispose(),this.normRT.dispose(),this.normMat.dispose()},methods:{init:function(){this.fsQuad=new Ce.FullScreenQuad,this.dispRT=new he(512,512,{depthBuffer:!1,stencilBuffer:!1}),this.dispMat=new Z({uniforms:{uTime:this.uTime,uNoiseCoef:this.uNoiseCoef},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n \n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v)\n{\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n // First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n // Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n // Permutations\n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n // Gradients: 7x7 points over a square, mapped onto an octahedron.\n // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n // Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n}\n\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n "}),this.normRT=new he(512,512,{depthBuffer:!1,stencilBuffer:!1}),this.normMat=new Z({uniforms:{dispMap:{value:this.dispRT.texture},delta:this.uDelta},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n "}),this.material.displacementMap=this.dispRT.texture,this.material.displacementScale=this.displacementScale,this.material.normalMap=this.normRT.texture,this.material.normalMapType=ue},update:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef,this.renderDisp()},renderDisp:function(){this.renderMat(this.dispMat,this.dispRT),this.renderMat(this.normMat,this.normRT)},renderMat:function(e,t){var i=this.three.renderer;this.fsQuad.material=e;var r=i.getRenderTarget();i.setRenderTarget(t),this.fsQuad.render(i),i.setRenderTarget(r)}},__hmrId:"NoisyPlane"},Ni={extends:Ht,props:{radius:{type:Number,default:20},widthSegments:{type:Number,default:128},heightSegments:{type:Number,default:128},timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:.05},dispCoef:{type:Number,default:5}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.dispCoef};return i((function(){return e.dispCoef}),(function(e){r.value=e})),{uTime:{value:0},uNoiseCoef:t,uDispCoef:r}},mounted:function(){this.updateMaterial(),this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{updateMaterial:function(){var e=this;this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uDispCoef=e.uDispCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n \n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nfloat mod289(float x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nfloat permute(float x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\nfloat taylorInvSqrt(float r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nvec4 grad4(float j, vec4 ip)\n{\n const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n vec4 p,s;\n\n p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n s = vec4(lessThan(p, vec4(0.0)));\n p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\n return p;\n}\n\n// (sqrt(5) - 1)/4 = F4, used once below\n#define F4 0.309016994374947451\n\nfloat snoise(vec4 v)\n{\n const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4\n 0.276393202250021, // 2 * G4\n 0.414589803375032, // 3 * G4\n -0.447213595499958); // -1 + 4 * G4\n\n // First corner\n vec4 i = floor(v + dot(v, vec4(F4)) );\n vec4 x0 = v - i + dot(i, C.xxxx);\n\n // Other corners\n\n // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n vec4 i0;\n vec3 isX = step( x0.yzw, x0.xxx );\n vec3 isYZ = step( x0.zww, x0.yyz );\n // i0.x = dot( isX, vec3( 1.0 ) );\n i0.x = isX.x + isX.y + isX.z;\n i0.yzw = 1.0 - isX;\n // i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n i0.y += isYZ.x + isYZ.y;\n i0.zw += 1.0 - isYZ.xy;\n i0.z += isYZ.z;\n i0.w += 1.0 - isYZ.z;\n\n // i0 now contains the unique values 0,1,2,3 in each channel\n vec4 i3 = clamp( i0, 0.0, 1.0 );\n vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n vec4 x1 = x0 - i1 + C.xxxx;\n vec4 x2 = x0 - i2 + C.yyyy;\n vec4 x3 = x0 - i3 + C.zzzz;\n vec4 x4 = x0 + C.wwww;\n\n // Permutations\n i = mod289(i);\n float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n vec4 j1 = permute( permute( permute( permute (\n i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\n // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope\n // 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n vec4 p0 = grad4(j0, ip);\n vec4 p1 = grad4(j1.x, ip);\n vec4 p2 = grad4(j1.y, ip);\n vec4 p3 = grad4(j1.z, ip);\n vec4 p4 = grad4(j1.w, ip);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n p4 *= taylorInvSqrt(dot(p4,p4));\n\n // Mix contributions from the five corners\n vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n m0 = m0 * m0;\n m1 = m1 * m1;\n return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\n}\n\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include ","\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n "),e.materialShader=t},this.material.needsupdate=!0},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisySphere"},Ci={extends:Xt,props:{timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:.015},zCoef:{type:Number,default:10}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.zCoef};return i((function(){return e.zCoef}),(function(e){r.value=e})),{uTime:{value:0},uNoiseCoef:t,uZCoef:r}},mounted:function(){this.updateMaterial(),this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{updateMaterial:function(){var e=this;this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uZCoef=e.uZCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n "+bi+"\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include "," \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n "),e.materialShader=t},this.material.needsupdate=!0},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisyText"},zi=function(e){var t=this;Object.entries(e).forEach((function(e){var i=e[0],r=e[1];t[i]=r})),this.o3d=new me,this.uProgress={value:0},this.uvScale=new n,this.initMaterial(),this.initPlane()};zi.prototype.initMaterial=function(){var e=this;this.material=new k({side:ne,transparent:!0,map:this.texture,onBeforeCompile:function(t){t.uniforms.progress=e.uProgress,t.uniforms.uvScale={value:e.uvScale},t.vertexShader="\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include ","\n #include \n vUv = vUv * uvScale + uvOffset;\n "),t.vertexShader=t.vertexShader.replace("#include ","\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n ")}})},zi.prototype.initPlane=function(){var e=this.screen,t=e.width,i=e.wWidth,r=e.wHeight;this.wSize=this.size*i/t,this.nx=Math.ceil(i/this.wSize)+1,this.ny=Math.ceil(r/this.wSize)+1,this.icount=this.nx*this.ny,this.initGeometry(),this.initUV(),this.initAnimAttributes(),this.imesh&&this.o3d.remove(this.imesh),this.imesh=new se(this.bGeometry,this.material,this.icount),this.o3d.add(this.imesh);for(var n=new me,s=0,a=-(i-(i-this.nx*this.wSize))/2+this.dx,o=0;ot?this.uvScale.set(1/this.nx,t/e/this.ny):this.uvScale.set(e/t/this.nx,1/this.ny);for(var i=this.uvScale.x*this.nx,r=this.uvScale.y*this.ny,s=new n,a=new Float32Array(2*this.icount),o=0;o0?this.setTargetProgress(this.targetProgress+.05):this.setTargetProgress(this.targetProgress-.05)},onClick:function(e){e.clientY0&&r1?1:i)}function Oe(e,t,i){e.x=De(e.x,t.x,i),e.y=De(e.y,t.y,i)}function Ue(e,t,i){e.x=De(e.x,t.x,i),e.y=De(e.y,t.y,i),e.z=De(e.z,t.z,i)}function Fe(e,t,i){return ei?i:e}function $e(e,t){return void 0===t&&(t=1024),"https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d/"+t+"/"+(""+e+function(e){switch(e){case 64:return"-64px";case 128:return"-128px";case 256:return"-256px";case 512:return"-512px";default:return""}}(t)+".png")}function We(e,r,n){if(e[r]){var s=t(e,r);Be(n,s.value),i(s,(function(){Be(n,s.value)}),{deep:!0})}}var Ze={inject:["three"],props:{left:{type:Number,default:-1},right:{type:Number,default:1},top:{type:Number,default:1},bottom:{type:Number,default:-1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:1},position:{type:[Object,s],default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new u(this.left,this.right,this.top,this.bottom,this.near,this.far),We(this,"position",this.camera.position),["left","right","top","bottom","near","far","zoom"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"OrthographicCamera"},He={inject:["three"],props:{aspect:{type:Number,default:1},far:{type:Number,default:2e3},fov:{type:Number,default:50},near:{type:Number,default:.1},position:{type:[Object,s],default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new m(this.fov,this.aspect,this.near,this.far),We(this,"position",this.camera.position),["aspect","far","fov","near"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"PerspectiveCamera"},Ve={inject:["three","scene"],props:{position:Object,rotation:Object,scale:Object},setup:function(e){var t=r("group",r("scene")),i=new d;return We(e,"position",i.position),We(e,"rotation",i.rotation),We(e,"scale",i.scale),{parent:t,group:i}},provide:function(){return{group:this.group}},created:function(){this.parent.add(this.group)},unmounted:function(){this.parent.remove(this.group)},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Group"},qe={inject:["three"],props:{id:String,background:[String,Number]},setup:function(e){var t=new c;return e.background&&(t.background=new l(e.background)),i((function(){return e.background}),(function(e){t.background=new l(e)})),{scene:t}},provide:function(){return{scene:this.scene}},mounted:function(){this.three.scene||(this.three.scene=this.scene)},methods:{},render:function(){return this.$slots.default?this.$slots.default():[]}},Ye={emits:["ready"],inject:["mesh"],props:{rotateX:Number,rotateY:Number,rotateZ:Number},created:function(){var e=this;this.mesh||console.error("Missing parent Mesh"),this.watchProps=[],Object.entries(this.$props).forEach((function(t){return e.watchProps.push(t[0])}))},beforeMount:function(){this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry)},mounted:function(){this.addWatchers()},unmounted:function(){this.geometry.dispose()},methods:{rotateGeometry:function(){this.rotateX&&this.geometry.rotateX(this.rotateX),this.rotateY&&this.geometry.rotateY(this.rotateY),this.rotateZ&&this.geometry.rotateZ(this.rotateZ)},addWatchers:function(){var e=this;this.watchProps.forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry),e.dispose()}},render:function(){return[]}},Xe={extends:Ye,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},methods:{createGeometry:function(){var e=this.width,t=this.height,i=this.depth;this.size&&(e=this.size,t=this.size,i=this.size),this.geometry=new f(e,t,i,this.widthSegments,this.heightSegments,this.depthSegments)}}},Ke={extends:Ye,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new p(this.radius,this.segments,this.thetaStart,this.thetaLength)}}},Qe={extends:Ye,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new v(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},Je={extends:Ye,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new g(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},et={extends:Ye,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new y(this.radius,this.detail)}}},tt={extends:Ye,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new x(this.radius,this.detail)}}},it={extends:Ye,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new b(this.points,this.segments,this.phiStart,this.phiLength)}}},rt={extends:Ye,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.detail)}}},nt={extends:Ye,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new w(this.vertices,this.indices,this.radius,this.detail)}}},st={extends:Ye,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new C(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}}},at={extends:Ye,props:{radius:{type:Number,default:1},widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},methods:{createGeometry:function(){this.geometry=new N(this.radius,this.widthSegments,this.heightSegments)}}},ot={extends:Ye,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new z(this.radius,this.detail)}}},ht={extends:Ye,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new _(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}}},ut={extends:Ye,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}}},mt={extends:Ye,props:{path:P,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radiusSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},methods:{createGeometry:function(){this.geometry=new T(this.path,this.tubularSegments,this.radius,this.radiusSegments,this.closed)}}},dt={inject:{scene:"scene",parent:{from:"group",default:function(){return r("scene")}}},props:{color:{type:String,default:"#ffffff"},intensity:{type:Number,default:1},castShadow:{type:Boolean,default:!1},shadowMapSize:Object,position:Object},mounted:function(){var e=this;We(this,"position",this.light.position),this.light.target&&We(this,"target",this.light.target.position),this.light.shadow&&(this.light.castShadow=this.castShadow,Be(this.light.shadow.mapSize,this.shadowMapSize)),["color","intensity","castShadow"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.light.color=new l(e.color):e.light[t]=e[t]}))})),this.parent.add(this.light),this.light.target&&this.parent.add(this.light.target)},unmounted:function(){this.parent.remove(this.light),this.light.target&&this.parent.remove(this.light.target)},render:function(){return[]},__hmrId:"Light"},ct={extends:dt,created:function(){this.light=new G(this.color,this.intensity)},__hmrId:"AmbientLight"},lt={extends:dt,props:{target:Object},created:function(){this.light=new I(this.color,this.intensity)},__hmrId:"DirectionalLight"},ft={extends:dt,props:{distance:{type:Number,default:0},decay:{type:Number,default:1}},created:function(){this.light=new k(this.color,this.intensity,this.distance,this.decay)},__hmrId:"PointLight"},pt={extends:dt,props:{angle:{type:Number,default:Math.PI/3},decay:{type:Number,default:1},distance:{type:Number,default:0},penumbra:{type:Number,default:0},target:Object},created:function(){var e=this;this.light=new R(this.color,this.intensity,this.distance,this.angle,this.penumbra,this.decay),["angle","decay","distance","penumbra"].forEach((function(t){i((function(){return e[t]}),(function(){e.light[t]=e[t]}))}))},__hmrId:"SpotLight"},vt={inject:["three","mesh"],props:{id:String,color:{type:[String,Number],default:"#ffffff"},depthTest:{type:Boolean,default:!0},depthWrite:{type:Boolean,default:!0},flatShading:Boolean,fog:{type:Boolean,default:!0},opacity:{type:Number,default:1},side:{type:Number,default:j},transparent:Boolean,vertexColors:Boolean},provide:function(){return{material:this}},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this._addWatchers(),this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},methods:{setProp:function(e,t,i){void 0===i&&(i=!1),this.material[e]=t,this.material.needsUpdate=i},setTexture:function(e,t){void 0===t&&(t="map"),this.setProp(t,e,!0)},_addWatchers:function(){var e=this;["color","depthTest","depthWrite","fog","opacity","side","transparent"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.material.color.set(e.color):e.material[t]=e[t]}))}))}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Material"},gt={extends:vt,methods:{createMaterial:function(){this.material=new L(Ae(this.$props,["id"]))}},__hmrId:"BasicMaterial"},yt={extends:vt,methods:{createMaterial:function(){this.material=new E(Ae(this.$props,["id"]))}},__hmrId:"LambertMaterial"},xt={extends:vt,props:{src:String,name:String},methods:{createMaterial:function(){var e=this.name?$e(this.name):this.src,t=Ae(this.$props,["id","src","name"]);t.matcap=(new B).load(e),this.material=new A(t)}},__hmrId:"MatcapMaterial"},bt={extends:vt,props:{emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},reflectivity:{type:Number,default:1},shininess:{type:Number,default:30},specular:{type:[String,Number],default:1118481}},methods:{createMaterial:function(){this.material=new D(Ae(this.$props,["id"]))},addWatchers:function(){var e=this;["emissive","emissiveIntensity","reflectivity","shininess","specular"].forEach((function(t){i((function(){return e[t]}),(function(i){"emissive"===t||"specular"===t?e.material[t].set(i):e.material[t]=i}))}))}},__hmrId:"PhongMaterial"},St={aoMapIntensity:{type:Number,default:1},bumpScale:{type:Number,default:1},displacementBias:{type:Number,default:0},displacementScale:{type:Number,default:1},emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},envMapIntensity:{type:Number,default:1},lightMapIntensity:{type:Number,default:1},metalness:{type:Number,default:0},normalScale:{type:Object,default:function(){return new n(1,1)}},roughness:{type:Number,default:1},refractionRatio:{type:Number,default:.98},wireframe:Boolean},wt={extends:vt,props:St,methods:{createMaterial:function(){this.material=new O(Ae(this.$props,["id","normalScale"]))},addWatchers:function(){var e=this;Object.keys(St).forEach((function(t){"normalScale"!==t&&i((function(){return e[t]}),(function(i){"emissive"===t?e.material[t].set(i):e.material[t]=i}))})),We(this,"normalScale",this.material.normalScale)}},__hmrId:"StandardMaterial"},Ct={extends:wt,methods:{createMaterial:function(){this.material=new U(Ae(this.$props,["id"]))}},__hmrId:"PhysicalMaterial"};var Nt,zt,_t,Mt=F.meshphong_frag.slice(0,F.meshphong_frag.indexOf("void main() {")),Pt=F.meshphong_frag.slice(F.meshphong_frag.indexOf("void main() {")),Tt={uniforms:$.merge([W.phong.uniforms,{thicknessColor:{value:new l(6718871)},thicknessDistortion:{value:.1},thicknessAmbient:{value:0},thicknessAttenuation:{value:.1},thicknessPower:{value:2},thicknessScale:{value:10}}]),vertexShader:"\n #define USE_UV\n "+F.meshphong_vert+"\n ",fragmentShader:"\n #define USE_UV\n #define SUBSURFACE\n\n "+Mt+"\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n "+Pt.replace("#include ",(Nt=F.lights_fragment_begin,zt="RE_Direct( directLight, geometry, material, reflectedLight );",_t="\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n ",Nt.split(zt).join(_t)))},Gt={extends:{inject:["three","mesh"],props:{id:String,uniforms:Object,vertexShader:String,fragmentShader:String},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},render:function(){return[]},__hmrId:"ShaderMaterial"},props:{diffuse:{type:String,default:"#ffffff"},thicknessColor:{type:String,default:"#ffffff"},thicknessDistortion:{type:Number,default:.4},thicknessAmbient:{type:Number,default:.01},thicknessAttenuation:{type:Number,default:.7},thicknessPower:{type:Number,default:2},thicknessScale:{type:Number,default:4},transparent:{type:Boolean,default:!1},opacity:{type:Number,default:1},vertexColors:{type:Boolean,default:!1}},methods:{createMaterial:function(){var e=Tt,t=$.clone(e.uniforms);Object.entries(this.$props).forEach((function(e){var i=e[0],r=e[1];"diffuse"!==i&&"thicknessColor"!==i||(r=new l(r)),"id"!==i&&"transparent"!==i&&"vertexColors"!==i&&(t[i].value=r)})),this.material=new Z(Object.assign({},e,{uniforms:t,lights:!0,transparent:this.transparent,vertexColors:this.vertexColors}))}},__hmrId:"SubSurfaceMaterial"},It={extends:vt,methods:{createMaterial:function(){this.material=new H(Ae(this.$props,["id"]))}},__hmrId:"ToonMaterial"},kt={inject:["material"],emits:["loaded"],props:{src:String,onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"map"}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.src}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new B).load(this.src,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id)},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},Rt={inject:["material"],emits:["loaded"],props:{path:String,urls:{type:Array,default:["px.jpg","nx.jpg","py.jpg","ny.jpg","pz.jpg","nz.jpg"]},onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"envMap"},refraction:Boolean,refractionRatio:{type:Number,default:.98}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.path}),this.refreshTexture),i((function(){return e.urls}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new V).setPath(this.path).load(this.urls,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id),this.refraction&&(this.texture.mapping=q,this.material.setProp("refractionRatio",this.refractionRatio))},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},jt={inject:{three:"three",scene:"scene",rendererComponent:"rendererComponent",parent:{from:"group",default:function(){return r("scene")}}},emits:["ready"],props:{materialId:String,position:Object,rotation:Object,scale:Object,castShadow:Boolean,receiveShadow:Boolean,onHover:Function,onClick:Function},provide:function(){return{mesh:this}},mounted:function(){this.geometry&&!this.mesh&&this.initMesh()},unmounted:function(){this.mesh&&(this.three.removeIntersectObject(this.mesh),this.parent.remove(this.mesh)),this.geometry&&this.geometry.dispose(),this.material&&!this.materialId&&this.material.dispose()},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new Y(this.geometry,this.material),this.onHover&&(this.mesh.onHover=function(t){e.onHover({component:e,over:t})},this.three.addIntersectObject(this.mesh)),this.onClick&&(this.mesh.onClick=function(t){e.onClick({component:e,event:t})},this.three.addIntersectObject(this.mesh)),this.bindProps(),this.parent.add(this.mesh),this.$emit("ready")},bindProps:function(){var e=this;We(this,"position",this.mesh.position),We(this,"rotation",this.mesh.rotation),We(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),i((function(){return e.materialId}),(function(){e.mesh.material=e.three.materials[e.materialId]}))},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.mesh.geometry=this.geometry,e.dispose()}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Mesh"},Lt={extends:jt,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry(),["size","width","height","depth","widthSegments","heightSegments","depthSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.size?this.geometry=new f(this.size,this.size,this.size):this.geometry=new f(this.width,this.height,this.depth)}},__hmrId:"Box"},Et={extends:jt,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","segments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new p(this.radius,this.segments,this.thetaStart,this.thetaLength)}},__hmrId:"Circle"},Bt={extends:jt,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new v(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cone"},At={extends:jt,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radiusTop","radiusBottom","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new g(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cylinder"},Dt={extends:jt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new y(this.radius,this.detail)}},__hmrId:"Dodecahedron"},Ot={extends:jt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new x(this.radius,this.detail)}},__hmrId:"Icosahedron"},Ut={extends:jt,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["points","segments","phiStart","phiLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new b(this.points,this.segments,this.phiStart,this.phiLength)}},__hmrId:"Lathe"},Ft={extends:jt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.detail)}},__hmrId:"Octahedron"},$t={extends:jt,props:{width:{type:Number,default:1},height:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry();["width","height","widthSegments","heightSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new X(this.width,this.height,this.widthSegments,this.heightSegments)}},__hmrId:"Plane"},Wt={extends:jt,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["vertices","indices","radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new w(this.vertices,this.indices,this.radius,this.detail)}},__hmrId:"Polyhedron"},Zt={extends:jt,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["innerRadius","outerRadius","thetaSegments","phiSegments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new C(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}},__hmrId:"Ring"},Ht={extends:jt,props:{radius:Number,widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},watch:{radius:function(){this.refreshGeometry()},widthSegments:function(){this.refreshGeometry()},heightSegments:function(){this.refreshGeometry()}},created:function(){this.createGeometry()},methods:{createGeometry:function(){this.geometry=new N(this.radius,this.widthSegments,this.heightSegments)}},__hmrId:"Sphere"},Vt={extends:jt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new z(this.radius,this.detail)}},__hmrId:"Tetrahedron"},qt={text:String,fontSrc:String,size:{type:Number,default:80},height:{type:Number,default:5},depth:{type:Number,default:1},curveSegments:{type:Number,default:12},bevelEnabled:{type:Boolean,default:!1},bevelThickness:{type:Number,default:10},bevelSize:{type:Number,default:8},bevelOffset:{type:Number,default:0},bevelSegments:{type:Number,default:5},align:{type:[Boolean,String],default:!1}},Yt={extends:jt,props:Object.assign({},qt),created:function(){var e=this;["text","size","height","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align"].forEach((function(t){i((function(){return e[t]}),(function(){e.font&&e.refreshGeometry()}))})),(new K).load(this.fontSrc,(function(t){e.font=t,e.createGeometry(),e.initMesh()}))},methods:{createGeometry:function(){this.geometry=new Q(this.text,{font:this.font,size:this.size,height:this.height,depth:this.depth,curveSegments:this.curveSegments,bevelEnabled:this.bevelEnabled,bevelThickness:this.bevelThickness,bevelSize:this.bevelSize,bevelOffset:this.bevelOffset,bevelSegments:this.bevelSegments}),"center"===this.align&&this.geometry.center()}}},Xt={extends:jt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","arc"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new _(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}},__hmrId:"Torus"},Kt={extends:jt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","p","q"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}},__hmrId:"TorusKnot"},Qt={extends:jt,props:{path:P,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radialSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},created:function(){var e=this;this.createGeometry();["path","tubularSegments","radius","radialSegments","closed"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new T(this.path,this.tubularSegments,this.radius,this.radialSegments,this.closed)}},__hmrId:"Tube"},Jt={extends:jt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initGem(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.meshBack&&this.parent.remove(this.meshBack),this.materialBack&&this.materialBack.dispose()},methods:{initGem:function(){var e=new J(this.cubeRTSize,{format:ee,generateMipmaps:!0,minFilter:te});this.cubeCamera=new ie(this.cubeCameraNear,this.cubeCameraFar,e),We(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.side=j,this.material.envMap=e.texture,this.material.envMapIntensity=10,this.material.metalness=0,this.material.roughness=0,this.material.opacity=.75,this.material.transparent=!0,this.material.premultipliedAlpha=!0,this.material.needsUpdate=!0,this.materialBack=this.material.clone(),this.materialBack.side=re,this.materialBack.envMapIntensity=5,this.materialBack.metalness=1,this.materialBack.roughness=0,this.materialBack.opacity=.5,this.meshBack=new Y(this.geometry,this.materialBack),We(this,"position",this.meshBack.position),We(this,"rotation",this.meshBack.rotation),We(this,"scale",this.meshBack.scale),this.parent.add(this.meshBack)},updateCubeRT:function(){this.mesh.visible=!1,this.meshBack.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0,this.meshBack.visible=!0}},__hmrId:"Gem"},ei={emits:["loaded"],extends:jt,props:{src:String,width:Number,height:Number,keepSize:Boolean},created:function(){var e=this;this.createGeometry(),this.createMaterial(),this.initMesh(),i((function(){return e.src}),this.refreshTexture),["width","height"].forEach((function(t){i((function(){return e[t]}),e.resize)})),this.keepSize&&this.three.onAfterResize(this.resize)},methods:{createGeometry:function(){this.geometry=new X(1,1,1,1)},createMaterial:function(){this.material=new L({side:ne,map:this.loadTexture()})},loadTexture:function(){return(new B).load(this.src,this.onLoaded)},refreshTexture:function(){this.texture&&this.texture.dispose(),this.material.map=this.loadTexture(),this.material.needsUpdate=!0},onLoaded:function(e){this.texture=e,this.resize(),this.$emit("loaded")},resize:function(){if(this.texture){var e,t,i=this.three.size,r=this.texture.image.width/this.texture.image.height;this.width&&this.height?(e=this.width*i.wWidth/i.width,t=this.height*i.wHeight/i.height):this.width?t=(e=this.width*i.wWidth/i.width)/r:this.height&&(e=(t=this.height*i.wHeight/i.height)*r),this.mesh.scale.x=e,this.mesh.scale.y=t}}},__hmrId:"Image"},ti={inject:["three","scene"],props:{materialId:String,count:Number,position:Object,castShadow:Boolean,receiveShadow:Boolean},setup:function(){return{parent:r("group",r("scene"))}},provide:function(){return{mesh:this}},beforeMount:function(){this.$slots.default||console.error("Missing Geometry")},mounted:function(){this.initMesh()},unmounted:function(){this.parent.remove(this.mesh)},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new se(this.geometry,this.material,this.count),We(this,"position",this.mesh.position),We(this,"rotation",this.mesh.rotation),We(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),this.parent.add(this.mesh)},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)}},render:function(){return this.$slots.default()},__hmrId:"InstancedMesh"},ii={extends:jt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new J(this.cubeRTSize,{format:ee,generateMipmaps:!0,minFilter:te});this.cubeCamera=new ie(this.cubeCameraNear,this.cubeCameraFar,e),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"MirrorMesh"},ri={extends:jt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},refractionRatio:{type:Number,default:.98},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new J(this.cubeRTSize,{mapping:q,format:ee,generateMipmaps:!0,minFilter:te});this.cubeCamera=new ie(this.cubeCameraNear,this.cubeCameraFar,e),We(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.refractionRatio=this.refractionRatio,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"RefractionMesh"},ni={emits:["ready","loaded"],inject:["three","scene"],props:{src:String,position:Object,scale:Object},setup:function(){return{parent:r("group",r("scene"))}},mounted:function(){this.texture=(new B).load(this.src,this.onLoaded),this.material=new ae({map:this.texture}),this.sprite=new oe(this.material),this.geometry=this.sprite.geometry,We(this,"position",this.sprite.position),We(this,"scale",this.sprite.scale),this.parent.add(this.sprite),this.$emit("ready")},unmounted:function(){this.texture.dispose(),this.material.dispose(),this.parent.remove(this.sprite)},methods:{onLoaded:function(){this.updateUV(),this.$emit("loaded")},updateUV:function(){this.iWidth=this.texture.image.width,this.iHeight=this.texture.image.height,this.iRatio=this.iWidth/this.iHeight;var e=.5,t=.5;this.iRatio>1?t=.5/this.iRatio:e=.5/this.iRatio;var i=this.geometry.attributes.position.array;i[0]=-e,i[1]=-t,i[5]=e,i[6]=-t,i[10]=e,i[11]=t,i[15]=-e,i[16]=t,this.geometry.attributes.position.needsUpdate=!0}},render:function(){return[]},__hmrId:"Sprite"},si={setup:function(){return{passes:[]}},inject:["three"],provide:function(){return{passes:this.passes}},mounted:function(){var e=this;this.three.onAfterInit((function(){e.composer=new pe(e.three.renderer),e.three.renderer.autoClear=!1,e.passes.forEach((function(t){e.composer.addPass(t)})),e.three.composer=e.composer,e.resize(),e.three.onAfterResize(e.resize)}))},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){this.composer.setSize(this.three.size.width,this.three.size.height)}},render:function(){return this.$slots.default()},__hmrId:"EffectComposer"},ai={inject:["three","passes"],beforeMount:function(){this.passes||console.error("Missing parent EffectComposer")},unmounted:function(){this.pass.dispose&&this.pass.dispose()},render:function(){return[]},__hmrId:"EffectPass"},oi={extends:ai,mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e=new ve(this.three.scene,this.three.camera);this.passes.push(e),this.pass=e},__hmrId:"RenderPass"},hi={extends:ai,props:{focus:{type:Number,default:1},aperture:{type:Number,default:.025},maxblur:{type:Number,default:.01}},watch:{focus:function(){this.pass.uniforms.focus.value=this.focus},aperture:function(){this.pass.uniforms.aperture.value=this.aperture},maxblur:function(){this.pass.uniforms.maxblur.value=this.maxblur}},mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e={focus:this.focus,aperture:this.aperture,maxblur:this.maxblur,width:this.three.size.width,height:this.three.size.height},t=new ge(this.three.scene,this.three.camera,e);this.passes.push(t),this.pass=t},__hmrId:"BokehPass"},ui={extends:ai,props:{noiseIntensity:{type:Number,default:.5},scanlinesIntensity:{type:Number,default:.05},scanlinesCount:{type:Number,default:4096},grayscale:{type:Number,default:0}},watch:{noiseIntensity:function(){this.pass.uniforms.nIntensity.value=this.noiseIntensity},scanlinesIntensity:function(){this.pass.uniforms.sIntensity.value=this.scanlinesIntensity},scanlinesCount:function(){this.pass.uniforms.sCount.value=this.scanlinesCount},grayscale:function(){this.pass.uniforms.grayscale.value=this.grayscale}},mounted:function(){var e=new ye(this.noiseIntensity,this.scanlinesIntensity,this.scanlinesCount,this.grayscale);this.passes.push(e),this.pass=e},__hmrId:"FilmPass"},mi={extends:ai,mounted:function(){var e=new xe(be);this.passes.push(e),this.pass=e,this.three.onAfterResize(this.resize)},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){var e=this.pass.material.uniforms.resolution;e.value.x=1/this.three.size.width,e.value.y=1/this.three.size.height}},__hmrId:"FXAAPass"},di={extends:ai,props:{shape:{type:Number,default:1},radius:{type:Number,default:4},rotateR:{type:Number,default:Math.PI/12*1},rotateG:{type:Number,default:Math.PI/12*2},rotateB:{type:Number,default:Math.PI/12*3},scatter:{type:Number,default:0}},mounted:function(){var e=this,t=new Se(this.three.size.width,this.three.size.height,{});["shape","radius","rotateR","rotateG","rotateB","scatter"].forEach((function(r){t.uniforms[r].value=e[r],i((function(){return e[r]}),(function(){t.uniforms[r].value=e[r]}))})),this.passes.push(t),this.pass=t},__hmrId:"HalftonePass"},ci={extends:ai,mounted:function(){var e=new we(this.three.size.width,this.three.size.height);this.passes.push(e),this.pass=e},__hmrId:"SMAAPass"},li="\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fi={uniforms:{tDiffuse:{value:null},blurRadius:{value:0},gradientRadius:{value:0},start:{value:new n},end:{value:new n},delta:{value:new n},texSize:{value:new n}},vertexShader:li,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "};function pi(e,t,r,n){void 0===n&&(n="value"),e[t]&&(r[n]=e[t],i((function(){return e[t]}),(function(e){r[n]=e})))}var vi={extends:ai,props:{blurRadius:{type:Number,default:10},gradientRadius:{type:Number,default:100},start:{type:Object,default:{x:0,y:100}},end:{type:Object,default:{x:10,y:100}}},mounted:function(){var e=this;this.pass=new xe(fi),this.passes.push(this.pass),this.pass1=new xe(fi),this.passes.push(this.pass1);var t=this.uniforms=this.pass.uniforms,r=this.uniforms1=this.pass1.uniforms;r.blurRadius=t.blurRadius,r.gradientRadius=t.gradientRadius,r.start=t.start,r.end=t.end,r.texSize=t.texSize,pi(this,"blurRadius",t.blurRadius),pi(this,"gradientRadius",t.gradientRadius),this.updateFocusLine(),["start","end"].forEach((function(t){i((function(){return e[t]}),e.updateFocusLine)})),this.pass.setSize=function(e,i){t.texSize.value.set(e,i)}},methods:{updateFocusLine:function(){this.uniforms.start.value.copy(this.start),this.uniforms.end.value.copy(this.end);var e=(new n).copy(this.end).sub(this.start).normalize();this.uniforms.delta.value.copy(e),this.uniforms1.delta.value.set(-e.y,e.x)}},__hmrId:"TiltShiftPass"},gi={extends:ai,props:{strength:{type:Number,default:1.5},radius:{type:Number,default:0},threshold:{type:Number,default:0}},watch:{strength:function(){this.pass.strength=this.strength},radius:function(){this.pass.radius=this.radius},threshold:function(){this.pass.threshold=this.threshold}},mounted:function(){var e=new n(this.three.size.width,this.three.size.height),t=new Ce(e,this.strength,this.radius,this.threshold);this.passes.push(t),this.pass=t},__hmrId:"UnrealBloomPass"},yi={uniforms:{tDiffuse:{value:null},center:{value:new n(.5,.5)},strength:{value:0}},vertexShader:li,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "},xi={extends:ai,props:{center:{type:Object,default:{x:.5,y:.5}},strength:{type:Number,default:.5}},mounted:function(){this.pass=new xe(yi),this.passes.push(this.pass);var e=this.uniforms=this.pass.uniforms;We(this,"center",e.center.value),pi(this,"strength",e.strength)},__hmrId:"ZoomBlurPass"},bi="\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n",Si={extends:ei,props:{widthSegments:{type:Number,default:20},heightSegments:{type:Number,default:20},timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:1},zCoef:{type:Number,default:5},dispCoef:{type:Number,default:.05}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.zCoef};i((function(){return e.zCoef}),(function(e){r.value=e}));var n={value:e.dispCoef};return i((function(){return e.dispCoef}),(function(e){n.value=e})),{uTime:{value:0},uNoiseCoef:t,uZCoef:r,uDispCoef:n}},mounted:function(){this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{createGeometry:function(){this.geometry=new X(1,1,this.widthSegments,this.heightSegments)},createMaterial:function(){var e=this;this.material=new L({side:ne,map:this.loadTexture()}),this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uZCoef=e.uZCoef,t.uniforms.uDispCoef=e.uDispCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n "+bi+"\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include "," \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n "),t.fragmentShader="\n uniform float uDispCoef;\n varying float vNoise;\n "+t.fragmentShader,t.fragmentShader=t.fragmentShader.replace("#include ","\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n "),e.materialShader=t}},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisyImage"},wi={extends:$t,props:{timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:5},deltaCoef:{type:Number,default:1/512},displacementScale:{type:Number,default:5}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:new n(e.deltaCoef,e.deltaCoef)};return i((function(){return e.deltaCoef}),(function(e){r.value.set(e,e)})),{uTime:{value:0},uNoiseCoef:t,uDelta:r}},mounted:function(){var e=this;this.init(),i((function(){return e.displacementScale}),(function(t){e.material.displacementScale=t})),this.startTime=Date.now(),this.three.onBeforeRender(this.update)},unmounted:function(){this.three.offBeforeRender(this.update),this.fsQuad.dispose(),this.dispRT.dispose(),this.dispMat.dispose(),this.normRT.dispose(),this.normMat.dispose()},methods:{init:function(){this.fsQuad=new Ne.FullScreenQuad,this.dispRT=new he(512,512,{depthBuffer:!1,stencilBuffer:!1}),this.dispMat=new Z({uniforms:{uTime:this.uTime,uNoiseCoef:this.uNoiseCoef},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n \n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v)\n{\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n // First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n // Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n // Permutations\n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n // Gradients: 7x7 points over a square, mapped onto an octahedron.\n // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n // Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n}\n\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n "}),this.normRT=new he(512,512,{depthBuffer:!1,stencilBuffer:!1}),this.normMat=new Z({uniforms:{dispMap:{value:this.dispRT.texture},delta:this.uDelta},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n "}),this.material.displacementMap=this.dispRT.texture,this.material.displacementScale=this.displacementScale,this.material.normalMap=this.normRT.texture,this.material.normalMapType=ue},update:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef,this.renderDisp()},renderDisp:function(){this.renderMat(this.dispMat,this.dispRT),this.renderMat(this.normMat,this.normRT)},renderMat:function(e,t){var i=this.three.renderer;this.fsQuad.material=e;var r=i.getRenderTarget();i.setRenderTarget(t),this.fsQuad.render(i),i.setRenderTarget(r)}},__hmrId:"NoisyPlane"},Ci={extends:Ht,props:{radius:{type:Number,default:20},widthSegments:{type:Number,default:128},heightSegments:{type:Number,default:128},timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:.05},dispCoef:{type:Number,default:5}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.dispCoef};return i((function(){return e.dispCoef}),(function(e){r.value=e})),{uTime:{value:0},uNoiseCoef:t,uDispCoef:r}},mounted:function(){this.updateMaterial(),this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{updateMaterial:function(){var e=this;this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uDispCoef=e.uDispCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n \n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nfloat mod289(float x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nfloat permute(float x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\nfloat taylorInvSqrt(float r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nvec4 grad4(float j, vec4 ip)\n{\n const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n vec4 p,s;\n\n p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n s = vec4(lessThan(p, vec4(0.0)));\n p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\n return p;\n}\n\n// (sqrt(5) - 1)/4 = F4, used once below\n#define F4 0.309016994374947451\n\nfloat snoise(vec4 v)\n{\n const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4\n 0.276393202250021, // 2 * G4\n 0.414589803375032, // 3 * G4\n -0.447213595499958); // -1 + 4 * G4\n\n // First corner\n vec4 i = floor(v + dot(v, vec4(F4)) );\n vec4 x0 = v - i + dot(i, C.xxxx);\n\n // Other corners\n\n // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n vec4 i0;\n vec3 isX = step( x0.yzw, x0.xxx );\n vec3 isYZ = step( x0.zww, x0.yyz );\n // i0.x = dot( isX, vec3( 1.0 ) );\n i0.x = isX.x + isX.y + isX.z;\n i0.yzw = 1.0 - isX;\n // i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n i0.y += isYZ.x + isYZ.y;\n i0.zw += 1.0 - isYZ.xy;\n i0.z += isYZ.z;\n i0.w += 1.0 - isYZ.z;\n\n // i0 now contains the unique values 0,1,2,3 in each channel\n vec4 i3 = clamp( i0, 0.0, 1.0 );\n vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n vec4 x1 = x0 - i1 + C.xxxx;\n vec4 x2 = x0 - i2 + C.yyyy;\n vec4 x3 = x0 - i3 + C.zzzz;\n vec4 x4 = x0 + C.wwww;\n\n // Permutations\n i = mod289(i);\n float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n vec4 j1 = permute( permute( permute( permute (\n i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\n // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope\n // 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n vec4 p0 = grad4(j0, ip);\n vec4 p1 = grad4(j1.x, ip);\n vec4 p2 = grad4(j1.y, ip);\n vec4 p3 = grad4(j1.z, ip);\n vec4 p4 = grad4(j1.w, ip);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n p4 *= taylorInvSqrt(dot(p4,p4));\n\n // Mix contributions from the five corners\n vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n m0 = m0 * m0;\n m1 = m1 * m1;\n return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\n}\n\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include ","\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n "),e.materialShader=t},this.material.needsupdate=!0},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisySphere"},Ni={extends:Yt,props:{timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:.015},zCoef:{type:Number,default:10}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.zCoef};return i((function(){return e.zCoef}),(function(e){r.value=e})),{uTime:{value:0},uNoiseCoef:t,uZCoef:r}},mounted:function(){this.updateMaterial(),this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{updateMaterial:function(){var e=this;this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uZCoef=e.uZCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n "+bi+"\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include "," \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n "),e.materialShader=t},this.material.needsupdate=!0},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisyText"},zi=function(e){var t=this;Object.entries(e).forEach((function(e){var i=e[0],r=e[1];t[i]=r})),this.o3d=new me,this.uProgress={value:0},this.uvScale=new n,this.initMaterial(),this.initPlane()};function _i(){var e={loader:new B,count:0,textures:[],loadProgress:0,loadTextures:function(i,r){e.count=i.length,e.textures.splice(0),e.loadProgress=0,Promise.all(i.map(t)).then(r)},dispose:function(){e.textures.forEach((function(e){return e.dispose()}))}};return e;function t(t,i){return new Promise((function(r){e.loader.load(t.src,(function(t){e.loadProgress+=1/e.count,e.textures[i]=t,r(t)}))}))}}zi.prototype.initMaterial=function(){var e=this;this.material=new L({side:ne,transparent:!0,map:this.texture,onBeforeCompile:function(t){t.uniforms.progress=e.uProgress,t.uniforms.uvScale={value:e.uvScale},t.vertexShader="\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include ","\n #include \n vUv = vUv * uvScale + uvOffset;\n "),t.vertexShader=t.vertexShader.replace("#include ","\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n ")}})},zi.prototype.initPlane=function(){var e=this.screen,t=e.width,i=e.wWidth,r=e.wHeight;this.wSize=this.size*i/t,this.nx=Math.ceil(i/this.wSize)+1,this.ny=Math.ceil(r/this.wSize)+1,this.icount=this.nx*this.ny,this.initGeometry(),this.initUV(),this.initAnimAttributes(),this.imesh&&this.o3d.remove(this.imesh),this.imesh=new se(this.bGeometry,this.material,this.icount),this.o3d.add(this.imesh);for(var n=new me,s=0,a=-(i-(i-this.nx*this.wSize))/2+this.dx,o=0;ot?this.uvScale.set(1/this.nx,t/e/this.ny):this.uvScale.set(e/t/this.nx,1/this.ny);for(var i=this.uvScale.x*this.nx,r=this.uvScale.y*this.ny,s=new n,a=new Float32Array(2*this.icount),o=0;o0?this.setTargetProgress(this.targetProgress+.05):this.setTargetProgress(this.targetProgress-.05)},onClick:function(e){e.clientY0&&r 0.001) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center * uvScale + uvOffset - tUv;\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 \n for (float t = 0.0; t <= 20.0; t++) {\n float percent = (t + offset) / 20.0;\n float weight = 2.0 * (percent - percent * percent);\n vec4 texel = texture2D(map, tUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n gl_FragColor.a = 1.0 - abs(strength);\n } else {\n gl_FragColor = texture2D(map, tUv);\n }\n }\n "}),r=new Y(t,i),{geometry:t,material:i,mesh:r,uCenter:a,uStrength:o,setMap:function(e){s.value=e,m()},updateUV:m};function m(){var t=e.size.ratio,i=s.value.image.width/s.value.image.height;h.value.set(0,0),u.value.set(1,1),i>t?(u.value.x=t/i,h.value.x=(1-u.value.x)/2):(u.value.y=i/t,h.value.y=(1-u.value.y)/2)}}Mi.render=function(e,t,i,r,n,s){var a=Pe("Camera"),o=Pe("Scene"),h=Pe("Renderer");return Te(),Ge(h,{ref:"renderer",antialias:""},{default:Ie((function(){return[ke(a,{ref:"camera",position:{z:150}},null,512),ke(o,{ref:"scene"},null,512)]})),_:1},512)},Mi.__file="src/components/sliders/Slider1.vue";var Ti={props:{images:Array,events:{type:Object,default:function(){return{wheel:!0,click:!0,keyup:!0}}}},setup:function(){var e=new n;return{loader:_i(),center:e,progress:0,targetProgress:0}},mounted:function(){this.three=this.$refs.renderer.three,this.images.length<2?console.error("This slider needs at least 2 images."):this.loader.loadTextures(this.images,this.init)},unmounted:function(){this.loader.dispose();var e=this.three.renderer.domElement;e.removeEventListener("click",this.onClick),e.removeEventListener("wheel",this.onWheel),document.removeEventListener("keyup",this.onKeyup)},methods:{init:function(){this.initScene(),ze.fromTo(this.image1.uStrength,{value:-2},{value:0,duration:2.5,ease:_e.easeOut});var e=this.three.renderer.domElement;this.events.click&&e.addEventListener("click",this.onClick),this.events.wheel&&e.addEventListener("wheel",this.onWheel),this.events.keyup&&document.addEventListener("keyup",this.onKeyup),this.three.onBeforeRender(this.animate),this.three.onAfterResize(this.onResize)},initScene:function(){var e=this.$refs.scene.scene;this.image1=new Pi(this.three),this.image1.setMap(this.loader.textures[0]),this.image2=new Pi(this.three),this.image2.setMap(this.loader.textures[1]),this.setImagesProgress(0),e.add(this.image1.mesh),e.add(this.image2.mesh)},animate:function(){var e=this.three.mouse;this.center.copy(e).divideScalar(2).addScalar(.5),Oe(this.image1.uCenter.value,this.center,.1),Oe(this.image2.uCenter.value,this.center,.1),this.updateProgress()},onResize:function(){this.image1.updateUV(),this.image2.updateUV()},onWheel:function(e){e.deltaY>0?this.setTargetProgress(this.targetProgress+.05):this.setTargetProgress(this.targetProgress-.05)},onClick:function(e){e.clientY0&&r {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.width && conf.height) {\n setSize(conf.width, conf.height);\n } else if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n mouse.x = (e.clientX / size.width) * 2 - 1;\n mouse.y = -(e.clientY / size.height) * 2 + 1;\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n mouse.x = (e.clientX / size.width) * 2 - 1;\n mouse.y = -(e.clientY / size.height) * 2 + 1;\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: true },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport { inject } from 'vue';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: ['three', 'scene'],\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n setup(props) {\r\n const parent = inject('group', inject('scene'));\r\n const group = new Group();\r\n useBindProp(props, 'position', group.position);\r\n useBindProp(props, 'rotation', group.rotation);\r\n useBindProp(props, 'scale', group.scale);\r\n return { parent, group };\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { inject, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n diffuse: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n Object.entries(this.$props).forEach(([key, value]) => {\n if (key === 'diffuse' || key === 'thicknessColor') {\n value = new Color(value);\n }\n if (key !== 'id' && key !== 'transparent' && key !== 'vertexColors') {\n uniforms[key].value = value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n // console.log('Mesh mounted');\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n // console.log('Mesh unmounted');\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three', 'scene'],\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport { inject } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: ['three', 'scene'],\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine);\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n`;\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Image from '../../meshes/Image.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Image,\n props: {\n widthSegments: { type: Number, default: 20 },\n heightSegments: { type: Number, default: 20 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 1 },\n zCoef: { type: Number, default: 5 },\n dispCoef: { type: Number, default: 0.05 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef, uDispCoef,\n };\n },\n mounted() {\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, this.widthSegments, this.heightSegments);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n `\n );\n\n shader.fragmentShader = `\n uniform float uDispCoef;\n varying float vNoise;\n ` + shader.fragmentShader;\n\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include ',\n `\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n `\n );\n this.materialShader = shader;\n };\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyImage',\n};\n","import { ObjectSpaceNormalMap, ShaderMaterial, Vector2, WebGLRenderTarget } from 'three';\nimport { Pass } from 'three/examples/jsm/postprocessing/Pass.js';\nimport { watch } from 'vue';\nimport Plane from '../../meshes/Plane.js';\nimport snoise3 from '../../glsl/snoise3.glsl.js';\n\nexport default {\n extends: Plane,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 5 },\n deltaCoef: { type: Number, default: 1 / 512 },\n displacementScale: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDelta = { value: new Vector2(props.deltaCoef, props.deltaCoef) };\n watch(() => props.deltaCoef, (value) => { uDelta.value.set(value, value); });\n\n return {\n uTime, uNoiseCoef, uDelta,\n };\n },\n mounted() {\n this.init();\n\n watch(() => this.displacementScale, (value) => { this.material.displacementScale = value; });\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.update);\n },\n unmounted() {\n this.three.offBeforeRender(this.update);\n this.fsQuad.dispose();\n this.dispRT.dispose();\n this.dispMat.dispose();\n this.normRT.dispose();\n this.normMat.dispose();\n },\n methods: {\n init() {\n this.fsQuad = new Pass.FullScreenQuad();\n\n // displacement map\n this.dispRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.dispMat = new ShaderMaterial({\n uniforms: {\n uTime: this.uTime,\n uNoiseCoef: this.uNoiseCoef,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n ${snoise3}\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n `,\n });\n\n // normal map\n this.normRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.normMat = new ShaderMaterial({\n uniforms: {\n dispMap: { value: this.dispRT.texture },\n delta: this.uDelta,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n `,\n });\n\n this.material.displacementMap = this.dispRT.texture;\n this.material.displacementScale = this.displacementScale;\n this.material.normalMap = this.normRT.texture;\n this.material.normalMapType = ObjectSpaceNormalMap;\n // this.material.needsUpdate = true;\n },\n update() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n this.renderDisp();\n },\n renderDisp() {\n this.renderMat(this.dispMat, this.dispRT);\n this.renderMat(this.normMat, this.normRT);\n },\n renderMat(mat, target) {\n const renderer = this.three.renderer;\n this.fsQuad.material = mat;\n const oldTarget = renderer.getRenderTarget();\n renderer.setRenderTarget(target);\n this.fsQuad.render(renderer);\n renderer.setRenderTarget(oldTarget);\n },\n },\n __hmrId: 'NoisyPlane',\n};\n","import { watch } from 'vue';\nimport Sphere from '../../meshes/Sphere.js';\nimport snoise4 from '../../glsl/snoise4.glsl.js';\n\nexport default {\n extends: Sphere,\n props: {\n radius: { type: Number, default: 20 },\n widthSegments: { type: Number, default: 128 },\n heightSegments: { type: Number, default: 128 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.05 },\n dispCoef: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uDispCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n ${snoise4}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n `\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisySphere',\n};\n","import { watch } from 'vue';\nimport Text from '../../meshes/Text.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Text,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.015 },\n zCoef: { type: Number, default: 10 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyText',\n};\n","import {\n DoubleSide,\n Face3,\n InstancedBufferAttribute,\n InstancedMesh,\n MathUtils,\n MeshBasicMaterial,\n Object3D,\n Vector2,\n Vector3,\n} from 'three';\n\nimport { Geometry } from 'three/examples/jsm/deprecated/Geometry.js';\n\nexport default class AnimatedPlane {\n constructor(params) {\n Object.entries(params).forEach(([key, value]) => {\n this[key] = value;\n });\n\n this.o3d = new Object3D();\n this.uProgress = { value: 0 };\n this.uvScale = new Vector2();\n\n this.initMaterial();\n this.initPlane();\n }\n\n initMaterial() {\n this.material = new MeshBasicMaterial({\n side: DoubleSide,\n transparent: true,\n map: this.texture,\n onBeforeCompile: shader => {\n shader.uniforms.progress = this.uProgress;\n shader.uniforms.uvScale = { value: this.uvScale };\n shader.vertexShader = `\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n #include \n vUv = vUv * uvScale + uvOffset;\n `);\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n `);\n },\n });\n }\n\n initPlane() {\n const { width, wWidth, wHeight } = this.screen;\n this.wSize = this.size * wWidth / width;\n this.nx = Math.ceil(wWidth / this.wSize) + 1;\n this.ny = Math.ceil(wHeight / this.wSize) + 1;\n this.icount = this.nx * this.ny;\n\n this.initGeometry();\n this.initUV();\n this.initAnimAttributes();\n\n if (this.imesh) {\n this.o3d.remove(this.imesh);\n }\n this.imesh = new InstancedMesh(this.bGeometry, this.material, this.icount);\n this.o3d.add(this.imesh);\n\n const dummy = new Object3D();\n let index = 0;\n let x = -(wWidth - (wWidth - this.nx * this.wSize)) / 2 + this.dx;\n for (let i = 0; i < this.nx; i++) {\n let y = -(wHeight - (wHeight - this.ny * this.wSize)) / 2 + this.dy;\n for (let j = 0; j < this.ny; j++) {\n dummy.position.set(x, y, 0);\n dummy.updateMatrix();\n this.imesh.setMatrixAt(index++, dummy.matrix);\n y += this.wSize;\n }\n x += this.wSize;\n }\n }\n\n initGeometry() {\n // square\n const geometry = new Geometry();\n geometry.vertices.push(new Vector3(0, 0, 0));\n geometry.vertices.push(new Vector3(this.wSize, 0, 0));\n geometry.vertices.push(new Vector3(0, this.wSize, 0));\n geometry.vertices.push(new Vector3(this.wSize, this.wSize, 0));\n geometry.faces.push(new Face3(0, 2, 1));\n geometry.faces.push(new Face3(2, 3, 1));\n\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 0),\n new Vector2(0, 1),\n new Vector2(1, 0),\n ]);\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 1),\n new Vector2(1, 1),\n new Vector2(1, 0),\n ]);\n\n // geometry.computeFaceNormals();\n // geometry.computeVertexNormals();\n\n // center\n this.dx = this.wSize / 2;\n this.dy = this.wSize / 2;\n geometry.translate(-this.dx, -this.dy, 0);\n\n this.bGeometry = geometry.toBufferGeometry();\n }\n\n initAnimAttributes() {\n const { randFloat: rnd, randFloatSpread: rndFS } = MathUtils;\n const v3 = new Vector3();\n\n const offsets = new Float32Array(this.icount * 3);\n for (let i = 0; i < offsets.length; i += 3) {\n if (this.anim === 1) v3.set(rndFS(10), rnd(50, 100), rnd(20, 50)).toArray(offsets, i);\n else v3.set(rndFS(20), rndFS(20), rnd(20, 200)).toArray(offsets, i);\n }\n this.bGeometry.setAttribute('offset', new InstancedBufferAttribute(offsets, 3));\n\n const rotations = new Float32Array(this.icount * 3);\n const angle = Math.PI * 4;\n for (let i = 0; i < rotations.length; i += 3) {\n rotations[i] = rndFS(angle);\n rotations[i + 1] = rndFS(angle);\n rotations[i + 2] = rndFS(angle);\n }\n this.bGeometry.setAttribute('rotation', new InstancedBufferAttribute(rotations, 3));\n }\n\n initUV() {\n const ratio = this.nx / this.ny;\n const tRatio = this.texture.image.width / this.texture.image.height;\n if (ratio > tRatio) this.uvScale.set(1 / this.nx, (tRatio / ratio) / this.ny);\n else this.uvScale.set((ratio / tRatio) / this.nx, 1 / this.ny);\n const nW = this.uvScale.x * this.nx;\n const nH = this.uvScale.y * this.ny;\n\n const v2 = new Vector2();\n const uvOffsets = new Float32Array(this.icount * 2);\n for (let i = 0; i < this.nx; i++) {\n for (let j = 0; j < this.ny; j++) {\n v2.set(\n this.uvScale.x * i + (1 - nW) / 2,\n this.uvScale.y * j + (1 - nH) / 2\n ).toArray(uvOffsets, (i * this.ny + j) * 2);\n }\n }\n this.bGeometry.setAttribute('uvOffset', new InstancedBufferAttribute(uvOffsets, 2));\n }\n\n setTexture(texture) {\n this.texture = texture;\n this.material.map = texture;\n this.initUV();\n }\n\n resize() {\n this.initPlane();\n }\n}\n","\n\n\n","import { TextureLoader } from 'three';\n\nexport default function useTextures() {\n const obj = {\n loader: new TextureLoader(),\n count: 0,\n textures: [],\n loadProgress: 0,\n loadTextures,\n dispose,\n };\n return obj;\n\n function loadTextures(images, cb) {\n obj.count = images.length;\n obj.textures.splice(0);\n obj.loadProgress = 0;\n Promise.all(images.map(loadTexture)).then(cb);\n };\n\n function loadTexture(img, index) {\n return new Promise(resolve => {\n obj.loader.load(\n img.src,\n texture => {\n obj.loadProgress += 1 / obj.count;\n obj.textures[index] = texture;\n resolve(texture);\n }\n );\n });\n };\n\n function dispose() {\n obj.textures.forEach(t => t.dispose());\n }\n};\n","\n\n\n","\n\n\n","\n\n\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["useThree","const","conf","canvas","antialias","alpha","autoClear","orbit_ctrl","mouse_move","mouse_raycast","mouse_over","click","resize","width","height","size","wWidth","wHeight","ratio","afterInitCallbacks","afterResizeCallbacks","beforeRenderCallbacks","mouse","Vector2","mouseV3","Vector3","mousePlane","Plane","raycaster","Raycaster","intersectObjects","obj","renderer","camera","cameraCtrl","materials","scene","params","Object","entries","forEach","key","value","console","error","WebGLRenderer","orbitCtrl","OrbitControls","domElement","setSize","onResize","window","addEventListener","mouse_move_element","document","body","onMousemove","onMouseleave","onClick","c","removeEventListener","dispose","this","update","render","composer","callback","push","filter","o","indexOf","i","splice","e","x","clientX","y","clientY","setFromCamera","objects","length","object","onMousechange","getWorldDirection","normal","normalize","ray","intersectPlane","onObjects","offObjects","hover","onHover","let","innerWidth","innerHeight","elt","parentNode","clientWidth","clientHeight","aspect","updateProjectionMatrix","type","right","left","top","bottom","wsize","vFOV","fov","Math","PI","h","tan","abs","position","z","getCameraSize","props","Boolean","default","mouseMove","String","mouseRaycast","mouseOver","shadow","setup","three","raf","onMountedCallbacks","provide","rendererComponent","mounted","$el","init","shadowMap","enabled","animateC","animate","beforeUnmount","methods","onMounted","onBeforeRender","onAfterResize","requestAnimationFrame","renderC","$slots","setFromProp","prop","propsValues","exclude","values","includes","lerp","value1","value2","amount","lerpv2","v1","v2","lerpv3","limit","val","min","max","getMatcapUrl","hash","format","MATCAP_ROOT","useBindProp","comp","ref","toRef","watch","deep","inject","Number","near","far","zoom","created","OrthographicCamera","p","__hmrId","PerspectiveCamera","rotation","scale","parent","group","Group","add","unmounted","remove","id","background","Scene","Color","emits","rotateX","rotateY","rotateZ","mesh","watchProps","$props","beforeMount","createGeometry","rotateGeometry","setGeometry","geometry","addWatchers","refreshGeometry","oldGeo","extends","Geometry","depth","widthSegments","heightSegments","depthSegments","w","d","BoxBufferGeometry","radius","segments","thetaStart","thetaLength","CircleBufferGeometry","radialSegments","openEnded","ConeBufferGeometry","radiusTop","radiusBottom","CylinderBufferGeometry","detail","DodecahedronBufferGeometry","IcosahedronBufferGeometry","points","Array","phiStart","phiLength","LatheBufferGeometry","OctahedronBufferGeometry","vertices","indices","PolyhedronBufferGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","tube","tubularSegments","arc","TorusBufferGeometry","q","TorusKnotBufferGeometry","path","Curve","radiusSegments","closed","TubeBufferGeometry","from","color","intensity","castShadow","shadowMapSize","light","target","mapSize","Light","AmbientLight","DirectionalLight","distance","decay","PointLight","angle","penumbra","SpotLight","depthTest","depthWrite","flatShading","fog","opacity","side","FrontSide","transparent","vertexColors","material","createMaterial","setMaterial","_addWatchers","setProp","needsUpdate","setTexture","texture","set","Material","MeshBasicMaterial","MeshLambertMaterial","src","name","opts","matcap","TextureLoader","load","MeshMatcapMaterial","emissive","emissiveIntensity","reflectivity","shininess","specular","MeshPhongMaterial","aoMapIntensity","bumpScale","displacementBias","displacementScale","envMapIntensity","lightMapIntensity","metalness","normalScale","roughness","refractionRatio","wireframe","MeshStandardMaterial","keys","StandardMaterial","MeshPhysicalMaterial","string","find","replace","meshphongFragHead","ShaderChunk","meshphong_frag","slice","meshphongFragBody","SubsurfaceScatteringShader","uniforms","UniformsUtils","merge","ShaderLib","phong","thicknessColor","thicknessDistortion","thicknessAmbient","thicknessAttenuation","thicknessPower","thicknessScale","vertexShader","fragmentShader","lights_fragment_begin","split","join","diffuse","clone","TShaderMaterial","lights","MeshToonMaterial","onLoad","Function","onProgress","onError","refreshTexture","createTexture","onLoaded","$emit","urls","refraction","CubeTextureLoader","setPath","mapping","CubeRefractionMapping","materialId","receiveShadow","initMesh","removeIntersectObject","Mesh","over","component","addIntersectObject","event","bindProps","PlaneBufferGeometry","text","fontSrc","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align","TextProps","font","FontLoader","TextBufferGeometry","center","cubeRTSize","cubeCameraNear","cubeCameraFar","autoUpdate","initGem","updateCubeRT","offBeforeRender","meshBack","materialBack","cubeRT","WebGLCubeRenderTarget","RGBFormat","generateMipmaps","minFilter","LinearMipmapLinearFilter","cubeCamera","CubeCamera","envMap","premultipliedAlpha","BackSide","TMesh","visible","keepSize","DoubleSide","map","loadTexture","screen","iRatio","image","count","InstancedMesh","initMirrorMesh","SpriteMaterial","sprite","Sprite","updateUV","iWidth","iHeight","positions","attributes","array","passes","onAfterInit","EffectComposer","pass","addPass","offAfterResize","EffectPass","RenderPass","focus","aperture","maxblur","BokehPass","noiseIntensity","scanlinesIntensity","scanlinesCount","grayscale","nIntensity","sIntensity","sCount","FilmPass","ShaderPass","FXAAShader","resolution","shape","rotateR","rotateG","rotateB","scatter","HalftonePass","SMAAPass","tDiffuse","blurRadius","gradientRadius","start","end","delta","texSize","DefaultShader","useBindPropValue","srcProp","dst","dstProp","TiltShift","pass1","uniforms1","updateFocusLine","copy","dv","sub","strength","threshold","UnrealBloomPass","ZoomBlur","Image","timeCoef","noiseCoef","zCoef","dispCoef","uNoiseCoef","uZCoef","uDispCoef","startTime","Date","now","updateTime","onBeforeCompile","shader","uTime","snoise2","materialShader","deltaCoef","uDelta","fsQuad","dispRT","dispMat","normRT","normMat","Pass","FullScreenQuad","WebGLRenderTarget","depthBuffer","stencilBuffer","ShaderMaterial","dispMap","displacementMap","normalMap","normalMapType","ObjectSpaceNormalMap","renderDisp","renderMat","mat","oldTarget","getRenderTarget","setRenderTarget","Sphere","updateMaterial","needsupdate","Text","AnimatedPlane","o3d","Object3D","uProgress","uvScale","initMaterial","initPlane","progress","wSize","nx","ceil","ny","icount","initGeometry","initUV","initAnimAttributes","imesh","bGeometry","dummy","index","dx","dy","j","updateMatrix","setMatrixAt","matrix","faces","Face3","faceVertexUvs","translate","toBufferGeometry","v3","offsets","Float32Array","anim","rndFS","rnd","toArray","setAttribute","InstancedBufferAttribute","rotations","tRatio","nW","nH","uvOffsets","images","events","wheel","keyup","loader","textures","loadProgress","cb","Promise","all","then","t","img","resolve","useTextures","targetProgress","$refs","loadTextures","onKeyup","onWheel","initScene","gsap","fromTo","plane1","duration","ease","Power4","easeOut","updateProgress","plane2","setPlanesProgress","planes","deltaY","setTargetProgress","navPrevious","navNext","keyCode","isInteger","floor","progress1","pdiff","p0","p1","_createBlock","_createVNode","cameraPosition","GLTFLoader","gltf","orbit-ctrl","_renderSlot","TroisJSVuePlugin","install","app","TROIS"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"trois.module.cdn.min.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/use/useBindProp.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/PointLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ShaderMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/use/useBindPropValue.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/glsl/snoise2.glsl.js","../src/components/noisy/NoisyImage.js","../src/components/noisy/NoisyPlane.js","../src/components/noisy/NoisySphere.js","../src/components/noisy/NoisyText.js","../src/components/sliders/AnimatedPlane.js","../src/use/useTextures.js","../src/components/sliders/Slider1.vue","../src/components/sliders/ZoomBlurImage.js","../src/components/sliders/Slider1.vue?vue&type=template&id=23f29a93&lang.js","../src/components/sliders/Slider2.vue","../src/components/sliders/Slider2.vue?vue&type=template&id=2400b214&lang.js","../src/components/viewers/GLTFViewer.vue","../src/components/viewers/GLTFViewer.vue?vue&type=template&id=683b03c7&lang.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.width && conf.height) {\n setSize(conf.width, conf.height);\n } else if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: true },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport { inject } from 'vue';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: ['three', 'scene'],\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n setup(props) {\r\n const parent = inject('group', inject('scene'));\r\n const group = new Group();\r\n useBindProp(props, 'position', group.position);\r\n useBindProp(props, 'rotation', group.rotation);\r\n useBindProp(props, 'scale', group.scale);\r\n return { parent, group };\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { inject, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n diffuse: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n Object.entries(this.$props).forEach(([key, value]) => {\n if (key === 'diffuse' || key === 'thicknessColor') {\n value = new Color(value);\n }\n if (key !== 'id' && key !== 'transparent' && key !== 'vertexColors') {\n uniforms[key].value = value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n // console.log('Mesh mounted');\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n // console.log('Mesh unmounted');\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three', 'scene'],\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport { inject } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: ['three', 'scene'],\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine);\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n`;\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Image from '../../meshes/Image.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Image,\n props: {\n widthSegments: { type: Number, default: 20 },\n heightSegments: { type: Number, default: 20 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 1 },\n zCoef: { type: Number, default: 5 },\n dispCoef: { type: Number, default: 0.05 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef, uDispCoef,\n };\n },\n mounted() {\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, this.widthSegments, this.heightSegments);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n `\n );\n\n shader.fragmentShader = `\n uniform float uDispCoef;\n varying float vNoise;\n ` + shader.fragmentShader;\n\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include ',\n `\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n `\n );\n this.materialShader = shader;\n };\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyImage',\n};\n","import { ObjectSpaceNormalMap, ShaderMaterial, Vector2, WebGLRenderTarget } from 'three';\nimport { Pass } from 'three/examples/jsm/postprocessing/Pass.js';\nimport { watch } from 'vue';\nimport Plane from '../../meshes/Plane.js';\nimport snoise3 from '../../glsl/snoise3.glsl.js';\n\nexport default {\n extends: Plane,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 5 },\n deltaCoef: { type: Number, default: 1 / 512 },\n displacementScale: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDelta = { value: new Vector2(props.deltaCoef, props.deltaCoef) };\n watch(() => props.deltaCoef, (value) => { uDelta.value.set(value, value); });\n\n return {\n uTime, uNoiseCoef, uDelta,\n };\n },\n mounted() {\n this.init();\n\n watch(() => this.displacementScale, (value) => { this.material.displacementScale = value; });\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.update);\n },\n unmounted() {\n this.three.offBeforeRender(this.update);\n this.fsQuad.dispose();\n this.dispRT.dispose();\n this.dispMat.dispose();\n this.normRT.dispose();\n this.normMat.dispose();\n },\n methods: {\n init() {\n this.fsQuad = new Pass.FullScreenQuad();\n\n // displacement map\n this.dispRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.dispMat = new ShaderMaterial({\n uniforms: {\n uTime: this.uTime,\n uNoiseCoef: this.uNoiseCoef,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n ${snoise3}\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n `,\n });\n\n // normal map\n this.normRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.normMat = new ShaderMaterial({\n uniforms: {\n dispMap: { value: this.dispRT.texture },\n delta: this.uDelta,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n `,\n });\n\n this.material.displacementMap = this.dispRT.texture;\n this.material.displacementScale = this.displacementScale;\n this.material.normalMap = this.normRT.texture;\n this.material.normalMapType = ObjectSpaceNormalMap;\n // this.material.needsUpdate = true;\n },\n update() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n this.renderDisp();\n },\n renderDisp() {\n this.renderMat(this.dispMat, this.dispRT);\n this.renderMat(this.normMat, this.normRT);\n },\n renderMat(mat, target) {\n const renderer = this.three.renderer;\n this.fsQuad.material = mat;\n const oldTarget = renderer.getRenderTarget();\n renderer.setRenderTarget(target);\n this.fsQuad.render(renderer);\n renderer.setRenderTarget(oldTarget);\n },\n },\n __hmrId: 'NoisyPlane',\n};\n","import { watch } from 'vue';\nimport Sphere from '../../meshes/Sphere.js';\nimport snoise4 from '../../glsl/snoise4.glsl.js';\n\nexport default {\n extends: Sphere,\n props: {\n radius: { type: Number, default: 20 },\n widthSegments: { type: Number, default: 128 },\n heightSegments: { type: Number, default: 128 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.05 },\n dispCoef: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uDispCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n ${snoise4}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n `\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisySphere',\n};\n","import { watch } from 'vue';\nimport Text from '../../meshes/Text.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Text,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.015 },\n zCoef: { type: Number, default: 10 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyText',\n};\n","import {\n DoubleSide,\n Face3,\n InstancedBufferAttribute,\n InstancedMesh,\n MathUtils,\n MeshBasicMaterial,\n Object3D,\n Vector2,\n Vector3,\n} from 'three';\n\nimport { Geometry } from 'three/examples/jsm/deprecated/Geometry.js';\n\nexport default class AnimatedPlane {\n constructor(params) {\n Object.entries(params).forEach(([key, value]) => {\n this[key] = value;\n });\n\n this.o3d = new Object3D();\n this.uProgress = { value: 0 };\n this.uvScale = new Vector2();\n\n this.initMaterial();\n this.initPlane();\n }\n\n initMaterial() {\n this.material = new MeshBasicMaterial({\n side: DoubleSide,\n transparent: true,\n map: this.texture,\n onBeforeCompile: shader => {\n shader.uniforms.progress = this.uProgress;\n shader.uniforms.uvScale = { value: this.uvScale };\n shader.vertexShader = `\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n #include \n vUv = vUv * uvScale + uvOffset;\n `);\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n `);\n },\n });\n }\n\n initPlane() {\n const { width, wWidth, wHeight } = this.screen;\n this.wSize = this.size * wWidth / width;\n this.nx = Math.ceil(wWidth / this.wSize) + 1;\n this.ny = Math.ceil(wHeight / this.wSize) + 1;\n this.icount = this.nx * this.ny;\n\n this.initGeometry();\n this.initUV();\n this.initAnimAttributes();\n\n if (this.imesh) {\n this.o3d.remove(this.imesh);\n }\n this.imesh = new InstancedMesh(this.bGeometry, this.material, this.icount);\n this.o3d.add(this.imesh);\n\n const dummy = new Object3D();\n let index = 0;\n let x = -(wWidth - (wWidth - this.nx * this.wSize)) / 2 + this.dx;\n for (let i = 0; i < this.nx; i++) {\n let y = -(wHeight - (wHeight - this.ny * this.wSize)) / 2 + this.dy;\n for (let j = 0; j < this.ny; j++) {\n dummy.position.set(x, y, 0);\n dummy.updateMatrix();\n this.imesh.setMatrixAt(index++, dummy.matrix);\n y += this.wSize;\n }\n x += this.wSize;\n }\n }\n\n initGeometry() {\n // square\n const geometry = new Geometry();\n geometry.vertices.push(new Vector3(0, 0, 0));\n geometry.vertices.push(new Vector3(this.wSize, 0, 0));\n geometry.vertices.push(new Vector3(0, this.wSize, 0));\n geometry.vertices.push(new Vector3(this.wSize, this.wSize, 0));\n geometry.faces.push(new Face3(0, 2, 1));\n geometry.faces.push(new Face3(2, 3, 1));\n\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 0),\n new Vector2(0, 1),\n new Vector2(1, 0),\n ]);\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 1),\n new Vector2(1, 1),\n new Vector2(1, 0),\n ]);\n\n // geometry.computeFaceNormals();\n // geometry.computeVertexNormals();\n\n // center\n this.dx = this.wSize / 2;\n this.dy = this.wSize / 2;\n geometry.translate(-this.dx, -this.dy, 0);\n\n this.bGeometry = geometry.toBufferGeometry();\n }\n\n initAnimAttributes() {\n const { randFloat: rnd, randFloatSpread: rndFS } = MathUtils;\n const v3 = new Vector3();\n\n const offsets = new Float32Array(this.icount * 3);\n for (let i = 0; i < offsets.length; i += 3) {\n if (this.anim === 1) v3.set(rndFS(10), rnd(50, 100), rnd(20, 50)).toArray(offsets, i);\n else v3.set(rndFS(20), rndFS(20), rnd(20, 200)).toArray(offsets, i);\n }\n this.bGeometry.setAttribute('offset', new InstancedBufferAttribute(offsets, 3));\n\n const rotations = new Float32Array(this.icount * 3);\n const angle = Math.PI * 4;\n for (let i = 0; i < rotations.length; i += 3) {\n rotations[i] = rndFS(angle);\n rotations[i + 1] = rndFS(angle);\n rotations[i + 2] = rndFS(angle);\n }\n this.bGeometry.setAttribute('rotation', new InstancedBufferAttribute(rotations, 3));\n }\n\n initUV() {\n const ratio = this.nx / this.ny;\n const tRatio = this.texture.image.width / this.texture.image.height;\n if (ratio > tRatio) this.uvScale.set(1 / this.nx, (tRatio / ratio) / this.ny);\n else this.uvScale.set((ratio / tRatio) / this.nx, 1 / this.ny);\n const nW = this.uvScale.x * this.nx;\n const nH = this.uvScale.y * this.ny;\n\n const v2 = new Vector2();\n const uvOffsets = new Float32Array(this.icount * 2);\n for (let i = 0; i < this.nx; i++) {\n for (let j = 0; j < this.ny; j++) {\n v2.set(\n this.uvScale.x * i + (1 - nW) / 2,\n this.uvScale.y * j + (1 - nH) / 2\n ).toArray(uvOffsets, (i * this.ny + j) * 2);\n }\n }\n this.bGeometry.setAttribute('uvOffset', new InstancedBufferAttribute(uvOffsets, 2));\n }\n\n setTexture(texture) {\n this.texture = texture;\n this.material.map = texture;\n this.initUV();\n }\n\n resize() {\n this.initPlane();\n }\n}\n","import { TextureLoader } from 'three';\n\nexport default function useTextures() {\n const obj = {\n loader: new TextureLoader(),\n count: 0,\n textures: [],\n loadProgress: 0,\n loadTextures,\n dispose,\n };\n return obj;\n\n function loadTextures(images, cb) {\n obj.count = images.length;\n obj.textures.splice(0);\n obj.loadProgress = 0;\n Promise.all(images.map(loadTexture)).then(cb);\n };\n\n function loadTexture(img, index) {\n return new Promise(resolve => {\n obj.loader.load(\n img.src,\n texture => {\n obj.loadProgress += 1 / obj.count;\n obj.textures[index] = texture;\n resolve(texture);\n }\n );\n });\n };\n\n function dispose() {\n obj.textures.forEach(t => t.dispose());\n }\n};\n","\n\n\n","import {\n Mesh,\n PlaneBufferGeometry,\n ShaderMaterial,\n Vector2,\n} from 'three';\n\nexport default function ZoomBlurImage(three) {\n let geometry, material, mesh;\n\n const uMap = { value: null };\n const uCenter = { value: new Vector2(0.5, 0.5) };\n const uStrength = { value: 0 };\n const uUVOffset = { value: new Vector2(0, 0) };\n const uUVScale = { value: new Vector2(1, 1) };\n\n init();\n\n return { geometry, material, mesh, uCenter, uStrength, setMap, updateUV };\n\n function init() {\n geometry = new PlaneBufferGeometry(2, 2, 1, 1);\n\n material = new ShaderMaterial({\n transparent: true,\n uniforms: {\n map: uMap,\n center: uCenter,\n strength: uStrength,\n uvOffset: uUVOffset,\n uvScale: uUVScale,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n // adapted from https://github.com/evanw/glfx.js\n fragmentShader: `\n uniform sampler2D map;\n uniform vec2 center;\n uniform float strength;\n uniform vec2 uvOffset;\n uniform vec2 uvScale;\n varying vec2 vUv;\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 main() {\n vec2 tUv = vUv * uvScale + uvOffset;\n if (abs(strength) > 0.001) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center * uvScale + uvOffset - tUv;\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 \n for (float t = 0.0; t <= 20.0; t++) {\n float percent = (t + offset) / 20.0;\n float weight = 2.0 * (percent - percent * percent);\n vec4 texel = texture2D(map, tUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n gl_FragColor.a = 1.0 - abs(strength);\n } else {\n gl_FragColor = texture2D(map, tUv);\n }\n }\n `,\n });\n\n mesh = new Mesh(geometry, material);\n }\n\n function setMap(value) {\n uMap.value = value;\n updateUV();\n }\n\n function updateUV() {\n const ratio = three.size.ratio;\n const iRatio = uMap.value.image.width / uMap.value.image.height;\n uUVOffset.value.set(0, 0);\n uUVScale.value.set(1, 1);\n if (iRatio > ratio) {\n uUVScale.value.x = ratio / iRatio;\n uUVOffset.value.x = (1 - uUVScale.value.x) / 2;\n } else {\n uUVScale.value.y = iRatio / ratio;\n uUVOffset.value.y = (1 - uUVScale.value.y) / 2;\n }\n }\n}\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["useThree","const","conf","canvas","antialias","alpha","autoClear","orbit_ctrl","mouse_move","mouse_raycast","mouse_over","click","resize","width","height","size","wWidth","wHeight","ratio","afterInitCallbacks","afterResizeCallbacks","beforeRenderCallbacks","mouse","Vector2","mouseV3","Vector3","mousePlane","Plane","raycaster","Raycaster","intersectObjects","obj","renderer","camera","cameraCtrl","materials","scene","params","Object","entries","forEach","key","value","console","error","WebGLRenderer","orbitCtrl","OrbitControls","domElement","setSize","onResize","window","addEventListener","mouse_move_element","document","body","onMousemove","onMouseleave","onClick","c","removeEventListener","dispose","this","update","render","composer","callback","push","filter","o","indexOf","i","splice","updateMouse","e","rect","target","getBoundingClientRect","x","clientX","left","y","clientY","top","setFromCamera","objects","length","object","onMousechange","getWorldDirection","normal","normalize","ray","intersectPlane","onObjects","offObjects","hover","onHover","let","innerWidth","innerHeight","elt","parentNode","clientWidth","clientHeight","aspect","updateProjectionMatrix","type","right","bottom","wsize","vFOV","fov","Math","PI","h","tan","abs","position","z","getCameraSize","props","Boolean","default","mouseMove","String","mouseRaycast","mouseOver","shadow","setup","three","raf","onMountedCallbacks","provide","rendererComponent","mounted","$el","init","shadowMap","enabled","animateC","animate","beforeUnmount","methods","onMounted","onBeforeRender","onAfterResize","requestAnimationFrame","renderC","$slots","setFromProp","prop","propsValues","exclude","values","includes","lerp","value1","value2","amount","lerpv2","v1","v2","lerpv3","limit","val","min","max","getMatcapUrl","hash","format","MATCAP_ROOT","useBindProp","comp","ref","toRef","watch","deep","inject","Number","near","far","zoom","created","OrthographicCamera","p","__hmrId","PerspectiveCamera","rotation","scale","parent","group","Group","add","unmounted","remove","id","background","Scene","Color","emits","rotateX","rotateY","rotateZ","mesh","watchProps","$props","beforeMount","createGeometry","rotateGeometry","setGeometry","geometry","addWatchers","refreshGeometry","oldGeo","extends","Geometry","depth","widthSegments","heightSegments","depthSegments","w","d","BoxBufferGeometry","radius","segments","thetaStart","thetaLength","CircleBufferGeometry","radialSegments","openEnded","ConeBufferGeometry","radiusTop","radiusBottom","CylinderBufferGeometry","detail","DodecahedronBufferGeometry","IcosahedronBufferGeometry","points","Array","phiStart","phiLength","LatheBufferGeometry","OctahedronBufferGeometry","vertices","indices","PolyhedronBufferGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","tube","tubularSegments","arc","TorusBufferGeometry","q","TorusKnotBufferGeometry","path","Curve","radiusSegments","closed","TubeBufferGeometry","from","color","intensity","castShadow","shadowMapSize","light","mapSize","Light","AmbientLight","DirectionalLight","distance","decay","PointLight","angle","penumbra","SpotLight","depthTest","depthWrite","flatShading","fog","opacity","side","FrontSide","transparent","vertexColors","material","createMaterial","setMaterial","_addWatchers","setProp","needsUpdate","setTexture","texture","set","Material","MeshBasicMaterial","MeshLambertMaterial","src","name","opts","matcap","TextureLoader","load","MeshMatcapMaterial","emissive","emissiveIntensity","reflectivity","shininess","specular","MeshPhongMaterial","aoMapIntensity","bumpScale","displacementBias","displacementScale","envMapIntensity","lightMapIntensity","metalness","normalScale","roughness","refractionRatio","wireframe","MeshStandardMaterial","keys","StandardMaterial","MeshPhysicalMaterial","string","find","replace","meshphongFragHead","ShaderChunk","meshphong_frag","slice","meshphongFragBody","SubsurfaceScatteringShader","uniforms","UniformsUtils","merge","ShaderLib","phong","thicknessColor","thicknessDistortion","thicknessAmbient","thicknessAttenuation","thicknessPower","thicknessScale","vertexShader","fragmentShader","lights_fragment_begin","split","join","diffuse","clone","TShaderMaterial","lights","MeshToonMaterial","onLoad","Function","onProgress","onError","refreshTexture","createTexture","onLoaded","$emit","urls","refraction","CubeTextureLoader","setPath","mapping","CubeRefractionMapping","materialId","receiveShadow","initMesh","removeIntersectObject","Mesh","over","component","addIntersectObject","event","bindProps","PlaneBufferGeometry","text","fontSrc","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align","TextProps","font","FontLoader","TextBufferGeometry","center","cubeRTSize","cubeCameraNear","cubeCameraFar","autoUpdate","initGem","updateCubeRT","offBeforeRender","meshBack","materialBack","cubeRT","WebGLCubeRenderTarget","RGBFormat","generateMipmaps","minFilter","LinearMipmapLinearFilter","cubeCamera","CubeCamera","envMap","premultipliedAlpha","BackSide","TMesh","visible","keepSize","DoubleSide","map","loadTexture","screen","iRatio","image","count","InstancedMesh","initMirrorMesh","SpriteMaterial","sprite","Sprite","updateUV","iWidth","iHeight","positions","attributes","array","passes","onAfterInit","EffectComposer","pass","addPass","offAfterResize","EffectPass","RenderPass","focus","aperture","maxblur","BokehPass","noiseIntensity","scanlinesIntensity","scanlinesCount","grayscale","nIntensity","sIntensity","sCount","FilmPass","ShaderPass","FXAAShader","resolution","shape","rotateR","rotateG","rotateB","scatter","HalftonePass","SMAAPass","tDiffuse","blurRadius","gradientRadius","start","end","delta","texSize","DefaultShader","useBindPropValue","srcProp","dst","dstProp","TiltShift","pass1","uniforms1","updateFocusLine","copy","dv","sub","strength","threshold","UnrealBloomPass","ZoomBlur","Image","timeCoef","noiseCoef","zCoef","dispCoef","uNoiseCoef","uZCoef","uDispCoef","startTime","Date","now","updateTime","onBeforeCompile","shader","uTime","snoise2","materialShader","deltaCoef","uDelta","fsQuad","dispRT","dispMat","normRT","normMat","Pass","FullScreenQuad","WebGLRenderTarget","depthBuffer","stencilBuffer","ShaderMaterial","dispMap","displacementMap","normalMap","normalMapType","ObjectSpaceNormalMap","renderDisp","renderMat","mat","oldTarget","getRenderTarget","setRenderTarget","Sphere","updateMaterial","needsupdate","Text","AnimatedPlane","o3d","Object3D","uProgress","uvScale","initMaterial","initPlane","useTextures","loader","textures","loadProgress","images","cb","Promise","all","then","t","img","index","resolve","progress","wSize","nx","ceil","ny","icount","initGeometry","initUV","initAnimAttributes","imesh","bGeometry","dummy","dx","dy","j","updateMatrix","setMatrixAt","matrix","faces","Face3","faceVertexUvs","translate","toBufferGeometry","v3","offsets","Float32Array","anim","rndFS","rnd","toArray","setAttribute","InstancedBufferAttribute","rotations","tRatio","nW","nH","uvOffsets","events","wheel","keyup","targetProgress","$refs","loadTextures","onWheel","onKeyup","initScene","gsap","fromTo","plane1","duration","ease","Power4","easeOut","updateProgress","plane2","setPlanesProgress","planes","deltaY","setTargetProgress","navPrevious","navNext","keyCode","isInteger","floor","progress1","pdiff","p0","p1","ZoomBlurImage","uMap","uCenter","uStrength","uUVOffset","uUVScale","uvOffset","_createBlock","_createVNode","image1","setMap","image2","setImagesProgress","divideScalar","addScalar","mouse-move","cameraPosition","GLTFLoader","gltf","orbit-ctrl","_renderSlot","TroisJSVuePlugin","install","app","TROIS"],"mappings":"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"} \ No newline at end of file diff --git a/build/trois.module.js b/build/trois.module.js index 8ef2d0a..5d27981 100644 --- a/build/trois.module.js +++ b/build/trois.module.js @@ -228,12 +228,19 @@ function useThree() { this.renderer.dispose(); } + /** + */ + function updateMouse(e) { + var rect = e.target.getBoundingClientRect(); + mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1; + mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1; + } + /** * click listener */ function onClick(e) { - mouse.x = (e.clientX / size.width) * 2 - 1; - mouse.y = -(e.clientY / size.height) * 2 + 1; + updateMouse(e); raycaster.setFromCamera(mouse, obj.camera); var objects = raycaster.intersectObjects(intersectObjects); for (var i = 0; i < objects.length; i++) { @@ -246,8 +253,7 @@ function useThree() { * mousemove listener */ function onMousemove(e) { - mouse.x = (e.clientX / size.width) * 2 - 1; - mouse.y = -(e.clientY / size.height) * 2 + 1; + updateMouse(e); onMousechange(); } @@ -3216,12 +3222,9 @@ var script = { events: { type: Object, default: function () { return { wheel: true, click: true, keyup: true }; } }, }, setup: function setup() { - var ref = useTextures(); - var textures = ref.textures; - var loadTextures = ref.loadTextures; + var loader = useTextures(); return { - textures: textures, - loadTextures: loadTextures, + loader: loader, progress: 0, targetProgress: 0, }; @@ -3232,13 +3235,15 @@ var script = { if (this.images.length < 2) { console.error('This slider needs at least 2 images.'); } else { - this.loadTextures(this.images, this.init); + this.loader.loadTextures(this.images, this.init); } }, unmounted: function unmounted() { - document.removeEventListener('click', this.onClick); + this.loader.dispose(); + var domElement = this.three.renderer.domElement; + domElement.removeEventListener('click', this.onClick); + domElement.removeEventListener('wheel', this.onWheel); document.removeEventListener('keyup', this.onKeyup); - window.removeEventListener('wheel', this.onWheel); }, methods: { init: function init() { @@ -3255,9 +3260,10 @@ var script = { } ); - if (this.events.click) { document.addEventListener('click', this.onClick); } + var domElement = this.three.renderer.domElement; + if (this.events.click) { domElement.addEventListener('click', this.onClick); } + if (this.events.wheel) { domElement.addEventListener('wheel', this.onWheel); } if (this.events.keyup) { document.addEventListener('keyup', this.onKeyup); } - if (this.events.wheel) { window.addEventListener('wheel', this.onWheel); } this.three.onBeforeRender(this.updateProgress); this.three.onAfterResize(this.onResize); }, @@ -3269,14 +3275,14 @@ var script = { renderer: renderer, screen: this.three.size, size: 10, anim: 1, - texture: this.textures[0], + texture: this.loader.textures[0], }); this.plane2 = new AnimatedPlane({ renderer: renderer, screen: this.three.size, size: 10, anim: 2, - texture: this.textures[1], + texture: this.loader.textures[1], }); this.setPlanesProgress(0); @@ -3336,8 +3342,8 @@ var script = { if ((pdiff > 0 && p1 < p0) || (pdiff < 0 && p0 < p1)) { var i = Math.floor(progress1) % this.images.length; var j = (i + 1) % this.images.length; - this.plane1.setTexture(this.textures[i]); - this.plane2.setTexture(this.textures[j]); + this.plane1.setTexture(this.loader.textures[i]); + this.plane2.setTexture(this.loader.textures[j]); } this.progress = progress1; @@ -3377,7 +3383,223 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { script.render = render; script.__file = "src/components/sliders/Slider1.vue"; +function ZoomBlurImage(three) { + var geometry, material, mesh; + + var uMap = { value: null }; + var uCenter = { value: new Vector2(0.5, 0.5) }; + var uStrength = { value: 0 }; + var uUVOffset = { value: new Vector2(0, 0) }; + var uUVScale = { value: new Vector2(1, 1) }; + + init(); + + return { geometry: geometry, material: material, mesh: mesh, uCenter: uCenter, uStrength: uStrength, setMap: setMap, updateUV: updateUV }; + + function init() { + geometry = new PlaneBufferGeometry(2, 2, 1, 1); + + material = new ShaderMaterial$1({ + transparent: true, + uniforms: { + map: uMap, + center: uCenter, + strength: uStrength, + uvOffset: uUVOffset, + uvScale: uUVScale, + }, + vertexShader: "\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ", + // adapted from https://github.com/evanw/glfx.js + fragmentShader: "\n uniform sampler2D map;\n uniform vec2 center;\n uniform float strength;\n uniform vec2 uvOffset;\n uniform vec2 uvScale;\n varying vec2 vUv;\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 main() {\n vec2 tUv = vUv * uvScale + uvOffset;\n if (abs(strength) > 0.001) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center * uvScale + uvOffset - tUv;\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 \n for (float t = 0.0; t <= 20.0; t++) {\n float percent = (t + offset) / 20.0;\n float weight = 2.0 * (percent - percent * percent);\n vec4 texel = texture2D(map, tUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n gl_FragColor.a = 1.0 - abs(strength);\n } else {\n gl_FragColor = texture2D(map, tUv);\n }\n }\n ", + }); + + mesh = new Mesh$1(geometry, material); + } + + function setMap(value) { + uMap.value = value; + updateUV(); + } + + function updateUV() { + var ratio = three.size.ratio; + var iRatio = uMap.value.image.width / uMap.value.image.height; + uUVOffset.value.set(0, 0); + uUVScale.value.set(1, 1); + if (iRatio > ratio) { + uUVScale.value.x = ratio / iRatio; + uUVOffset.value.x = (1 - uUVScale.value.x) / 2; + } else { + uUVScale.value.y = iRatio / ratio; + uUVOffset.value.y = (1 - uUVScale.value.y) / 2; + } + } +} + var script$1 = { + props: { + images: Array, + events: { type: Object, default: function () { return { wheel: true, click: true, keyup: true }; } }, + }, + setup: function setup() { + var center = new Vector2(); + var loader = useTextures(); + + return { + loader: loader, + center: center, + progress: 0, + targetProgress: 0, + }; + }, + mounted: function mounted() { + this.three = this.$refs.renderer.three; + + if (this.images.length < 2) { + console.error('This slider needs at least 2 images.'); + } else { + this.loader.loadTextures(this.images, this.init); + } + }, + unmounted: function unmounted() { + this.loader.dispose(); + var domElement = this.three.renderer.domElement; + domElement.removeEventListener('click', this.onClick); + domElement.removeEventListener('wheel', this.onWheel); + document.removeEventListener('keyup', this.onKeyup); + }, + methods: { + init: function init() { + this.initScene(); + gsap.fromTo(this.image1.uStrength, + { + value: -2, + }, + { + value: 0, + duration: 2.5, + ease: Power4.easeOut, + } + ); + + var domElement = this.three.renderer.domElement; + if (this.events.click) { domElement.addEventListener('click', this.onClick); } + if (this.events.wheel) { domElement.addEventListener('wheel', this.onWheel); } + if (this.events.keyup) { document.addEventListener('keyup', this.onKeyup); } + this.three.onBeforeRender(this.animate); + this.three.onAfterResize(this.onResize); + }, + initScene: function initScene() { + var scene = this.$refs.scene.scene; + + this.image1 = new ZoomBlurImage(this.three); + this.image1.setMap(this.loader.textures[0]); + this.image2 = new ZoomBlurImage(this.three); + this.image2.setMap(this.loader.textures[1]); + this.setImagesProgress(0); + + scene.add(this.image1.mesh); + scene.add(this.image2.mesh); + }, + animate: function animate() { + var ref = this.three; + var mouse = ref.mouse; + this.center.copy(mouse).divideScalar(2).addScalar(0.5); + lerpv2(this.image1.uCenter.value, this.center, 0.1); + lerpv2(this.image2.uCenter.value, this.center, 0.1); + + this.updateProgress(); + }, + onResize: function onResize() { + this.image1.updateUV(); + this.image2.updateUV(); + }, + onWheel: function onWheel(e) { + // e.preventDefault(); + if (e.deltaY > 0) { + this.setTargetProgress(this.targetProgress + 1 / 20); + } else { + this.setTargetProgress(this.targetProgress - 1 / 20); + } + }, + onClick: function onClick(e) { + if (e.clientY < this.three.size.height / 2) { + this.navPrevious(); + } else { + this.navNext(); + } + }, + onKeyup: function onKeyup(e) { + if (e.keyCode === 37 || e.keyCode === 38) { + this.navPrevious(); + } else if (e.keyCode === 39 || e.keyCode === 40) { + this.navNext(); + } + }, + navNext: function navNext() { + if (Number.isInteger(this.targetProgress)) { this.setTargetProgress(this.targetProgress + 1); } + else { this.setTargetProgress(Math.ceil(this.targetProgress)); } + }, + navPrevious: function navPrevious() { + if (Number.isInteger(this.targetProgress)) { this.setTargetProgress(this.targetProgress - 1); } + else { this.setTargetProgress(Math.floor(this.targetProgress)); } + }, + setTargetProgress: function setTargetProgress(value) { + this.targetProgress = value; + if (this.targetProgress < 0) { + this.progress += this.images.length; + this.targetProgress += this.images.length; + } + }, + updateProgress: function updateProgress() { + var progress1 = lerp(this.progress, this.targetProgress, 0.1); + var pdiff = progress1 - this.progress; + if (pdiff === 0) { return; } + + var p0 = this.progress % 1; + var p1 = progress1 % 1; + if ((pdiff > 0 && p1 < p0) || (pdiff < 0 && p0 < p1)) { + var i = Math.floor(progress1) % this.images.length; + var j = (i + 1) % this.images.length; + this.image1.setMap(this.loader.textures[i]); + this.image2.setMap(this.loader.textures[j]); + } + + this.progress = progress1; + this.setImagesProgress(this.progress % 1); + }, + setImagesProgress: function setImagesProgress(progress) { + this.image1.uStrength.value = progress; + this.image2.uStrength.value = -1 + progress; + }, + }, +}; + +function render$1(_ctx, _cache, $props, $setup, $data, $options) { + var _component_OrthographicCamera = resolveComponent("OrthographicCamera"); + var _component_Scene = resolveComponent("Scene"); + var _component_Renderer = resolveComponent("Renderer"); + + return (openBlock(), createBlock(_component_Renderer, { + ref: "renderer", + antialias: "", + "mouse-move": "" + }, { + default: withCtx(function () { return [ + createVNode(_component_OrthographicCamera, { + ref: "camera", + position: { z: 10 } + }, null, 512 /* NEED_PATCH */), + createVNode(_component_Scene, { ref: "scene" }, null, 512 /* NEED_PATCH */) + ]; }), + _: 1 /* STABLE */ + }, 512 /* NEED_PATCH */)) +} + +script$1.render = render$1; +script$1.__file = "src/components/sliders/Slider2.vue"; + +var script$2 = { props: { src: String, cameraPosition: Object, @@ -3394,7 +3616,7 @@ var script$1 = { }, }; -function render$1(_ctx, _cache, $props, $setup, $data, $options) { +function render$2(_ctx, _cache, $props, $setup, $data, $options) { var _component_Camera = resolveComponent("Camera"); var _component_Scene = resolveComponent("Scene"); var _component_Renderer = resolveComponent("Renderer"); @@ -3419,8 +3641,8 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) { }, 8 /* PROPS */, ["orbit-ctrl"])) } -script$1.render = render$1; -script$1.__file = "src/components/viewers/GLTFViewer.vue"; +script$2.render = render$2; +script$2.__file = "src/components/viewers/GLTFViewer.vue"; var TROIS = /*#__PURE__*/Object.freeze({ __proto__: null, @@ -3498,7 +3720,8 @@ var TROIS = /*#__PURE__*/Object.freeze({ NoisySphere: NoisySphere, NoisyText: NoisyText, Slider1: script, - GLTFViewer: script$1, + Slider2: script$1, + GLTFViewer: script$2, setFromProp: setFromProp, propsValues: propsValues, lerp: lerp, @@ -3598,5 +3821,5 @@ var TroisJSVuePlugin = { }, }; -export { AmbientLight, BasicMaterial, BokehPass, Box, BoxGeometry, PerspectiveCamera as Camera, Circle, CircleGeometry, Cone, ConeGeometry, CubeTexture, Cylinder, CylinderGeometry, DirectionalLight, Dodecahedron, DodecahedronGeometry, EffectComposer, FXAAPass, FilmPass, script$1 as GLTFViewer, Gem, Group, HalftonePass, Icosahedron, IcosahedronGeometry, Image, InstancedMesh, LambertMaterial, Lathe, LatheGeometry, MatcapMaterial, Mesh, MirrorMesh, NoisyImage, NoisyPlane, NoisySphere, NoisyText, Octahedron, OctahedronGeometry, OrthographicCamera, PerspectiveCamera, PhongMaterial, PhysicalMaterial, Plane, PointLight, Polyhedron, PolyhedronGeometry, RefractionMesh, RenderPass, Renderer, Ring, RingGeometry, SMAAPass, Scene, script as Slider1, Sphere, SphereGeometry, SpotLight, Sprite, StandardMaterial, SubSurfaceMaterial, Tetrahedron, TetrahedronGeometry, Text, Texture, TiltShiftPass, ToonMaterial, Torus, TorusGeometry, TorusKnot, TorusKnotGeometry, TroisJSVuePlugin, Tube, TubeGeometry, UnrealBloomPass, ZoomBlurPass, getMatcapUrl, lerp, lerpv2, lerpv3, limit, propsValues, setFromProp }; +export { AmbientLight, BasicMaterial, BokehPass, Box, BoxGeometry, PerspectiveCamera as Camera, Circle, CircleGeometry, Cone, ConeGeometry, CubeTexture, Cylinder, CylinderGeometry, DirectionalLight, Dodecahedron, DodecahedronGeometry, EffectComposer, FXAAPass, FilmPass, script$2 as GLTFViewer, Gem, Group, HalftonePass, Icosahedron, IcosahedronGeometry, Image, InstancedMesh, LambertMaterial, Lathe, LatheGeometry, MatcapMaterial, Mesh, MirrorMesh, NoisyImage, NoisyPlane, NoisySphere, NoisyText, Octahedron, OctahedronGeometry, OrthographicCamera, PerspectiveCamera, PhongMaterial, PhysicalMaterial, Plane, PointLight, Polyhedron, PolyhedronGeometry, RefractionMesh, RenderPass, Renderer, Ring, RingGeometry, SMAAPass, Scene, script as Slider1, script$1 as Slider2, Sphere, SphereGeometry, SpotLight, Sprite, StandardMaterial, SubSurfaceMaterial, Tetrahedron, TetrahedronGeometry, Text, Texture, TiltShiftPass, ToonMaterial, Torus, TorusGeometry, TorusKnot, TorusKnotGeometry, TroisJSVuePlugin, Tube, TubeGeometry, UnrealBloomPass, ZoomBlurPass, getMatcapUrl, lerp, lerpv2, lerpv3, limit, propsValues, setFromProp }; //# sourceMappingURL=trois.module.js.map diff --git a/build/trois.module.js.map b/build/trois.module.js.map index e7e60ac..df301ad 100644 --- a/build/trois.module.js.map +++ b/build/trois.module.js.map @@ -1 +1 @@ -{"version":3,"file":"trois.module.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/use/useBindProp.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/PointLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/ShaderMaterial.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/use/useBindPropValue.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/glsl/snoise2.glsl.js","../src/components/noisy/NoisyImage.js","../src/glsl/snoise3.glsl.js","../src/components/noisy/NoisyPlane.js","../src/glsl/snoise4.glsl.js","../src/components/noisy/NoisySphere.js","../src/components/noisy/NoisyText.js","../src/components/sliders/AnimatedPlane.js","../src/use/useTextures.js","../src/components/sliders/Slider1.vue","../src/components/sliders/Slider1.vue?vue&type=template&id=23f29a93&lang.js","../src/components/viewers/GLTFViewer.vue","../src/components/viewers/GLTFViewer.vue?vue&type=template&id=683b03c7&lang.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.width && conf.height) {\n setSize(conf.width, conf.height);\n } else if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n mouse.x = (e.clientX / size.width) * 2 - 1;\n mouse.y = -(e.clientY / size.height) * 2 + 1;\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n mouse.x = (e.clientX / size.width) * 2 - 1;\n mouse.y = -(e.clientY / size.height) * 2 + 1;\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: true },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport { inject } from 'vue';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: ['three', 'scene'],\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n setup(props) {\r\n const parent = inject('group', inject('scene'));\r\n const group = new Group();\r\n useBindProp(props, 'position', group.position);\r\n useBindProp(props, 'rotation', group.rotation);\r\n useBindProp(props, 'scale', group.scale);\r\n return { parent, group };\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { inject, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n diffuse: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n Object.entries(this.$props).forEach(([key, value]) => {\n if (key === 'diffuse' || key === 'thicknessColor') {\n value = new Color(value);\n }\n if (key !== 'id' && key !== 'transparent' && key !== 'vertexColors') {\n uniforms[key].value = value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n // console.log('Mesh mounted');\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n // console.log('Mesh unmounted');\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three', 'scene'],\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport { inject } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: ['three', 'scene'],\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine);\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n`;\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Image from '../../meshes/Image.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Image,\n props: {\n widthSegments: { type: Number, default: 20 },\n heightSegments: { type: Number, default: 20 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 1 },\n zCoef: { type: Number, default: 5 },\n dispCoef: { type: Number, default: 0.05 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef, uDispCoef,\n };\n },\n mounted() {\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, this.widthSegments, this.heightSegments);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n `\n );\n\n shader.fragmentShader = `\n uniform float uDispCoef;\n varying float vNoise;\n ` + shader.fragmentShader;\n\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include ',\n `\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n `\n );\n this.materialShader = shader;\n };\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyImage',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v)\n{\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n // First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n // Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n // Permutations\n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n // Gradients: 7x7 points over a square, mapped onto an octahedron.\n // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n // Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n}\n`;\n","import { ObjectSpaceNormalMap, ShaderMaterial, Vector2, WebGLRenderTarget } from 'three';\nimport { Pass } from 'three/examples/jsm/postprocessing/Pass.js';\nimport { watch } from 'vue';\nimport Plane from '../../meshes/Plane.js';\nimport snoise3 from '../../glsl/snoise3.glsl.js';\n\nexport default {\n extends: Plane,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 5 },\n deltaCoef: { type: Number, default: 1 / 512 },\n displacementScale: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDelta = { value: new Vector2(props.deltaCoef, props.deltaCoef) };\n watch(() => props.deltaCoef, (value) => { uDelta.value.set(value, value); });\n\n return {\n uTime, uNoiseCoef, uDelta,\n };\n },\n mounted() {\n this.init();\n\n watch(() => this.displacementScale, (value) => { this.material.displacementScale = value; });\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.update);\n },\n unmounted() {\n this.three.offBeforeRender(this.update);\n this.fsQuad.dispose();\n this.dispRT.dispose();\n this.dispMat.dispose();\n this.normRT.dispose();\n this.normMat.dispose();\n },\n methods: {\n init() {\n this.fsQuad = new Pass.FullScreenQuad();\n\n // displacement map\n this.dispRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.dispMat = new ShaderMaterial({\n uniforms: {\n uTime: this.uTime,\n uNoiseCoef: this.uNoiseCoef,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n ${snoise3}\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n `,\n });\n\n // normal map\n this.normRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.normMat = new ShaderMaterial({\n uniforms: {\n dispMap: { value: this.dispRT.texture },\n delta: this.uDelta,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n `,\n });\n\n this.material.displacementMap = this.dispRT.texture;\n this.material.displacementScale = this.displacementScale;\n this.material.normalMap = this.normRT.texture;\n this.material.normalMapType = ObjectSpaceNormalMap;\n // this.material.needsUpdate = true;\n },\n update() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n this.renderDisp();\n },\n renderDisp() {\n this.renderMat(this.dispMat, this.dispRT);\n this.renderMat(this.normMat, this.normRT);\n },\n renderMat(mat, target) {\n const renderer = this.three.renderer;\n this.fsQuad.material = mat;\n const oldTarget = renderer.getRenderTarget();\n renderer.setRenderTarget(target);\n this.fsQuad.render(renderer);\n renderer.setRenderTarget(oldTarget);\n },\n },\n __hmrId: 'NoisyPlane',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nfloat mod289(float x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nfloat permute(float x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\nfloat taylorInvSqrt(float r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nvec4 grad4(float j, vec4 ip)\n{\n const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n vec4 p,s;\n\n p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n s = vec4(lessThan(p, vec4(0.0)));\n p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\n return p;\n}\n\n// (sqrt(5) - 1)/4 = F4, used once below\n#define F4 0.309016994374947451\n\nfloat snoise(vec4 v)\n{\n const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4\n 0.276393202250021, // 2 * G4\n 0.414589803375032, // 3 * G4\n -0.447213595499958); // -1 + 4 * G4\n\n // First corner\n vec4 i = floor(v + dot(v, vec4(F4)) );\n vec4 x0 = v - i + dot(i, C.xxxx);\n\n // Other corners\n\n // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n vec4 i0;\n vec3 isX = step( x0.yzw, x0.xxx );\n vec3 isYZ = step( x0.zww, x0.yyz );\n // i0.x = dot( isX, vec3( 1.0 ) );\n i0.x = isX.x + isX.y + isX.z;\n i0.yzw = 1.0 - isX;\n // i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n i0.y += isYZ.x + isYZ.y;\n i0.zw += 1.0 - isYZ.xy;\n i0.z += isYZ.z;\n i0.w += 1.0 - isYZ.z;\n\n // i0 now contains the unique values 0,1,2,3 in each channel\n vec4 i3 = clamp( i0, 0.0, 1.0 );\n vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n vec4 x1 = x0 - i1 + C.xxxx;\n vec4 x2 = x0 - i2 + C.yyyy;\n vec4 x3 = x0 - i3 + C.zzzz;\n vec4 x4 = x0 + C.wwww;\n\n // Permutations\n i = mod289(i);\n float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n vec4 j1 = permute( permute( permute( permute (\n i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\n // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope\n // 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n vec4 p0 = grad4(j0, ip);\n vec4 p1 = grad4(j1.x, ip);\n vec4 p2 = grad4(j1.y, ip);\n vec4 p3 = grad4(j1.z, ip);\n vec4 p4 = grad4(j1.w, ip);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n p4 *= taylorInvSqrt(dot(p4,p4));\n\n // Mix contributions from the five corners\n vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n m0 = m0 * m0;\n m1 = m1 * m1;\n return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\n}\n`;\n","import { watch } from 'vue';\nimport Sphere from '../../meshes/Sphere.js';\nimport snoise4 from '../../glsl/snoise4.glsl.js';\n\nexport default {\n extends: Sphere,\n props: {\n radius: { type: Number, default: 20 },\n widthSegments: { type: Number, default: 128 },\n heightSegments: { type: Number, default: 128 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.05 },\n dispCoef: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uDispCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n ${snoise4}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n `\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisySphere',\n};\n","import { watch } from 'vue';\nimport Text from '../../meshes/Text.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Text,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.015 },\n zCoef: { type: Number, default: 10 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyText',\n};\n","import {\n DoubleSide,\n Face3,\n InstancedBufferAttribute,\n InstancedMesh,\n MathUtils,\n MeshBasicMaterial,\n Object3D,\n Vector2,\n Vector3,\n} from 'three';\n\nimport { Geometry } from 'three/examples/jsm/deprecated/Geometry.js';\n\nexport default class AnimatedPlane {\n constructor(params) {\n Object.entries(params).forEach(([key, value]) => {\n this[key] = value;\n });\n\n this.o3d = new Object3D();\n this.uProgress = { value: 0 };\n this.uvScale = new Vector2();\n\n this.initMaterial();\n this.initPlane();\n }\n\n initMaterial() {\n this.material = new MeshBasicMaterial({\n side: DoubleSide,\n transparent: true,\n map: this.texture,\n onBeforeCompile: shader => {\n shader.uniforms.progress = this.uProgress;\n shader.uniforms.uvScale = { value: this.uvScale };\n shader.vertexShader = `\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n #include \n vUv = vUv * uvScale + uvOffset;\n `);\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n `);\n },\n });\n }\n\n initPlane() {\n const { width, wWidth, wHeight } = this.screen;\n this.wSize = this.size * wWidth / width;\n this.nx = Math.ceil(wWidth / this.wSize) + 1;\n this.ny = Math.ceil(wHeight / this.wSize) + 1;\n this.icount = this.nx * this.ny;\n\n this.initGeometry();\n this.initUV();\n this.initAnimAttributes();\n\n if (this.imesh) {\n this.o3d.remove(this.imesh);\n }\n this.imesh = new InstancedMesh(this.bGeometry, this.material, this.icount);\n this.o3d.add(this.imesh);\n\n const dummy = new Object3D();\n let index = 0;\n let x = -(wWidth - (wWidth - this.nx * this.wSize)) / 2 + this.dx;\n for (let i = 0; i < this.nx; i++) {\n let y = -(wHeight - (wHeight - this.ny * this.wSize)) / 2 + this.dy;\n for (let j = 0; j < this.ny; j++) {\n dummy.position.set(x, y, 0);\n dummy.updateMatrix();\n this.imesh.setMatrixAt(index++, dummy.matrix);\n y += this.wSize;\n }\n x += this.wSize;\n }\n }\n\n initGeometry() {\n // square\n const geometry = new Geometry();\n geometry.vertices.push(new Vector3(0, 0, 0));\n geometry.vertices.push(new Vector3(this.wSize, 0, 0));\n geometry.vertices.push(new Vector3(0, this.wSize, 0));\n geometry.vertices.push(new Vector3(this.wSize, this.wSize, 0));\n geometry.faces.push(new Face3(0, 2, 1));\n geometry.faces.push(new Face3(2, 3, 1));\n\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 0),\n new Vector2(0, 1),\n new Vector2(1, 0),\n ]);\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 1),\n new Vector2(1, 1),\n new Vector2(1, 0),\n ]);\n\n // geometry.computeFaceNormals();\n // geometry.computeVertexNormals();\n\n // center\n this.dx = this.wSize / 2;\n this.dy = this.wSize / 2;\n geometry.translate(-this.dx, -this.dy, 0);\n\n this.bGeometry = geometry.toBufferGeometry();\n }\n\n initAnimAttributes() {\n const { randFloat: rnd, randFloatSpread: rndFS } = MathUtils;\n const v3 = new Vector3();\n\n const offsets = new Float32Array(this.icount * 3);\n for (let i = 0; i < offsets.length; i += 3) {\n if (this.anim === 1) v3.set(rndFS(10), rnd(50, 100), rnd(20, 50)).toArray(offsets, i);\n else v3.set(rndFS(20), rndFS(20), rnd(20, 200)).toArray(offsets, i);\n }\n this.bGeometry.setAttribute('offset', new InstancedBufferAttribute(offsets, 3));\n\n const rotations = new Float32Array(this.icount * 3);\n const angle = Math.PI * 4;\n for (let i = 0; i < rotations.length; i += 3) {\n rotations[i] = rndFS(angle);\n rotations[i + 1] = rndFS(angle);\n rotations[i + 2] = rndFS(angle);\n }\n this.bGeometry.setAttribute('rotation', new InstancedBufferAttribute(rotations, 3));\n }\n\n initUV() {\n const ratio = this.nx / this.ny;\n const tRatio = this.texture.image.width / this.texture.image.height;\n if (ratio > tRatio) this.uvScale.set(1 / this.nx, (tRatio / ratio) / this.ny);\n else this.uvScale.set((ratio / tRatio) / this.nx, 1 / this.ny);\n const nW = this.uvScale.x * this.nx;\n const nH = this.uvScale.y * this.ny;\n\n const v2 = new Vector2();\n const uvOffsets = new Float32Array(this.icount * 2);\n for (let i = 0; i < this.nx; i++) {\n for (let j = 0; j < this.ny; j++) {\n v2.set(\n this.uvScale.x * i + (1 - nW) / 2,\n this.uvScale.y * j + (1 - nH) / 2\n ).toArray(uvOffsets, (i * this.ny + j) * 2);\n }\n }\n this.bGeometry.setAttribute('uvOffset', new InstancedBufferAttribute(uvOffsets, 2));\n }\n\n setTexture(texture) {\n this.texture = texture;\n this.material.map = texture;\n this.initUV();\n }\n\n resize() {\n this.initPlane();\n }\n}\n","import { TextureLoader } from 'three';\n\nexport default function useTextures() {\n const obj = {\n loader: new TextureLoader(),\n count: 0,\n textures: [],\n loadProgress: 0,\n loadTextures,\n dispose,\n };\n return obj;\n\n function loadTextures(images, cb) {\n obj.count = images.length;\n obj.textures.splice(0);\n obj.loadProgress = 0;\n Promise.all(images.map(loadTexture)).then(cb);\n };\n\n function loadTexture(img, index) {\n return new Promise(resolve => {\n obj.loader.load(\n img.src,\n texture => {\n obj.loadProgress += 1 / obj.count;\n obj.textures[index] = texture;\n resolve(texture);\n }\n );\n });\n };\n\n function dispose() {\n obj.textures.forEach(t => t.dispose());\n }\n};\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["const","let","Plane","i","o","OrthographicCamera","this","PerspectiveCamera","Group","Scene","AmbientLight","DirectionalLight","PointLight","SpotLight","TShaderMaterial","Mesh","TMesh","InstancedMesh","Sprite","EffectComposer","RenderPass","BokehPass","FilmPass","HalftonePass","SMAAPass","UnrealBloomPass","ShaderMaterial","Geometry","_createBlock","_createVNode","_renderSlot"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"trois.module.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/use/useBindProp.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/PointLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/ShaderMaterial.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/use/useBindPropValue.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/glsl/snoise2.glsl.js","../src/components/noisy/NoisyImage.js","../src/glsl/snoise3.glsl.js","../src/components/noisy/NoisyPlane.js","../src/glsl/snoise4.glsl.js","../src/components/noisy/NoisySphere.js","../src/components/noisy/NoisyText.js","../src/components/sliders/AnimatedPlane.js","../src/use/useTextures.js","../src/components/sliders/Slider1.vue","../src/components/sliders/Slider1.vue?vue&type=template&id=23f29a93&lang.js","../src/components/sliders/ZoomBlurImage.js","../src/components/sliders/Slider2.vue","../src/components/sliders/Slider2.vue?vue&type=template&id=2400b214&lang.js","../src/components/viewers/GLTFViewer.vue","../src/components/viewers/GLTFViewer.vue?vue&type=template&id=683b03c7&lang.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.width && conf.height) {\n setSize(conf.width, conf.height);\n } else if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: true },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport { inject } from 'vue';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: ['three', 'scene'],\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n setup(props) {\r\n const parent = inject('group', inject('scene'));\r\n const group = new Group();\r\n useBindProp(props, 'position', group.position);\r\n useBindProp(props, 'rotation', group.rotation);\r\n useBindProp(props, 'scale', group.scale);\r\n return { parent, group };\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { inject, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n diffuse: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n Object.entries(this.$props).forEach(([key, value]) => {\n if (key === 'diffuse' || key === 'thicknessColor') {\n value = new Color(value);\n }\n if (key !== 'id' && key !== 'transparent' && key !== 'vertexColors') {\n uniforms[key].value = value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n // console.log('Mesh mounted');\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n // console.log('Mesh unmounted');\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three', 'scene'],\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport { inject } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: ['three', 'scene'],\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine);\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n`;\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Image from '../../meshes/Image.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Image,\n props: {\n widthSegments: { type: Number, default: 20 },\n heightSegments: { type: Number, default: 20 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 1 },\n zCoef: { type: Number, default: 5 },\n dispCoef: { type: Number, default: 0.05 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef, uDispCoef,\n };\n },\n mounted() {\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, this.widthSegments, this.heightSegments);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n `\n );\n\n shader.fragmentShader = `\n uniform float uDispCoef;\n varying float vNoise;\n ` + shader.fragmentShader;\n\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include ',\n `\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n `\n );\n this.materialShader = shader;\n };\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyImage',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v)\n{\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n // First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n // Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n // Permutations\n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n // Gradients: 7x7 points over a square, mapped onto an octahedron.\n // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n // Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n}\n`;\n","import { ObjectSpaceNormalMap, ShaderMaterial, Vector2, WebGLRenderTarget } from 'three';\nimport { Pass } from 'three/examples/jsm/postprocessing/Pass.js';\nimport { watch } from 'vue';\nimport Plane from '../../meshes/Plane.js';\nimport snoise3 from '../../glsl/snoise3.glsl.js';\n\nexport default {\n extends: Plane,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 5 },\n deltaCoef: { type: Number, default: 1 / 512 },\n displacementScale: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDelta = { value: new Vector2(props.deltaCoef, props.deltaCoef) };\n watch(() => props.deltaCoef, (value) => { uDelta.value.set(value, value); });\n\n return {\n uTime, uNoiseCoef, uDelta,\n };\n },\n mounted() {\n this.init();\n\n watch(() => this.displacementScale, (value) => { this.material.displacementScale = value; });\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.update);\n },\n unmounted() {\n this.three.offBeforeRender(this.update);\n this.fsQuad.dispose();\n this.dispRT.dispose();\n this.dispMat.dispose();\n this.normRT.dispose();\n this.normMat.dispose();\n },\n methods: {\n init() {\n this.fsQuad = new Pass.FullScreenQuad();\n\n // displacement map\n this.dispRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.dispMat = new ShaderMaterial({\n uniforms: {\n uTime: this.uTime,\n uNoiseCoef: this.uNoiseCoef,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n ${snoise3}\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n `,\n });\n\n // normal map\n this.normRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.normMat = new ShaderMaterial({\n uniforms: {\n dispMap: { value: this.dispRT.texture },\n delta: this.uDelta,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n `,\n });\n\n this.material.displacementMap = this.dispRT.texture;\n this.material.displacementScale = this.displacementScale;\n this.material.normalMap = this.normRT.texture;\n this.material.normalMapType = ObjectSpaceNormalMap;\n // this.material.needsUpdate = true;\n },\n update() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n this.renderDisp();\n },\n renderDisp() {\n this.renderMat(this.dispMat, this.dispRT);\n this.renderMat(this.normMat, this.normRT);\n },\n renderMat(mat, target) {\n const renderer = this.three.renderer;\n this.fsQuad.material = mat;\n const oldTarget = renderer.getRenderTarget();\n renderer.setRenderTarget(target);\n this.fsQuad.render(renderer);\n renderer.setRenderTarget(oldTarget);\n },\n },\n __hmrId: 'NoisyPlane',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nfloat mod289(float x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nfloat permute(float x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\nfloat taylorInvSqrt(float r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nvec4 grad4(float j, vec4 ip)\n{\n const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n vec4 p,s;\n\n p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n s = vec4(lessThan(p, vec4(0.0)));\n p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\n return p;\n}\n\n// (sqrt(5) - 1)/4 = F4, used once below\n#define F4 0.309016994374947451\n\nfloat snoise(vec4 v)\n{\n const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4\n 0.276393202250021, // 2 * G4\n 0.414589803375032, // 3 * G4\n -0.447213595499958); // -1 + 4 * G4\n\n // First corner\n vec4 i = floor(v + dot(v, vec4(F4)) );\n vec4 x0 = v - i + dot(i, C.xxxx);\n\n // Other corners\n\n // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n vec4 i0;\n vec3 isX = step( x0.yzw, x0.xxx );\n vec3 isYZ = step( x0.zww, x0.yyz );\n // i0.x = dot( isX, vec3( 1.0 ) );\n i0.x = isX.x + isX.y + isX.z;\n i0.yzw = 1.0 - isX;\n // i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n i0.y += isYZ.x + isYZ.y;\n i0.zw += 1.0 - isYZ.xy;\n i0.z += isYZ.z;\n i0.w += 1.0 - isYZ.z;\n\n // i0 now contains the unique values 0,1,2,3 in each channel\n vec4 i3 = clamp( i0, 0.0, 1.0 );\n vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n vec4 x1 = x0 - i1 + C.xxxx;\n vec4 x2 = x0 - i2 + C.yyyy;\n vec4 x3 = x0 - i3 + C.zzzz;\n vec4 x4 = x0 + C.wwww;\n\n // Permutations\n i = mod289(i);\n float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n vec4 j1 = permute( permute( permute( permute (\n i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\n // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope\n // 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n vec4 p0 = grad4(j0, ip);\n vec4 p1 = grad4(j1.x, ip);\n vec4 p2 = grad4(j1.y, ip);\n vec4 p3 = grad4(j1.z, ip);\n vec4 p4 = grad4(j1.w, ip);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n p4 *= taylorInvSqrt(dot(p4,p4));\n\n // Mix contributions from the five corners\n vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n m0 = m0 * m0;\n m1 = m1 * m1;\n return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\n}\n`;\n","import { watch } from 'vue';\nimport Sphere from '../../meshes/Sphere.js';\nimport snoise4 from '../../glsl/snoise4.glsl.js';\n\nexport default {\n extends: Sphere,\n props: {\n radius: { type: Number, default: 20 },\n widthSegments: { type: Number, default: 128 },\n heightSegments: { type: Number, default: 128 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.05 },\n dispCoef: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uDispCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n ${snoise4}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n `\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisySphere',\n};\n","import { watch } from 'vue';\nimport Text from '../../meshes/Text.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Text,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.015 },\n zCoef: { type: Number, default: 10 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyText',\n};\n","import {\n DoubleSide,\n Face3,\n InstancedBufferAttribute,\n InstancedMesh,\n MathUtils,\n MeshBasicMaterial,\n Object3D,\n Vector2,\n Vector3,\n} from 'three';\n\nimport { Geometry } from 'three/examples/jsm/deprecated/Geometry.js';\n\nexport default class AnimatedPlane {\n constructor(params) {\n Object.entries(params).forEach(([key, value]) => {\n this[key] = value;\n });\n\n this.o3d = new Object3D();\n this.uProgress = { value: 0 };\n this.uvScale = new Vector2();\n\n this.initMaterial();\n this.initPlane();\n }\n\n initMaterial() {\n this.material = new MeshBasicMaterial({\n side: DoubleSide,\n transparent: true,\n map: this.texture,\n onBeforeCompile: shader => {\n shader.uniforms.progress = this.uProgress;\n shader.uniforms.uvScale = { value: this.uvScale };\n shader.vertexShader = `\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n #include \n vUv = vUv * uvScale + uvOffset;\n `);\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n `);\n },\n });\n }\n\n initPlane() {\n const { width, wWidth, wHeight } = this.screen;\n this.wSize = this.size * wWidth / width;\n this.nx = Math.ceil(wWidth / this.wSize) + 1;\n this.ny = Math.ceil(wHeight / this.wSize) + 1;\n this.icount = this.nx * this.ny;\n\n this.initGeometry();\n this.initUV();\n this.initAnimAttributes();\n\n if (this.imesh) {\n this.o3d.remove(this.imesh);\n }\n this.imesh = new InstancedMesh(this.bGeometry, this.material, this.icount);\n this.o3d.add(this.imesh);\n\n const dummy = new Object3D();\n let index = 0;\n let x = -(wWidth - (wWidth - this.nx * this.wSize)) / 2 + this.dx;\n for (let i = 0; i < this.nx; i++) {\n let y = -(wHeight - (wHeight - this.ny * this.wSize)) / 2 + this.dy;\n for (let j = 0; j < this.ny; j++) {\n dummy.position.set(x, y, 0);\n dummy.updateMatrix();\n this.imesh.setMatrixAt(index++, dummy.matrix);\n y += this.wSize;\n }\n x += this.wSize;\n }\n }\n\n initGeometry() {\n // square\n const geometry = new Geometry();\n geometry.vertices.push(new Vector3(0, 0, 0));\n geometry.vertices.push(new Vector3(this.wSize, 0, 0));\n geometry.vertices.push(new Vector3(0, this.wSize, 0));\n geometry.vertices.push(new Vector3(this.wSize, this.wSize, 0));\n geometry.faces.push(new Face3(0, 2, 1));\n geometry.faces.push(new Face3(2, 3, 1));\n\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 0),\n new Vector2(0, 1),\n new Vector2(1, 0),\n ]);\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 1),\n new Vector2(1, 1),\n new Vector2(1, 0),\n ]);\n\n // geometry.computeFaceNormals();\n // geometry.computeVertexNormals();\n\n // center\n this.dx = this.wSize / 2;\n this.dy = this.wSize / 2;\n geometry.translate(-this.dx, -this.dy, 0);\n\n this.bGeometry = geometry.toBufferGeometry();\n }\n\n initAnimAttributes() {\n const { randFloat: rnd, randFloatSpread: rndFS } = MathUtils;\n const v3 = new Vector3();\n\n const offsets = new Float32Array(this.icount * 3);\n for (let i = 0; i < offsets.length; i += 3) {\n if (this.anim === 1) v3.set(rndFS(10), rnd(50, 100), rnd(20, 50)).toArray(offsets, i);\n else v3.set(rndFS(20), rndFS(20), rnd(20, 200)).toArray(offsets, i);\n }\n this.bGeometry.setAttribute('offset', new InstancedBufferAttribute(offsets, 3));\n\n const rotations = new Float32Array(this.icount * 3);\n const angle = Math.PI * 4;\n for (let i = 0; i < rotations.length; i += 3) {\n rotations[i] = rndFS(angle);\n rotations[i + 1] = rndFS(angle);\n rotations[i + 2] = rndFS(angle);\n }\n this.bGeometry.setAttribute('rotation', new InstancedBufferAttribute(rotations, 3));\n }\n\n initUV() {\n const ratio = this.nx / this.ny;\n const tRatio = this.texture.image.width / this.texture.image.height;\n if (ratio > tRatio) this.uvScale.set(1 / this.nx, (tRatio / ratio) / this.ny);\n else this.uvScale.set((ratio / tRatio) / this.nx, 1 / this.ny);\n const nW = this.uvScale.x * this.nx;\n const nH = this.uvScale.y * this.ny;\n\n const v2 = new Vector2();\n const uvOffsets = new Float32Array(this.icount * 2);\n for (let i = 0; i < this.nx; i++) {\n for (let j = 0; j < this.ny; j++) {\n v2.set(\n this.uvScale.x * i + (1 - nW) / 2,\n this.uvScale.y * j + (1 - nH) / 2\n ).toArray(uvOffsets, (i * this.ny + j) * 2);\n }\n }\n this.bGeometry.setAttribute('uvOffset', new InstancedBufferAttribute(uvOffsets, 2));\n }\n\n setTexture(texture) {\n this.texture = texture;\n this.material.map = texture;\n this.initUV();\n }\n\n resize() {\n this.initPlane();\n }\n}\n","import { TextureLoader } from 'three';\n\nexport default function useTextures() {\n const obj = {\n loader: new TextureLoader(),\n count: 0,\n textures: [],\n loadProgress: 0,\n loadTextures,\n dispose,\n };\n return obj;\n\n function loadTextures(images, cb) {\n obj.count = images.length;\n obj.textures.splice(0);\n obj.loadProgress = 0;\n Promise.all(images.map(loadTexture)).then(cb);\n };\n\n function loadTexture(img, index) {\n return new Promise(resolve => {\n obj.loader.load(\n img.src,\n texture => {\n obj.loadProgress += 1 / obj.count;\n obj.textures[index] = texture;\n resolve(texture);\n }\n );\n });\n };\n\n function dispose() {\n obj.textures.forEach(t => t.dispose());\n }\n};\n","\n\n\n","\n\n\n","import {\n Mesh,\n PlaneBufferGeometry,\n ShaderMaterial,\n Vector2,\n} from 'three';\n\nexport default function ZoomBlurImage(three) {\n let geometry, material, mesh;\n\n const uMap = { value: null };\n const uCenter = { value: new Vector2(0.5, 0.5) };\n const uStrength = { value: 0 };\n const uUVOffset = { value: new Vector2(0, 0) };\n const uUVScale = { value: new Vector2(1, 1) };\n\n init();\n\n return { geometry, material, mesh, uCenter, uStrength, setMap, updateUV };\n\n function init() {\n geometry = new PlaneBufferGeometry(2, 2, 1, 1);\n\n material = new ShaderMaterial({\n transparent: true,\n uniforms: {\n map: uMap,\n center: uCenter,\n strength: uStrength,\n uvOffset: uUVOffset,\n uvScale: uUVScale,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n // adapted from https://github.com/evanw/glfx.js\n fragmentShader: `\n uniform sampler2D map;\n uniform vec2 center;\n uniform float strength;\n uniform vec2 uvOffset;\n uniform vec2 uvScale;\n varying vec2 vUv;\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 main() {\n vec2 tUv = vUv * uvScale + uvOffset;\n if (abs(strength) > 0.001) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center * uvScale + uvOffset - tUv;\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 \n for (float t = 0.0; t <= 20.0; t++) {\n float percent = (t + offset) / 20.0;\n float weight = 2.0 * (percent - percent * percent);\n vec4 texel = texture2D(map, tUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n gl_FragColor.a = 1.0 - abs(strength);\n } else {\n gl_FragColor = texture2D(map, tUv);\n }\n }\n `,\n });\n\n mesh = new Mesh(geometry, material);\n }\n\n function setMap(value) {\n uMap.value = value;\n updateUV();\n }\n\n function updateUV() {\n const ratio = three.size.ratio;\n const iRatio = uMap.value.image.width / uMap.value.image.height;\n uUVOffset.value.set(0, 0);\n uUVScale.value.set(1, 1);\n if (iRatio > ratio) {\n uUVScale.value.x = ratio / iRatio;\n uUVOffset.value.x = (1 - uUVScale.value.x) / 2;\n } else {\n uUVScale.value.y = iRatio / ratio;\n uUVOffset.value.y = (1 - uUVScale.value.y) / 2;\n }\n }\n}\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["const","let","Plane","i","o","OrthographicCamera","this","PerspectiveCamera","Group","Scene","AmbientLight","DirectionalLight","PointLight","SpotLight","TShaderMaterial","Mesh","TMesh","InstancedMesh","Sprite","EffectComposer","RenderPass","BokehPass","FilmPass","HalftonePass","SMAAPass","UnrealBloomPass","ShaderMaterial","Geometry","_createBlock","_createVNode","_renderSlot"],"mappings":"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"} \ No newline at end of file diff --git a/build/trois.module.min.js b/build/trois.module.min.js index 955d2e0..acdc708 100644 --- a/build/trois.module.min.js +++ b/build/trois.module.min.js @@ -1,2 +1,2 @@ -import{h as e,toRef as t,watch as i,inject as r,resolveComponent as n,openBlock as s,createBlock as a,withCtx as o,createVNode as h,renderSlot as u}from"vue";import{Vector2 as m,Vector3 as d,Plane as c,Raycaster as l,WebGLRenderer as f,OrthographicCamera as p,PerspectiveCamera as v,Group as y,Scene as g,Color as x,BoxBufferGeometry as b,CircleBufferGeometry as S,ConeBufferGeometry as w,CylinderBufferGeometry as N,DodecahedronBufferGeometry as C,IcosahedronBufferGeometry as z,LatheBufferGeometry as _,OctahedronBufferGeometry as M,PolyhedronBufferGeometry as P,RingBufferGeometry as T,SphereBufferGeometry as G,TetrahedronBufferGeometry as I,TorusBufferGeometry as R,TorusKnotBufferGeometry as j,Curve as L,TubeBufferGeometry as B,AmbientLight as E,DirectionalLight as k,PointLight as A,SpotLight as D,FrontSide as O,MeshBasicMaterial as U,MeshLambertMaterial as F,TextureLoader as $,MeshMatcapMaterial as W,MeshPhongMaterial as Z,MeshStandardMaterial as H,MeshPhysicalMaterial as q,ShaderChunk as V,UniformsUtils as X,ShaderLib as Y,ShaderMaterial as K,MeshToonMaterial as Q,CubeTextureLoader as J,CubeRefractionMapping as ee,Mesh as te,PlaneBufferGeometry as ie,FontLoader as re,TextBufferGeometry as ne,WebGLCubeRenderTarget as se,RGBFormat as ae,LinearMipmapLinearFilter as oe,CubeCamera as he,BackSide as ue,DoubleSide as me,InstancedMesh as de,SpriteMaterial as ce,Sprite as le,WebGLRenderTarget as fe,ObjectSpaceNormalMap as pe,Object3D as ve,Face3 as ye,MathUtils as ge,InstancedBufferAttribute as xe}from"three";import{OrbitControls as be}from"three/examples/jsm/controls/OrbitControls.js";import{EffectComposer as Se}from"three/examples/jsm/postprocessing/EffectComposer.js";import{RenderPass as we}from"three/examples/jsm/postprocessing/RenderPass.js";import{BokehPass as Ne}from"three/examples/jsm/postprocessing/BokehPass.js";import{FilmPass as Ce}from"three/examples/jsm/postprocessing/FilmPass.js";import{ShaderPass as ze}from"three/examples/jsm/postprocessing/ShaderPass.js";import{FXAAShader as _e}from"three/examples/jsm/shaders/FXAAShader.js";import{HalftonePass as Me}from"three/examples/jsm/postprocessing/HalftonePass.js";import{SMAAPass as Pe}from"three/examples/jsm/postprocessing/SMAAPass.js";import{UnrealBloomPass as Te}from"three/examples/jsm/postprocessing/UnrealBloomPass.js";import{Pass as Ge}from"three/examples/jsm/postprocessing/Pass.js";import{gsap as Ie,Power4 as Re}from"gsap";import{Geometry as je}from"three/examples/jsm/deprecated/Geometry.js";import{GLTFLoader as Le}from"three/examples/jsm/loaders/GLTFLoader.js";function Be(){var e={canvas:null,antialias:!0,alpha:!1,autoClear:!0,orbit_ctrl:!1,mouse_move:!1,mouse_raycast:!1,mouse_over:!1,click:!1,resize:!0,width:0,height:0},t={width:1,height:1,wWidth:1,wHeight:1,ratio:1},i=[],r=[],n=[],s=new m,a=new d,o=new c(new d(0,0,1),0),h=new l,u=[],p={conf:e,renderer:null,camera:null,cameraCtrl:null,materials:{},scene:null,size:t,mouse:s,mouseV3:a,init:function(t){t&&Object.entries(t).forEach((function(t){var i=t[0],r=t[1];e[i]=r}));if(!p.scene)return void console.error("Missing Scene");if(!p.camera)return void console.error("Missing Camera");p.renderer=new f({canvas:e.canvas,antialias:e.antialias,alpha:e.alpha}),p.renderer.autoClear=e.autoClear,e.orbit_ctrl&&(p.orbitCtrl=new be(p.camera,p.renderer.domElement),e.orbit_ctrl instanceof Object&&Object.entries(e.orbit_ctrl).forEach((function(e){var t=e[0],i=e[1];p.orbitCtrl[t]=i})));e.width&&e.height?S(e.width,e.height):e.resize&&(b(),window.addEventListener("resize",b));e.mouse_move=e.mouse_move||e.mouse_over,e.mouse_move&&("body"===e.mouse_move?p.mouse_move_element=document.body:p.mouse_move_element=p.renderer.domElement,p.mouse_move_element.addEventListener("mousemove",y),p.mouse_move_element.addEventListener("mouseleave",g));e.click&&p.renderer.domElement.addEventListener("click",v);return i.forEach((function(e){return e()})),!0},dispose:function(){n=[],window.removeEventListener("resize",b),p.mouse_move_element&&(p.mouse_move_element.removeEventListener("mousemove",y),p.mouse_move_element.removeEventListener("mouseleave",g));p.renderer.domElement.removeEventListener("click",v),p.orbitCtrl&&p.orbitCtrl.dispose();this.renderer.dispose()},render:function(){p.orbitCtrl&&p.orbitCtrl.update();n.forEach((function(e){return e()})),p.renderer.render(p.scene,p.camera)},renderC:function(){p.orbitCtrl&&p.orbitCtrl.update();n.forEach((function(e){return e()})),p.composer.render()},setSize:S,onAfterInit:function(e){i.push(e)},onAfterResize:function(e){r.push(e)},offAfterResize:function(e){r=r.filter((function(t){return t!==e}))},onBeforeRender:function(e){n.push(e)},offBeforeRender:function(e){n=n.filter((function(t){return t!==e}))},addIntersectObject:function(e){-1===u.indexOf(e)&&u.push(e)},removeIntersectObject:function(e){var t=u.indexOf(e);-1!==t&&u.splice(t,1)}};function v(e){s.x=e.clientX/t.width*2-1,s.y=-e.clientY/t.height*2+1,h.setFromCamera(s,p.camera);for(var i=h.intersectObjects(u),r=0;r1?1:i)}function Oe(e,t,i){e.x=De(e.x,t.x,i),e.y=De(e.y,t.y,i)}function Ue(e,t,i){e.x=De(e.x,t.x,i),e.y=De(e.y,t.y,i),e.z=De(e.z,t.z,i)}function Fe(e,t,i){return ei?i:e}function $e(e,t){return void 0===t&&(t=1024),"https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d/"+t+"/"+(""+e+function(e){switch(e){case 64:return"-64px";case 128:return"-128px";case 256:return"-256px";case 512:return"-512px";default:return""}}(t)+".png")}function We(e,r,n){if(e[r]){var s=t(e,r);ke(n,s.value),i(s,(function(){ke(n,s.value)}),{deep:!0})}}var Ze={inject:["three"],props:{left:{type:Number,default:-1},right:{type:Number,default:1},top:{type:Number,default:1},bottom:{type:Number,default:-1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:1},position:{type:[Object,d],default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new p(this.left,this.right,this.top,this.bottom,this.near,this.far),We(this,"position",this.camera.position),["left","right","top","bottom","near","far","zoom"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"OrthographicCamera"},He={inject:["three"],props:{aspect:{type:Number,default:1},far:{type:Number,default:2e3},fov:{type:Number,default:50},near:{type:Number,default:.1},position:{type:[Object,d],default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new v(this.fov,this.aspect,this.near,this.far),We(this,"position",this.camera.position),["aspect","far","fov","near"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"PerspectiveCamera"},qe={inject:["three","scene"],props:{position:Object,rotation:Object,scale:Object},setup:function(e){var t=r("group",r("scene")),i=new y;return We(e,"position",i.position),We(e,"rotation",i.rotation),We(e,"scale",i.scale),{parent:t,group:i}},provide:function(){return{group:this.group}},created:function(){this.parent.add(this.group)},unmounted:function(){this.parent.remove(this.group)},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Group"},Ve={inject:["three"],props:{id:String,background:[String,Number]},setup:function(e){var t=new g;return e.background&&(t.background=new x(e.background)),i((function(){return e.background}),(function(e){t.background=new x(e)})),{scene:t}},provide:function(){return{scene:this.scene}},mounted:function(){this.three.scene||(this.three.scene=this.scene)},methods:{},render:function(){return this.$slots.default?this.$slots.default():[]}},Xe={emits:["ready"],inject:["mesh"],props:{rotateX:Number,rotateY:Number,rotateZ:Number},created:function(){var e=this;this.mesh||console.error("Missing parent Mesh"),this.watchProps=[],Object.entries(this.$props).forEach((function(t){return e.watchProps.push(t[0])}))},beforeMount:function(){this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry)},mounted:function(){this.addWatchers()},unmounted:function(){this.geometry.dispose()},methods:{rotateGeometry:function(){this.rotateX&&this.geometry.rotateX(this.rotateX),this.rotateY&&this.geometry.rotateY(this.rotateY),this.rotateZ&&this.geometry.rotateZ(this.rotateZ)},addWatchers:function(){var e=this;this.watchProps.forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry),e.dispose()}},render:function(){return[]}},Ye={extends:Xe,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},methods:{createGeometry:function(){var e=this.width,t=this.height,i=this.depth;this.size&&(e=this.size,t=this.size,i=this.size),this.geometry=new b(e,t,i,this.widthSegments,this.heightSegments,this.depthSegments)}}},Ke={extends:Xe,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.segments,this.thetaStart,this.thetaLength)}}},Qe={extends:Xe,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new w(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},Je={extends:Xe,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new N(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},et={extends:Xe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new C(this.radius,this.detail)}}},tt={extends:Xe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new z(this.radius,this.detail)}}},it={extends:Xe,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new _(this.points,this.segments,this.phiStart,this.phiLength)}}},rt={extends:Xe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.detail)}}},nt={extends:Xe,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new P(this.vertices,this.indices,this.radius,this.detail)}}},st={extends:Xe,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new T(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}}},at={extends:Xe,props:{radius:{type:Number,default:1},widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},methods:{createGeometry:function(){this.geometry=new G(this.radius,this.widthSegments,this.heightSegments)}}},ot={extends:Xe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new I(this.radius,this.detail)}}},ht={extends:Xe,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new R(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}}},ut={extends:Xe,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},methods:{createGeometry:function(){this.geometry=new j(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}}},mt={extends:Xe,props:{path:L,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radiusSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},methods:{createGeometry:function(){this.geometry=new B(this.path,this.tubularSegments,this.radius,this.radiusSegments,this.closed)}}},dt={inject:{scene:"scene",parent:{from:"group",default:function(){return r("scene")}}},props:{color:{type:String,default:"#ffffff"},intensity:{type:Number,default:1},castShadow:{type:Boolean,default:!1},shadowMapSize:Object,position:Object},mounted:function(){var e=this;We(this,"position",this.light.position),this.light.target&&We(this,"target",this.light.target.position),this.light.shadow&&(this.light.castShadow=this.castShadow,ke(this.light.shadow.mapSize,this.shadowMapSize)),["color","intensity","castShadow"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.light.color=new x(e.color):e.light[t]=e[t]}))})),this.parent.add(this.light),this.light.target&&this.parent.add(this.light.target)},unmounted:function(){this.parent.remove(this.light),this.light.target&&this.parent.remove(this.light.target)},render:function(){return[]},__hmrId:"Light"},ct={extends:dt,created:function(){this.light=new E(this.color,this.intensity)},__hmrId:"AmbientLight"},lt={extends:dt,props:{target:Object},created:function(){this.light=new k(this.color,this.intensity)},__hmrId:"DirectionalLight"},ft={extends:dt,props:{distance:{type:Number,default:0},decay:{type:Number,default:1}},created:function(){this.light=new A(this.color,this.intensity,this.distance,this.decay)},__hmrId:"PointLight"},pt={extends:dt,props:{angle:{type:Number,default:Math.PI/3},decay:{type:Number,default:1},distance:{type:Number,default:0},penumbra:{type:Number,default:0},target:Object},created:function(){var e=this;this.light=new D(this.color,this.intensity,this.distance,this.angle,this.penumbra,this.decay),["angle","decay","distance","penumbra"].forEach((function(t){i((function(){return e[t]}),(function(){e.light[t]=e[t]}))}))},__hmrId:"SpotLight"},vt={inject:["three","mesh"],props:{id:String,color:{type:[String,Number],default:"#ffffff"},depthTest:{type:Boolean,default:!0},depthWrite:{type:Boolean,default:!0},flatShading:Boolean,fog:{type:Boolean,default:!0},opacity:{type:Number,default:1},side:{type:Number,default:O},transparent:Boolean,vertexColors:Boolean},provide:function(){return{material:this}},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this._addWatchers(),this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},methods:{setProp:function(e,t,i){void 0===i&&(i=!1),this.material[e]=t,this.material.needsUpdate=i},setTexture:function(e,t){void 0===t&&(t="map"),this.setProp(t,e,!0)},_addWatchers:function(){var e=this;["color","depthTest","depthWrite","fog","opacity","side","transparent"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.material.color.set(e.color):e.material[t]=e[t]}))}))}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Material"},yt={extends:vt,methods:{createMaterial:function(){this.material=new U(Ae(this.$props,["id"]))}},__hmrId:"BasicMaterial"},gt={extends:vt,methods:{createMaterial:function(){this.material=new F(Ae(this.$props,["id"]))}},__hmrId:"LambertMaterial"},xt={extends:vt,props:{src:String,name:String},methods:{createMaterial:function(){var e=this.name?$e(this.name):this.src,t=Ae(this.$props,["id","src","name"]);t.matcap=(new $).load(e),this.material=new W(t)}},__hmrId:"MatcapMaterial"},bt={extends:vt,props:{emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},reflectivity:{type:Number,default:1},shininess:{type:Number,default:30},specular:{type:[String,Number],default:1118481}},methods:{createMaterial:function(){this.material=new Z(Ae(this.$props,["id"]))},addWatchers:function(){var e=this;["emissive","emissiveIntensity","reflectivity","shininess","specular"].forEach((function(t){i((function(){return e[t]}),(function(i){"emissive"===t||"specular"===t?e.material[t].set(i):e.material[t]=i}))}))}},__hmrId:"PhongMaterial"},St={aoMapIntensity:{type:Number,default:1},bumpScale:{type:Number,default:1},displacementBias:{type:Number,default:0},displacementScale:{type:Number,default:1},emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},envMapIntensity:{type:Number,default:1},lightMapIntensity:{type:Number,default:1},metalness:{type:Number,default:0},normalScale:{type:Object,default:function(){return new m(1,1)}},roughness:{type:Number,default:1},refractionRatio:{type:Number,default:.98},wireframe:Boolean},wt={extends:vt,props:St,methods:{createMaterial:function(){this.material=new H(Ae(this.$props,["id","normalScale"]))},addWatchers:function(){var e=this;Object.keys(St).forEach((function(t){"normalScale"!==t&&i((function(){return e[t]}),(function(i){"emissive"===t?e.material[t].set(i):e.material[t]=i}))})),We(this,"normalScale",this.material.normalScale)}},__hmrId:"StandardMaterial"},Nt={extends:wt,methods:{createMaterial:function(){this.material=new q(Ae(this.$props,["id"]))}},__hmrId:"PhysicalMaterial"};var Ct,zt,_t,Mt=V.meshphong_frag.slice(0,V.meshphong_frag.indexOf("void main() {")),Pt=V.meshphong_frag.slice(V.meshphong_frag.indexOf("void main() {")),Tt={uniforms:X.merge([Y.phong.uniforms,{thicknessColor:{value:new x(6718871)},thicknessDistortion:{value:.1},thicknessAmbient:{value:0},thicknessAttenuation:{value:.1},thicknessPower:{value:2},thicknessScale:{value:10}}]),vertexShader:"\n #define USE_UV\n "+V.meshphong_vert+"\n ",fragmentShader:"\n #define USE_UV\n #define SUBSURFACE\n\n "+Mt+"\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n "+Pt.replace("#include ",(Ct=V.lights_fragment_begin,zt="RE_Direct( directLight, geometry, material, reflectedLight );",_t="\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n ",Ct.split(zt).join(_t)))},Gt={extends:{inject:["three","mesh"],props:{id:String,uniforms:Object,vertexShader:String,fragmentShader:String},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},render:function(){return[]},__hmrId:"ShaderMaterial"},props:{diffuse:{type:String,default:"#ffffff"},thicknessColor:{type:String,default:"#ffffff"},thicknessDistortion:{type:Number,default:.4},thicknessAmbient:{type:Number,default:.01},thicknessAttenuation:{type:Number,default:.7},thicknessPower:{type:Number,default:2},thicknessScale:{type:Number,default:4},transparent:{type:Boolean,default:!1},opacity:{type:Number,default:1},vertexColors:{type:Boolean,default:!1}},methods:{createMaterial:function(){var e=Tt,t=X.clone(e.uniforms);Object.entries(this.$props).forEach((function(e){var i=e[0],r=e[1];"diffuse"!==i&&"thicknessColor"!==i||(r=new x(r)),"id"!==i&&"transparent"!==i&&"vertexColors"!==i&&(t[i].value=r)})),this.material=new K(Object.assign({},e,{uniforms:t,lights:!0,transparent:this.transparent,vertexColors:this.vertexColors}))}},__hmrId:"SubSurfaceMaterial"},It={extends:vt,methods:{createMaterial:function(){this.material=new Q(Ae(this.$props,["id"]))}},__hmrId:"ToonMaterial"},Rt={inject:["material"],emits:["loaded"],props:{src:String,onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"map"}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.src}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new $).load(this.src,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id)},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},jt={inject:["material"],emits:["loaded"],props:{path:String,urls:{type:Array,default:["px.jpg","nx.jpg","py.jpg","ny.jpg","pz.jpg","nz.jpg"]},onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"envMap"},refraction:Boolean,refractionRatio:{type:Number,default:.98}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.path}),this.refreshTexture),i((function(){return e.urls}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new J).setPath(this.path).load(this.urls,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id),this.refraction&&(this.texture.mapping=ee,this.material.setProp("refractionRatio",this.refractionRatio))},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},Lt={inject:{three:"three",scene:"scene",rendererComponent:"rendererComponent",parent:{from:"group",default:function(){return r("scene")}}},emits:["ready"],props:{materialId:String,position:Object,rotation:Object,scale:Object,castShadow:Boolean,receiveShadow:Boolean,onHover:Function,onClick:Function},provide:function(){return{mesh:this}},mounted:function(){this.geometry&&!this.mesh&&this.initMesh()},unmounted:function(){this.mesh&&(this.three.removeIntersectObject(this.mesh),this.parent.remove(this.mesh)),this.geometry&&this.geometry.dispose(),this.material&&!this.materialId&&this.material.dispose()},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new te(this.geometry,this.material),this.onHover&&(this.mesh.onHover=function(t){e.onHover({component:e,over:t})},this.three.addIntersectObject(this.mesh)),this.onClick&&(this.mesh.onClick=function(t){e.onClick({component:e,event:t})},this.three.addIntersectObject(this.mesh)),this.bindProps(),this.parent.add(this.mesh),this.$emit("ready")},bindProps:function(){var e=this;We(this,"position",this.mesh.position),We(this,"rotation",this.mesh.rotation),We(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),i((function(){return e.materialId}),(function(){e.mesh.material=e.three.materials[e.materialId]}))},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.mesh.geometry=this.geometry,e.dispose()}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Mesh"},Bt={extends:Lt,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry(),["size","width","height","depth","widthSegments","heightSegments","depthSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.size?this.geometry=new b(this.size,this.size,this.size):this.geometry=new b(this.width,this.height,this.depth)}},__hmrId:"Box"},Et={extends:Lt,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","segments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.segments,this.thetaStart,this.thetaLength)}},__hmrId:"Circle"},kt={extends:Lt,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new w(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cone"},At={extends:Lt,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radiusTop","radiusBottom","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new N(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cylinder"},Dt={extends:Lt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new C(this.radius,this.detail)}},__hmrId:"Dodecahedron"},Ot={extends:Lt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new z(this.radius,this.detail)}},__hmrId:"Icosahedron"},Ut={extends:Lt,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["points","segments","phiStart","phiLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new _(this.points,this.segments,this.phiStart,this.phiLength)}},__hmrId:"Lathe"},Ft={extends:Lt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.detail)}},__hmrId:"Octahedron"},$t={extends:Lt,props:{width:{type:Number,default:1},height:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry();["width","height","widthSegments","heightSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ie(this.width,this.height,this.widthSegments,this.heightSegments)}},__hmrId:"Plane"},Wt={extends:Lt,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["vertices","indices","radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new P(this.vertices,this.indices,this.radius,this.detail)}},__hmrId:"Polyhedron"},Zt={extends:Lt,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["innerRadius","outerRadius","thetaSegments","phiSegments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new T(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}},__hmrId:"Ring"},Ht={extends:Lt,props:{radius:Number,widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},watch:{radius:function(){this.refreshGeometry()},widthSegments:function(){this.refreshGeometry()},heightSegments:function(){this.refreshGeometry()}},created:function(){this.createGeometry()},methods:{createGeometry:function(){this.geometry=new G(this.radius,this.widthSegments,this.heightSegments)}},__hmrId:"Sphere"},qt={extends:Lt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new I(this.radius,this.detail)}},__hmrId:"Tetrahedron"},Vt={text:String,fontSrc:String,size:{type:Number,default:80},height:{type:Number,default:5},depth:{type:Number,default:1},curveSegments:{type:Number,default:12},bevelEnabled:{type:Boolean,default:!1},bevelThickness:{type:Number,default:10},bevelSize:{type:Number,default:8},bevelOffset:{type:Number,default:0},bevelSegments:{type:Number,default:5},align:{type:[Boolean,String],default:!1}},Xt={extends:Lt,props:Object.assign({},Vt),created:function(){var e=this;["text","size","height","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align"].forEach((function(t){i((function(){return e[t]}),(function(){e.font&&e.refreshGeometry()}))})),(new re).load(this.fontSrc,(function(t){e.font=t,e.createGeometry(),e.initMesh()}))},methods:{createGeometry:function(){this.geometry=new ne(this.text,{font:this.font,size:this.size,height:this.height,depth:this.depth,curveSegments:this.curveSegments,bevelEnabled:this.bevelEnabled,bevelThickness:this.bevelThickness,bevelSize:this.bevelSize,bevelOffset:this.bevelOffset,bevelSegments:this.bevelSegments}),"center"===this.align&&this.geometry.center()}}},Yt={extends:Lt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","arc"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new R(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}},__hmrId:"Torus"},Kt={extends:Lt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","p","q"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new j(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}},__hmrId:"TorusKnot"},Qt={extends:Lt,props:{path:L,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radialSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},created:function(){var e=this;this.createGeometry();["path","tubularSegments","radius","radialSegments","closed"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new B(this.path,this.tubularSegments,this.radius,this.radialSegments,this.closed)}},__hmrId:"Tube"},Jt={extends:Lt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initGem(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.meshBack&&this.parent.remove(this.meshBack),this.materialBack&&this.materialBack.dispose()},methods:{initGem:function(){var e=new se(this.cubeRTSize,{format:ae,generateMipmaps:!0,minFilter:oe});this.cubeCamera=new he(this.cubeCameraNear,this.cubeCameraFar,e),We(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.side=O,this.material.envMap=e.texture,this.material.envMapIntensity=10,this.material.metalness=0,this.material.roughness=0,this.material.opacity=.75,this.material.transparent=!0,this.material.premultipliedAlpha=!0,this.material.needsUpdate=!0,this.materialBack=this.material.clone(),this.materialBack.side=ue,this.materialBack.envMapIntensity=5,this.materialBack.metalness=1,this.materialBack.roughness=0,this.materialBack.opacity=.5,this.meshBack=new te(this.geometry,this.materialBack),We(this,"position",this.meshBack.position),We(this,"rotation",this.meshBack.rotation),We(this,"scale",this.meshBack.scale),this.parent.add(this.meshBack)},updateCubeRT:function(){this.mesh.visible=!1,this.meshBack.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0,this.meshBack.visible=!0}},__hmrId:"Gem"},ei={emits:["loaded"],extends:Lt,props:{src:String,width:Number,height:Number,keepSize:Boolean},created:function(){var e=this;this.createGeometry(),this.createMaterial(),this.initMesh(),i((function(){return e.src}),this.refreshTexture),["width","height"].forEach((function(t){i((function(){return e[t]}),e.resize)})),this.keepSize&&this.three.onAfterResize(this.resize)},methods:{createGeometry:function(){this.geometry=new ie(1,1,1,1)},createMaterial:function(){this.material=new U({side:me,map:this.loadTexture()})},loadTexture:function(){return(new $).load(this.src,this.onLoaded)},refreshTexture:function(){this.texture&&this.texture.dispose(),this.material.map=this.loadTexture(),this.material.needsUpdate=!0},onLoaded:function(e){this.texture=e,this.resize(),this.$emit("loaded")},resize:function(){if(this.texture){var e,t,i=this.three.size,r=this.texture.image.width/this.texture.image.height;this.width&&this.height?(e=this.width*i.wWidth/i.width,t=this.height*i.wHeight/i.height):this.width?t=(e=this.width*i.wWidth/i.width)/r:this.height&&(e=(t=this.height*i.wHeight/i.height)*r),this.mesh.scale.x=e,this.mesh.scale.y=t}}},__hmrId:"Image"},ti={inject:["three","scene"],props:{materialId:String,count:Number,position:Object,castShadow:Boolean,receiveShadow:Boolean},setup:function(){return{parent:r("group",r("scene"))}},provide:function(){return{mesh:this}},beforeMount:function(){this.$slots.default||console.error("Missing Geometry")},mounted:function(){this.initMesh()},unmounted:function(){this.parent.remove(this.mesh)},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new de(this.geometry,this.material,this.count),We(this,"position",this.mesh.position),We(this,"rotation",this.mesh.rotation),We(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),this.parent.add(this.mesh)},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)}},render:function(){return this.$slots.default()},__hmrId:"InstancedMesh"},ii={extends:Lt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new se(this.cubeRTSize,{format:ae,generateMipmaps:!0,minFilter:oe});this.cubeCamera=new he(this.cubeCameraNear,this.cubeCameraFar,e),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"MirrorMesh"},ri={extends:Lt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},refractionRatio:{type:Number,default:.98},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new se(this.cubeRTSize,{mapping:ee,format:ae,generateMipmaps:!0,minFilter:oe});this.cubeCamera=new he(this.cubeCameraNear,this.cubeCameraFar,e),We(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.refractionRatio=this.refractionRatio,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"RefractionMesh"},ni={emits:["ready","loaded"],inject:["three","scene"],props:{src:String,position:Object,scale:Object},setup:function(){return{parent:r("group",r("scene"))}},mounted:function(){this.texture=(new $).load(this.src,this.onLoaded),this.material=new ce({map:this.texture}),this.sprite=new le(this.material),this.geometry=this.sprite.geometry,We(this,"position",this.sprite.position),We(this,"scale",this.sprite.scale),this.parent.add(this.sprite),this.$emit("ready")},unmounted:function(){this.texture.dispose(),this.material.dispose(),this.parent.remove(this.sprite)},methods:{onLoaded:function(){this.updateUV(),this.$emit("loaded")},updateUV:function(){this.iWidth=this.texture.image.width,this.iHeight=this.texture.image.height,this.iRatio=this.iWidth/this.iHeight;var e=.5,t=.5;this.iRatio>1?t=.5/this.iRatio:e=.5/this.iRatio;var i=this.geometry.attributes.position.array;i[0]=-e,i[1]=-t,i[5]=e,i[6]=-t,i[10]=e,i[11]=t,i[15]=-e,i[16]=t,this.geometry.attributes.position.needsUpdate=!0}},render:function(){return[]},__hmrId:"Sprite"},si={setup:function(){return{passes:[]}},inject:["three"],provide:function(){return{passes:this.passes}},mounted:function(){var e=this;this.three.onAfterInit((function(){e.composer=new Se(e.three.renderer),e.three.renderer.autoClear=!1,e.passes.forEach((function(t){e.composer.addPass(t)})),e.three.composer=e.composer,e.resize(),e.three.onAfterResize(e.resize)}))},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){this.composer.setSize(this.three.size.width,this.three.size.height)}},render:function(){return this.$slots.default()},__hmrId:"EffectComposer"},ai={inject:["three","passes"],beforeMount:function(){this.passes||console.error("Missing parent EffectComposer")},unmounted:function(){this.pass.dispose&&this.pass.dispose()},render:function(){return[]},__hmrId:"EffectPass"},oi={extends:ai,mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e=new we(this.three.scene,this.three.camera);this.passes.push(e),this.pass=e},__hmrId:"RenderPass"},hi={extends:ai,props:{focus:{type:Number,default:1},aperture:{type:Number,default:.025},maxblur:{type:Number,default:.01}},watch:{focus:function(){this.pass.uniforms.focus.value=this.focus},aperture:function(){this.pass.uniforms.aperture.value=this.aperture},maxblur:function(){this.pass.uniforms.maxblur.value=this.maxblur}},mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e={focus:this.focus,aperture:this.aperture,maxblur:this.maxblur,width:this.three.size.width,height:this.three.size.height},t=new Ne(this.three.scene,this.three.camera,e);this.passes.push(t),this.pass=t},__hmrId:"BokehPass"},ui={extends:ai,props:{noiseIntensity:{type:Number,default:.5},scanlinesIntensity:{type:Number,default:.05},scanlinesCount:{type:Number,default:4096},grayscale:{type:Number,default:0}},watch:{noiseIntensity:function(){this.pass.uniforms.nIntensity.value=this.noiseIntensity},scanlinesIntensity:function(){this.pass.uniforms.sIntensity.value=this.scanlinesIntensity},scanlinesCount:function(){this.pass.uniforms.sCount.value=this.scanlinesCount},grayscale:function(){this.pass.uniforms.grayscale.value=this.grayscale}},mounted:function(){var e=new Ce(this.noiseIntensity,this.scanlinesIntensity,this.scanlinesCount,this.grayscale);this.passes.push(e),this.pass=e},__hmrId:"FilmPass"},mi={extends:ai,mounted:function(){var e=new ze(_e);this.passes.push(e),this.pass=e,this.three.onAfterResize(this.resize)},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){var e=this.pass.material.uniforms.resolution;e.value.x=1/this.three.size.width,e.value.y=1/this.three.size.height}},__hmrId:"FXAAPass"},di={extends:ai,props:{shape:{type:Number,default:1},radius:{type:Number,default:4},rotateR:{type:Number,default:Math.PI/12*1},rotateG:{type:Number,default:Math.PI/12*2},rotateB:{type:Number,default:Math.PI/12*3},scatter:{type:Number,default:0}},mounted:function(){var e=this,t=new Me(this.three.size.width,this.three.size.height,{});["shape","radius","rotateR","rotateG","rotateB","scatter"].forEach((function(r){t.uniforms[r].value=e[r],i((function(){return e[r]}),(function(){t.uniforms[r].value=e[r]}))})),this.passes.push(t),this.pass=t},__hmrId:"HalftonePass"},ci={extends:ai,mounted:function(){var e=new Pe(this.three.size.width,this.three.size.height);this.passes.push(e),this.pass=e},__hmrId:"SMAAPass"},li="\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fi={uniforms:{tDiffuse:{value:null},blurRadius:{value:0},gradientRadius:{value:0},start:{value:new m},end:{value:new m},delta:{value:new m},texSize:{value:new m}},vertexShader:li,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "};function pi(e,t,r,n){void 0===n&&(n="value"),e[t]&&(r[n]=e[t],i((function(){return e[t]}),(function(e){r[n]=e})))}var vi={extends:ai,props:{blurRadius:{type:Number,default:10},gradientRadius:{type:Number,default:100},start:{type:Object,default:{x:0,y:100}},end:{type:Object,default:{x:10,y:100}}},mounted:function(){var e=this;this.pass=new ze(fi),this.passes.push(this.pass),this.pass1=new ze(fi),this.passes.push(this.pass1);var t=this.uniforms=this.pass.uniforms,r=this.uniforms1=this.pass1.uniforms;r.blurRadius=t.blurRadius,r.gradientRadius=t.gradientRadius,r.start=t.start,r.end=t.end,r.texSize=t.texSize,pi(this,"blurRadius",t.blurRadius),pi(this,"gradientRadius",t.gradientRadius),this.updateFocusLine(),["start","end"].forEach((function(t){i((function(){return e[t]}),e.updateFocusLine)})),this.pass.setSize=function(e,i){t.texSize.value.set(e,i)}},methods:{updateFocusLine:function(){this.uniforms.start.value.copy(this.start),this.uniforms.end.value.copy(this.end);var e=(new m).copy(this.end).sub(this.start).normalize();this.uniforms.delta.value.copy(e),this.uniforms1.delta.value.set(-e.y,e.x)}},__hmrId:"TiltShiftPass"},yi={extends:ai,props:{strength:{type:Number,default:1.5},radius:{type:Number,default:0},threshold:{type:Number,default:0}},watch:{strength:function(){this.pass.strength=this.strength},radius:function(){this.pass.radius=this.radius},threshold:function(){this.pass.threshold=this.threshold}},mounted:function(){var e=new m(this.three.size.width,this.three.size.height),t=new Te(e,this.strength,this.radius,this.threshold);this.passes.push(t),this.pass=t},__hmrId:"UnrealBloomPass"},gi={uniforms:{tDiffuse:{value:null},center:{value:new m(.5,.5)},strength:{value:0}},vertexShader:li,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "},xi={extends:ai,props:{center:{type:Object,default:{x:.5,y:.5}},strength:{type:Number,default:.5}},mounted:function(){this.pass=new ze(gi),this.passes.push(this.pass);var e=this.uniforms=this.pass.uniforms;We(this,"center",e.center.value),pi(this,"strength",e.strength)},__hmrId:"ZoomBlurPass"},bi="\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n",Si={extends:ei,props:{widthSegments:{type:Number,default:20},heightSegments:{type:Number,default:20},timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:1},zCoef:{type:Number,default:5},dispCoef:{type:Number,default:.05}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.zCoef};i((function(){return e.zCoef}),(function(e){r.value=e}));var n={value:e.dispCoef};return i((function(){return e.dispCoef}),(function(e){n.value=e})),{uTime:{value:0},uNoiseCoef:t,uZCoef:r,uDispCoef:n}},mounted:function(){this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{createGeometry:function(){this.geometry=new ie(1,1,this.widthSegments,this.heightSegments)},createMaterial:function(){var e=this;this.material=new U({side:me,map:this.loadTexture()}),this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uZCoef=e.uZCoef,t.uniforms.uDispCoef=e.uDispCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n "+bi+"\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include "," \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n "),t.fragmentShader="\n uniform float uDispCoef;\n varying float vNoise;\n "+t.fragmentShader,t.fragmentShader=t.fragmentShader.replace("#include ","\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n "),e.materialShader=t}},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisyImage"},wi={extends:$t,props:{timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:5},deltaCoef:{type:Number,default:1/512},displacementScale:{type:Number,default:5}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:new m(e.deltaCoef,e.deltaCoef)};return i((function(){return e.deltaCoef}),(function(e){r.value.set(e,e)})),{uTime:{value:0},uNoiseCoef:t,uDelta:r}},mounted:function(){var e=this;this.init(),i((function(){return e.displacementScale}),(function(t){e.material.displacementScale=t})),this.startTime=Date.now(),this.three.onBeforeRender(this.update)},unmounted:function(){this.three.offBeforeRender(this.update),this.fsQuad.dispose(),this.dispRT.dispose(),this.dispMat.dispose(),this.normRT.dispose(),this.normMat.dispose()},methods:{init:function(){this.fsQuad=new Ge.FullScreenQuad,this.dispRT=new fe(512,512,{depthBuffer:!1,stencilBuffer:!1}),this.dispMat=new K({uniforms:{uTime:this.uTime,uNoiseCoef:this.uNoiseCoef},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n \n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v)\n{\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n // First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n // Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n // Permutations\n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n // Gradients: 7x7 points over a square, mapped onto an octahedron.\n // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n // Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n}\n\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n "}),this.normRT=new fe(512,512,{depthBuffer:!1,stencilBuffer:!1}),this.normMat=new K({uniforms:{dispMap:{value:this.dispRT.texture},delta:this.uDelta},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n "}),this.material.displacementMap=this.dispRT.texture,this.material.displacementScale=this.displacementScale,this.material.normalMap=this.normRT.texture,this.material.normalMapType=pe},update:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef,this.renderDisp()},renderDisp:function(){this.renderMat(this.dispMat,this.dispRT),this.renderMat(this.normMat,this.normRT)},renderMat:function(e,t){var i=this.three.renderer;this.fsQuad.material=e;var r=i.getRenderTarget();i.setRenderTarget(t),this.fsQuad.render(i),i.setRenderTarget(r)}},__hmrId:"NoisyPlane"},Ni={extends:Ht,props:{radius:{type:Number,default:20},widthSegments:{type:Number,default:128},heightSegments:{type:Number,default:128},timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:.05},dispCoef:{type:Number,default:5}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.dispCoef};return i((function(){return e.dispCoef}),(function(e){r.value=e})),{uTime:{value:0},uNoiseCoef:t,uDispCoef:r}},mounted:function(){this.updateMaterial(),this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{updateMaterial:function(){var e=this;this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uDispCoef=e.uDispCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n \n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nfloat mod289(float x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nfloat permute(float x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\nfloat taylorInvSqrt(float r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nvec4 grad4(float j, vec4 ip)\n{\n const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n vec4 p,s;\n\n p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n s = vec4(lessThan(p, vec4(0.0)));\n p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\n return p;\n}\n\n// (sqrt(5) - 1)/4 = F4, used once below\n#define F4 0.309016994374947451\n\nfloat snoise(vec4 v)\n{\n const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4\n 0.276393202250021, // 2 * G4\n 0.414589803375032, // 3 * G4\n -0.447213595499958); // -1 + 4 * G4\n\n // First corner\n vec4 i = floor(v + dot(v, vec4(F4)) );\n vec4 x0 = v - i + dot(i, C.xxxx);\n\n // Other corners\n\n // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n vec4 i0;\n vec3 isX = step( x0.yzw, x0.xxx );\n vec3 isYZ = step( x0.zww, x0.yyz );\n // i0.x = dot( isX, vec3( 1.0 ) );\n i0.x = isX.x + isX.y + isX.z;\n i0.yzw = 1.0 - isX;\n // i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n i0.y += isYZ.x + isYZ.y;\n i0.zw += 1.0 - isYZ.xy;\n i0.z += isYZ.z;\n i0.w += 1.0 - isYZ.z;\n\n // i0 now contains the unique values 0,1,2,3 in each channel\n vec4 i3 = clamp( i0, 0.0, 1.0 );\n vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n vec4 x1 = x0 - i1 + C.xxxx;\n vec4 x2 = x0 - i2 + C.yyyy;\n vec4 x3 = x0 - i3 + C.zzzz;\n vec4 x4 = x0 + C.wwww;\n\n // Permutations\n i = mod289(i);\n float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n vec4 j1 = permute( permute( permute( permute (\n i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\n // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope\n // 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n vec4 p0 = grad4(j0, ip);\n vec4 p1 = grad4(j1.x, ip);\n vec4 p2 = grad4(j1.y, ip);\n vec4 p3 = grad4(j1.z, ip);\n vec4 p4 = grad4(j1.w, ip);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n p4 *= taylorInvSqrt(dot(p4,p4));\n\n // Mix contributions from the five corners\n vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n m0 = m0 * m0;\n m1 = m1 * m1;\n return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\n}\n\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include ","\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n "),e.materialShader=t},this.material.needsupdate=!0},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisySphere"},Ci={extends:Xt,props:{timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:.015},zCoef:{type:Number,default:10}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.zCoef};return i((function(){return e.zCoef}),(function(e){r.value=e})),{uTime:{value:0},uNoiseCoef:t,uZCoef:r}},mounted:function(){this.updateMaterial(),this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{updateMaterial:function(){var e=this;this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uZCoef=e.uZCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n "+bi+"\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include "," \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n "),e.materialShader=t},this.material.needsupdate=!0},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisyText"},zi=function(e){var t=this;Object.entries(e).forEach((function(e){var i=e[0],r=e[1];t[i]=r})),this.o3d=new ve,this.uProgress={value:0},this.uvScale=new m,this.initMaterial(),this.initPlane()};zi.prototype.initMaterial=function(){var e=this;this.material=new U({side:me,transparent:!0,map:this.texture,onBeforeCompile:function(t){t.uniforms.progress=e.uProgress,t.uniforms.uvScale={value:e.uvScale},t.vertexShader="\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include ","\n #include \n vUv = vUv * uvScale + uvOffset;\n "),t.vertexShader=t.vertexShader.replace("#include ","\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n ")}})},zi.prototype.initPlane=function(){var e=this.screen,t=e.width,i=e.wWidth,r=e.wHeight;this.wSize=this.size*i/t,this.nx=Math.ceil(i/this.wSize)+1,this.ny=Math.ceil(r/this.wSize)+1,this.icount=this.nx*this.ny,this.initGeometry(),this.initUV(),this.initAnimAttributes(),this.imesh&&this.o3d.remove(this.imesh),this.imesh=new de(this.bGeometry,this.material,this.icount),this.o3d.add(this.imesh);for(var n=new ve,s=0,a=-(i-(i-this.nx*this.wSize))/2+this.dx,o=0;ot?this.uvScale.set(1/this.nx,t/e/this.ny):this.uvScale.set(e/t/this.nx,1/this.ny);for(var i=this.uvScale.x*this.nx,r=this.uvScale.y*this.ny,n=new m,s=new Float32Array(2*this.icount),a=0;a0?this.setTargetProgress(this.targetProgress+.05):this.setTargetProgress(this.targetProgress-.05)},onClick:function(e){e.clientY0&&r1?1:i)}function Oe(e,t,i){e.x=De(e.x,t.x,i),e.y=De(e.y,t.y,i)}function Ue(e,t,i){e.x=De(e.x,t.x,i),e.y=De(e.y,t.y,i),e.z=De(e.z,t.z,i)}function Fe(e,t,i){return ei?i:e}function $e(e,t){return void 0===t&&(t=1024),"https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d/"+t+"/"+(""+e+function(e){switch(e){case 64:return"-64px";case 128:return"-128px";case 256:return"-256px";case 512:return"-512px";default:return""}}(t)+".png")}function We(e,r,n){if(e[r]){var s=t(e,r);Be(n,s.value),i(s,(function(){Be(n,s.value)}),{deep:!0})}}var Ze={inject:["three"],props:{left:{type:Number,default:-1},right:{type:Number,default:1},top:{type:Number,default:1},bottom:{type:Number,default:-1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:1},position:{type:[Object,d],default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new p(this.left,this.right,this.top,this.bottom,this.near,this.far),We(this,"position",this.camera.position),["left","right","top","bottom","near","far","zoom"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"OrthographicCamera"},He={inject:["three"],props:{aspect:{type:Number,default:1},far:{type:Number,default:2e3},fov:{type:Number,default:50},near:{type:Number,default:.1},position:{type:[Object,d],default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new v(this.fov,this.aspect,this.near,this.far),We(this,"position",this.camera.position),["aspect","far","fov","near"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"PerspectiveCamera"},Ve={inject:["three","scene"],props:{position:Object,rotation:Object,scale:Object},setup:function(e){var t=r("group",r("scene")),i=new g;return We(e,"position",i.position),We(e,"rotation",i.rotation),We(e,"scale",i.scale),{parent:t,group:i}},provide:function(){return{group:this.group}},created:function(){this.parent.add(this.group)},unmounted:function(){this.parent.remove(this.group)},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Group"},qe={inject:["three"],props:{id:String,background:[String,Number]},setup:function(e){var t=new y;return e.background&&(t.background=new x(e.background)),i((function(){return e.background}),(function(e){t.background=new x(e)})),{scene:t}},provide:function(){return{scene:this.scene}},mounted:function(){this.three.scene||(this.three.scene=this.scene)},methods:{},render:function(){return this.$slots.default?this.$slots.default():[]}},Ye={emits:["ready"],inject:["mesh"],props:{rotateX:Number,rotateY:Number,rotateZ:Number},created:function(){var e=this;this.mesh||console.error("Missing parent Mesh"),this.watchProps=[],Object.entries(this.$props).forEach((function(t){return e.watchProps.push(t[0])}))},beforeMount:function(){this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry)},mounted:function(){this.addWatchers()},unmounted:function(){this.geometry.dispose()},methods:{rotateGeometry:function(){this.rotateX&&this.geometry.rotateX(this.rotateX),this.rotateY&&this.geometry.rotateY(this.rotateY),this.rotateZ&&this.geometry.rotateZ(this.rotateZ)},addWatchers:function(){var e=this;this.watchProps.forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry),e.dispose()}},render:function(){return[]}},Xe={extends:Ye,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},methods:{createGeometry:function(){var e=this.width,t=this.height,i=this.depth;this.size&&(e=this.size,t=this.size,i=this.size),this.geometry=new b(e,t,i,this.widthSegments,this.heightSegments,this.depthSegments)}}},Ke={extends:Ye,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.segments,this.thetaStart,this.thetaLength)}}},Qe={extends:Ye,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new w(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},Je={extends:Ye,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new C(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},et={extends:Ye,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new N(this.radius,this.detail)}}},tt={extends:Ye,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new z(this.radius,this.detail)}}},it={extends:Ye,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new _(this.points,this.segments,this.phiStart,this.phiLength)}}},rt={extends:Ye,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.detail)}}},nt={extends:Ye,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new P(this.vertices,this.indices,this.radius,this.detail)}}},st={extends:Ye,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new T(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}}},at={extends:Ye,props:{radius:{type:Number,default:1},widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},methods:{createGeometry:function(){this.geometry=new G(this.radius,this.widthSegments,this.heightSegments)}}},ot={extends:Ye,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new I(this.radius,this.detail)}}},ht={extends:Ye,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new R(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}}},ut={extends:Ye,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},methods:{createGeometry:function(){this.geometry=new L(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}}},mt={extends:Ye,props:{path:j,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radiusSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},methods:{createGeometry:function(){this.geometry=new k(this.path,this.tubularSegments,this.radius,this.radiusSegments,this.closed)}}},dt={inject:{scene:"scene",parent:{from:"group",default:function(){return r("scene")}}},props:{color:{type:String,default:"#ffffff"},intensity:{type:Number,default:1},castShadow:{type:Boolean,default:!1},shadowMapSize:Object,position:Object},mounted:function(){var e=this;We(this,"position",this.light.position),this.light.target&&We(this,"target",this.light.target.position),this.light.shadow&&(this.light.castShadow=this.castShadow,Be(this.light.shadow.mapSize,this.shadowMapSize)),["color","intensity","castShadow"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.light.color=new x(e.color):e.light[t]=e[t]}))})),this.parent.add(this.light),this.light.target&&this.parent.add(this.light.target)},unmounted:function(){this.parent.remove(this.light),this.light.target&&this.parent.remove(this.light.target)},render:function(){return[]},__hmrId:"Light"},ct={extends:dt,created:function(){this.light=new E(this.color,this.intensity)},__hmrId:"AmbientLight"},lt={extends:dt,props:{target:Object},created:function(){this.light=new B(this.color,this.intensity)},__hmrId:"DirectionalLight"},ft={extends:dt,props:{distance:{type:Number,default:0},decay:{type:Number,default:1}},created:function(){this.light=new A(this.color,this.intensity,this.distance,this.decay)},__hmrId:"PointLight"},pt={extends:dt,props:{angle:{type:Number,default:Math.PI/3},decay:{type:Number,default:1},distance:{type:Number,default:0},penumbra:{type:Number,default:0},target:Object},created:function(){var e=this;this.light=new D(this.color,this.intensity,this.distance,this.angle,this.penumbra,this.decay),["angle","decay","distance","penumbra"].forEach((function(t){i((function(){return e[t]}),(function(){e.light[t]=e[t]}))}))},__hmrId:"SpotLight"},vt={inject:["three","mesh"],props:{id:String,color:{type:[String,Number],default:"#ffffff"},depthTest:{type:Boolean,default:!0},depthWrite:{type:Boolean,default:!0},flatShading:Boolean,fog:{type:Boolean,default:!0},opacity:{type:Number,default:1},side:{type:Number,default:O},transparent:Boolean,vertexColors:Boolean},provide:function(){return{material:this}},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this._addWatchers(),this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},methods:{setProp:function(e,t,i){void 0===i&&(i=!1),this.material[e]=t,this.material.needsUpdate=i},setTexture:function(e,t){void 0===t&&(t="map"),this.setProp(t,e,!0)},_addWatchers:function(){var e=this;["color","depthTest","depthWrite","fog","opacity","side","transparent"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.material.color.set(e.color):e.material[t]=e[t]}))}))}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Material"},gt={extends:vt,methods:{createMaterial:function(){this.material=new U(Ae(this.$props,["id"]))}},__hmrId:"BasicMaterial"},yt={extends:vt,methods:{createMaterial:function(){this.material=new F(Ae(this.$props,["id"]))}},__hmrId:"LambertMaterial"},xt={extends:vt,props:{src:String,name:String},methods:{createMaterial:function(){var e=this.name?$e(this.name):this.src,t=Ae(this.$props,["id","src","name"]);t.matcap=(new $).load(e),this.material=new W(t)}},__hmrId:"MatcapMaterial"},bt={extends:vt,props:{emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},reflectivity:{type:Number,default:1},shininess:{type:Number,default:30},specular:{type:[String,Number],default:1118481}},methods:{createMaterial:function(){this.material=new Z(Ae(this.$props,["id"]))},addWatchers:function(){var e=this;["emissive","emissiveIntensity","reflectivity","shininess","specular"].forEach((function(t){i((function(){return e[t]}),(function(i){"emissive"===t||"specular"===t?e.material[t].set(i):e.material[t]=i}))}))}},__hmrId:"PhongMaterial"},St={aoMapIntensity:{type:Number,default:1},bumpScale:{type:Number,default:1},displacementBias:{type:Number,default:0},displacementScale:{type:Number,default:1},emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},envMapIntensity:{type:Number,default:1},lightMapIntensity:{type:Number,default:1},metalness:{type:Number,default:0},normalScale:{type:Object,default:function(){return new m(1,1)}},roughness:{type:Number,default:1},refractionRatio:{type:Number,default:.98},wireframe:Boolean},wt={extends:vt,props:St,methods:{createMaterial:function(){this.material=new H(Ae(this.$props,["id","normalScale"]))},addWatchers:function(){var e=this;Object.keys(St).forEach((function(t){"normalScale"!==t&&i((function(){return e[t]}),(function(i){"emissive"===t?e.material[t].set(i):e.material[t]=i}))})),We(this,"normalScale",this.material.normalScale)}},__hmrId:"StandardMaterial"},Ct={extends:wt,methods:{createMaterial:function(){this.material=new V(Ae(this.$props,["id"]))}},__hmrId:"PhysicalMaterial"};var Nt,zt,_t,Mt=q.meshphong_frag.slice(0,q.meshphong_frag.indexOf("void main() {")),Pt=q.meshphong_frag.slice(q.meshphong_frag.indexOf("void main() {")),Tt={uniforms:Y.merge([X.phong.uniforms,{thicknessColor:{value:new x(6718871)},thicknessDistortion:{value:.1},thicknessAmbient:{value:0},thicknessAttenuation:{value:.1},thicknessPower:{value:2},thicknessScale:{value:10}}]),vertexShader:"\n #define USE_UV\n "+q.meshphong_vert+"\n ",fragmentShader:"\n #define USE_UV\n #define SUBSURFACE\n\n "+Mt+"\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n "+Pt.replace("#include ",(Nt=q.lights_fragment_begin,zt="RE_Direct( directLight, geometry, material, reflectedLight );",_t="\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n ",Nt.split(zt).join(_t)))},Gt={extends:{inject:["three","mesh"],props:{id:String,uniforms:Object,vertexShader:String,fragmentShader:String},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},render:function(){return[]},__hmrId:"ShaderMaterial"},props:{diffuse:{type:String,default:"#ffffff"},thicknessColor:{type:String,default:"#ffffff"},thicknessDistortion:{type:Number,default:.4},thicknessAmbient:{type:Number,default:.01},thicknessAttenuation:{type:Number,default:.7},thicknessPower:{type:Number,default:2},thicknessScale:{type:Number,default:4},transparent:{type:Boolean,default:!1},opacity:{type:Number,default:1},vertexColors:{type:Boolean,default:!1}},methods:{createMaterial:function(){var e=Tt,t=Y.clone(e.uniforms);Object.entries(this.$props).forEach((function(e){var i=e[0],r=e[1];"diffuse"!==i&&"thicknessColor"!==i||(r=new x(r)),"id"!==i&&"transparent"!==i&&"vertexColors"!==i&&(t[i].value=r)})),this.material=new K(Object.assign({},e,{uniforms:t,lights:!0,transparent:this.transparent,vertexColors:this.vertexColors}))}},__hmrId:"SubSurfaceMaterial"},It={extends:vt,methods:{createMaterial:function(){this.material=new Q(Ae(this.$props,["id"]))}},__hmrId:"ToonMaterial"},Rt={inject:["material"],emits:["loaded"],props:{src:String,onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"map"}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.src}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new $).load(this.src,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id)},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},Lt={inject:["material"],emits:["loaded"],props:{path:String,urls:{type:Array,default:["px.jpg","nx.jpg","py.jpg","ny.jpg","pz.jpg","nz.jpg"]},onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"envMap"},refraction:Boolean,refractionRatio:{type:Number,default:.98}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.path}),this.refreshTexture),i((function(){return e.urls}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new J).setPath(this.path).load(this.urls,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id),this.refraction&&(this.texture.mapping=ee,this.material.setProp("refractionRatio",this.refractionRatio))},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},jt={inject:{three:"three",scene:"scene",rendererComponent:"rendererComponent",parent:{from:"group",default:function(){return r("scene")}}},emits:["ready"],props:{materialId:String,position:Object,rotation:Object,scale:Object,castShadow:Boolean,receiveShadow:Boolean,onHover:Function,onClick:Function},provide:function(){return{mesh:this}},mounted:function(){this.geometry&&!this.mesh&&this.initMesh()},unmounted:function(){this.mesh&&(this.three.removeIntersectObject(this.mesh),this.parent.remove(this.mesh)),this.geometry&&this.geometry.dispose(),this.material&&!this.materialId&&this.material.dispose()},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new te(this.geometry,this.material),this.onHover&&(this.mesh.onHover=function(t){e.onHover({component:e,over:t})},this.three.addIntersectObject(this.mesh)),this.onClick&&(this.mesh.onClick=function(t){e.onClick({component:e,event:t})},this.three.addIntersectObject(this.mesh)),this.bindProps(),this.parent.add(this.mesh),this.$emit("ready")},bindProps:function(){var e=this;We(this,"position",this.mesh.position),We(this,"rotation",this.mesh.rotation),We(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),i((function(){return e.materialId}),(function(){e.mesh.material=e.three.materials[e.materialId]}))},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.mesh.geometry=this.geometry,e.dispose()}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Mesh"},kt={extends:jt,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry(),["size","width","height","depth","widthSegments","heightSegments","depthSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.size?this.geometry=new b(this.size,this.size,this.size):this.geometry=new b(this.width,this.height,this.depth)}},__hmrId:"Box"},Et={extends:jt,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","segments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.segments,this.thetaStart,this.thetaLength)}},__hmrId:"Circle"},Bt={extends:jt,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new w(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cone"},At={extends:jt,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radiusTop","radiusBottom","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new C(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cylinder"},Dt={extends:jt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new N(this.radius,this.detail)}},__hmrId:"Dodecahedron"},Ot={extends:jt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new z(this.radius,this.detail)}},__hmrId:"Icosahedron"},Ut={extends:jt,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["points","segments","phiStart","phiLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new _(this.points,this.segments,this.phiStart,this.phiLength)}},__hmrId:"Lathe"},Ft={extends:jt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.detail)}},__hmrId:"Octahedron"},$t={extends:jt,props:{width:{type:Number,default:1},height:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry();["width","height","widthSegments","heightSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ie(this.width,this.height,this.widthSegments,this.heightSegments)}},__hmrId:"Plane"},Wt={extends:jt,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["vertices","indices","radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new P(this.vertices,this.indices,this.radius,this.detail)}},__hmrId:"Polyhedron"},Zt={extends:jt,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["innerRadius","outerRadius","thetaSegments","phiSegments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new T(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}},__hmrId:"Ring"},Ht={extends:jt,props:{radius:Number,widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},watch:{radius:function(){this.refreshGeometry()},widthSegments:function(){this.refreshGeometry()},heightSegments:function(){this.refreshGeometry()}},created:function(){this.createGeometry()},methods:{createGeometry:function(){this.geometry=new G(this.radius,this.widthSegments,this.heightSegments)}},__hmrId:"Sphere"},Vt={extends:jt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new I(this.radius,this.detail)}},__hmrId:"Tetrahedron"},qt={text:String,fontSrc:String,size:{type:Number,default:80},height:{type:Number,default:5},depth:{type:Number,default:1},curveSegments:{type:Number,default:12},bevelEnabled:{type:Boolean,default:!1},bevelThickness:{type:Number,default:10},bevelSize:{type:Number,default:8},bevelOffset:{type:Number,default:0},bevelSegments:{type:Number,default:5},align:{type:[Boolean,String],default:!1}},Yt={extends:jt,props:Object.assign({},qt),created:function(){var e=this;["text","size","height","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align"].forEach((function(t){i((function(){return e[t]}),(function(){e.font&&e.refreshGeometry()}))})),(new re).load(this.fontSrc,(function(t){e.font=t,e.createGeometry(),e.initMesh()}))},methods:{createGeometry:function(){this.geometry=new ne(this.text,{font:this.font,size:this.size,height:this.height,depth:this.depth,curveSegments:this.curveSegments,bevelEnabled:this.bevelEnabled,bevelThickness:this.bevelThickness,bevelSize:this.bevelSize,bevelOffset:this.bevelOffset,bevelSegments:this.bevelSegments}),"center"===this.align&&this.geometry.center()}}},Xt={extends:jt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","arc"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new R(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}},__hmrId:"Torus"},Kt={extends:jt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","p","q"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new L(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}},__hmrId:"TorusKnot"},Qt={extends:jt,props:{path:j,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radialSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},created:function(){var e=this;this.createGeometry();["path","tubularSegments","radius","radialSegments","closed"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new k(this.path,this.tubularSegments,this.radius,this.radialSegments,this.closed)}},__hmrId:"Tube"},Jt={extends:jt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initGem(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.meshBack&&this.parent.remove(this.meshBack),this.materialBack&&this.materialBack.dispose()},methods:{initGem:function(){var e=new se(this.cubeRTSize,{format:ae,generateMipmaps:!0,minFilter:oe});this.cubeCamera=new he(this.cubeCameraNear,this.cubeCameraFar,e),We(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.side=O,this.material.envMap=e.texture,this.material.envMapIntensity=10,this.material.metalness=0,this.material.roughness=0,this.material.opacity=.75,this.material.transparent=!0,this.material.premultipliedAlpha=!0,this.material.needsUpdate=!0,this.materialBack=this.material.clone(),this.materialBack.side=ue,this.materialBack.envMapIntensity=5,this.materialBack.metalness=1,this.materialBack.roughness=0,this.materialBack.opacity=.5,this.meshBack=new te(this.geometry,this.materialBack),We(this,"position",this.meshBack.position),We(this,"rotation",this.meshBack.rotation),We(this,"scale",this.meshBack.scale),this.parent.add(this.meshBack)},updateCubeRT:function(){this.mesh.visible=!1,this.meshBack.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0,this.meshBack.visible=!0}},__hmrId:"Gem"},ei={emits:["loaded"],extends:jt,props:{src:String,width:Number,height:Number,keepSize:Boolean},created:function(){var e=this;this.createGeometry(),this.createMaterial(),this.initMesh(),i((function(){return e.src}),this.refreshTexture),["width","height"].forEach((function(t){i((function(){return e[t]}),e.resize)})),this.keepSize&&this.three.onAfterResize(this.resize)},methods:{createGeometry:function(){this.geometry=new ie(1,1,1,1)},createMaterial:function(){this.material=new U({side:me,map:this.loadTexture()})},loadTexture:function(){return(new $).load(this.src,this.onLoaded)},refreshTexture:function(){this.texture&&this.texture.dispose(),this.material.map=this.loadTexture(),this.material.needsUpdate=!0},onLoaded:function(e){this.texture=e,this.resize(),this.$emit("loaded")},resize:function(){if(this.texture){var e,t,i=this.three.size,r=this.texture.image.width/this.texture.image.height;this.width&&this.height?(e=this.width*i.wWidth/i.width,t=this.height*i.wHeight/i.height):this.width?t=(e=this.width*i.wWidth/i.width)/r:this.height&&(e=(t=this.height*i.wHeight/i.height)*r),this.mesh.scale.x=e,this.mesh.scale.y=t}}},__hmrId:"Image"},ti={inject:["three","scene"],props:{materialId:String,count:Number,position:Object,castShadow:Boolean,receiveShadow:Boolean},setup:function(){return{parent:r("group",r("scene"))}},provide:function(){return{mesh:this}},beforeMount:function(){this.$slots.default||console.error("Missing Geometry")},mounted:function(){this.initMesh()},unmounted:function(){this.parent.remove(this.mesh)},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new de(this.geometry,this.material,this.count),We(this,"position",this.mesh.position),We(this,"rotation",this.mesh.rotation),We(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),this.parent.add(this.mesh)},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)}},render:function(){return this.$slots.default()},__hmrId:"InstancedMesh"},ii={extends:jt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new se(this.cubeRTSize,{format:ae,generateMipmaps:!0,minFilter:oe});this.cubeCamera=new he(this.cubeCameraNear,this.cubeCameraFar,e),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"MirrorMesh"},ri={extends:jt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},refractionRatio:{type:Number,default:.98},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new se(this.cubeRTSize,{mapping:ee,format:ae,generateMipmaps:!0,minFilter:oe});this.cubeCamera=new he(this.cubeCameraNear,this.cubeCameraFar,e),We(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.refractionRatio=this.refractionRatio,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"RefractionMesh"},ni={emits:["ready","loaded"],inject:["three","scene"],props:{src:String,position:Object,scale:Object},setup:function(){return{parent:r("group",r("scene"))}},mounted:function(){this.texture=(new $).load(this.src,this.onLoaded),this.material=new ce({map:this.texture}),this.sprite=new le(this.material),this.geometry=this.sprite.geometry,We(this,"position",this.sprite.position),We(this,"scale",this.sprite.scale),this.parent.add(this.sprite),this.$emit("ready")},unmounted:function(){this.texture.dispose(),this.material.dispose(),this.parent.remove(this.sprite)},methods:{onLoaded:function(){this.updateUV(),this.$emit("loaded")},updateUV:function(){this.iWidth=this.texture.image.width,this.iHeight=this.texture.image.height,this.iRatio=this.iWidth/this.iHeight;var e=.5,t=.5;this.iRatio>1?t=.5/this.iRatio:e=.5/this.iRatio;var i=this.geometry.attributes.position.array;i[0]=-e,i[1]=-t,i[5]=e,i[6]=-t,i[10]=e,i[11]=t,i[15]=-e,i[16]=t,this.geometry.attributes.position.needsUpdate=!0}},render:function(){return[]},__hmrId:"Sprite"},si={setup:function(){return{passes:[]}},inject:["three"],provide:function(){return{passes:this.passes}},mounted:function(){var e=this;this.three.onAfterInit((function(){e.composer=new Se(e.three.renderer),e.three.renderer.autoClear=!1,e.passes.forEach((function(t){e.composer.addPass(t)})),e.three.composer=e.composer,e.resize(),e.three.onAfterResize(e.resize)}))},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){this.composer.setSize(this.three.size.width,this.three.size.height)}},render:function(){return this.$slots.default()},__hmrId:"EffectComposer"},ai={inject:["three","passes"],beforeMount:function(){this.passes||console.error("Missing parent EffectComposer")},unmounted:function(){this.pass.dispose&&this.pass.dispose()},render:function(){return[]},__hmrId:"EffectPass"},oi={extends:ai,mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e=new we(this.three.scene,this.three.camera);this.passes.push(e),this.pass=e},__hmrId:"RenderPass"},hi={extends:ai,props:{focus:{type:Number,default:1},aperture:{type:Number,default:.025},maxblur:{type:Number,default:.01}},watch:{focus:function(){this.pass.uniforms.focus.value=this.focus},aperture:function(){this.pass.uniforms.aperture.value=this.aperture},maxblur:function(){this.pass.uniforms.maxblur.value=this.maxblur}},mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e={focus:this.focus,aperture:this.aperture,maxblur:this.maxblur,width:this.three.size.width,height:this.three.size.height},t=new Ce(this.three.scene,this.three.camera,e);this.passes.push(t),this.pass=t},__hmrId:"BokehPass"},ui={extends:ai,props:{noiseIntensity:{type:Number,default:.5},scanlinesIntensity:{type:Number,default:.05},scanlinesCount:{type:Number,default:4096},grayscale:{type:Number,default:0}},watch:{noiseIntensity:function(){this.pass.uniforms.nIntensity.value=this.noiseIntensity},scanlinesIntensity:function(){this.pass.uniforms.sIntensity.value=this.scanlinesIntensity},scanlinesCount:function(){this.pass.uniforms.sCount.value=this.scanlinesCount},grayscale:function(){this.pass.uniforms.grayscale.value=this.grayscale}},mounted:function(){var e=new Ne(this.noiseIntensity,this.scanlinesIntensity,this.scanlinesCount,this.grayscale);this.passes.push(e),this.pass=e},__hmrId:"FilmPass"},mi={extends:ai,mounted:function(){var e=new ze(_e);this.passes.push(e),this.pass=e,this.three.onAfterResize(this.resize)},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){var e=this.pass.material.uniforms.resolution;e.value.x=1/this.three.size.width,e.value.y=1/this.three.size.height}},__hmrId:"FXAAPass"},di={extends:ai,props:{shape:{type:Number,default:1},radius:{type:Number,default:4},rotateR:{type:Number,default:Math.PI/12*1},rotateG:{type:Number,default:Math.PI/12*2},rotateB:{type:Number,default:Math.PI/12*3},scatter:{type:Number,default:0}},mounted:function(){var e=this,t=new Me(this.three.size.width,this.three.size.height,{});["shape","radius","rotateR","rotateG","rotateB","scatter"].forEach((function(r){t.uniforms[r].value=e[r],i((function(){return e[r]}),(function(){t.uniforms[r].value=e[r]}))})),this.passes.push(t),this.pass=t},__hmrId:"HalftonePass"},ci={extends:ai,mounted:function(){var e=new Pe(this.three.size.width,this.three.size.height);this.passes.push(e),this.pass=e},__hmrId:"SMAAPass"},li="\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fi={uniforms:{tDiffuse:{value:null},blurRadius:{value:0},gradientRadius:{value:0},start:{value:new m},end:{value:new m},delta:{value:new m},texSize:{value:new m}},vertexShader:li,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "};function pi(e,t,r,n){void 0===n&&(n="value"),e[t]&&(r[n]=e[t],i((function(){return e[t]}),(function(e){r[n]=e})))}var vi={extends:ai,props:{blurRadius:{type:Number,default:10},gradientRadius:{type:Number,default:100},start:{type:Object,default:{x:0,y:100}},end:{type:Object,default:{x:10,y:100}}},mounted:function(){var e=this;this.pass=new ze(fi),this.passes.push(this.pass),this.pass1=new ze(fi),this.passes.push(this.pass1);var t=this.uniforms=this.pass.uniforms,r=this.uniforms1=this.pass1.uniforms;r.blurRadius=t.blurRadius,r.gradientRadius=t.gradientRadius,r.start=t.start,r.end=t.end,r.texSize=t.texSize,pi(this,"blurRadius",t.blurRadius),pi(this,"gradientRadius",t.gradientRadius),this.updateFocusLine(),["start","end"].forEach((function(t){i((function(){return e[t]}),e.updateFocusLine)})),this.pass.setSize=function(e,i){t.texSize.value.set(e,i)}},methods:{updateFocusLine:function(){this.uniforms.start.value.copy(this.start),this.uniforms.end.value.copy(this.end);var e=(new m).copy(this.end).sub(this.start).normalize();this.uniforms.delta.value.copy(e),this.uniforms1.delta.value.set(-e.y,e.x)}},__hmrId:"TiltShiftPass"},gi={extends:ai,props:{strength:{type:Number,default:1.5},radius:{type:Number,default:0},threshold:{type:Number,default:0}},watch:{strength:function(){this.pass.strength=this.strength},radius:function(){this.pass.radius=this.radius},threshold:function(){this.pass.threshold=this.threshold}},mounted:function(){var e=new m(this.three.size.width,this.three.size.height),t=new Te(e,this.strength,this.radius,this.threshold);this.passes.push(t),this.pass=t},__hmrId:"UnrealBloomPass"},yi={uniforms:{tDiffuse:{value:null},center:{value:new m(.5,.5)},strength:{value:0}},vertexShader:li,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "},xi={extends:ai,props:{center:{type:Object,default:{x:.5,y:.5}},strength:{type:Number,default:.5}},mounted:function(){this.pass=new ze(yi),this.passes.push(this.pass);var e=this.uniforms=this.pass.uniforms;We(this,"center",e.center.value),pi(this,"strength",e.strength)},__hmrId:"ZoomBlurPass"},bi="\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n",Si={extends:ei,props:{widthSegments:{type:Number,default:20},heightSegments:{type:Number,default:20},timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:1},zCoef:{type:Number,default:5},dispCoef:{type:Number,default:.05}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.zCoef};i((function(){return e.zCoef}),(function(e){r.value=e}));var n={value:e.dispCoef};return i((function(){return e.dispCoef}),(function(e){n.value=e})),{uTime:{value:0},uNoiseCoef:t,uZCoef:r,uDispCoef:n}},mounted:function(){this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{createGeometry:function(){this.geometry=new ie(1,1,this.widthSegments,this.heightSegments)},createMaterial:function(){var e=this;this.material=new U({side:me,map:this.loadTexture()}),this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uZCoef=e.uZCoef,t.uniforms.uDispCoef=e.uDispCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n "+bi+"\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include "," \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n "),t.fragmentShader="\n uniform float uDispCoef;\n varying float vNoise;\n "+t.fragmentShader,t.fragmentShader=t.fragmentShader.replace("#include ","\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n "),e.materialShader=t}},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisyImage"},wi={extends:$t,props:{timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:5},deltaCoef:{type:Number,default:1/512},displacementScale:{type:Number,default:5}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:new m(e.deltaCoef,e.deltaCoef)};return i((function(){return e.deltaCoef}),(function(e){r.value.set(e,e)})),{uTime:{value:0},uNoiseCoef:t,uDelta:r}},mounted:function(){var e=this;this.init(),i((function(){return e.displacementScale}),(function(t){e.material.displacementScale=t})),this.startTime=Date.now(),this.three.onBeforeRender(this.update)},unmounted:function(){this.three.offBeforeRender(this.update),this.fsQuad.dispose(),this.dispRT.dispose(),this.dispMat.dispose(),this.normRT.dispose(),this.normMat.dispose()},methods:{init:function(){this.fsQuad=new Ge.FullScreenQuad,this.dispRT=new fe(512,512,{depthBuffer:!1,stencilBuffer:!1}),this.dispMat=new K({uniforms:{uTime:this.uTime,uNoiseCoef:this.uNoiseCoef},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n \n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v)\n{\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n // First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n // Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n // Permutations\n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n // Gradients: 7x7 points over a square, mapped onto an octahedron.\n // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n // Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n}\n\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n "}),this.normRT=new fe(512,512,{depthBuffer:!1,stencilBuffer:!1}),this.normMat=new K({uniforms:{dispMap:{value:this.dispRT.texture},delta:this.uDelta},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n "}),this.material.displacementMap=this.dispRT.texture,this.material.displacementScale=this.displacementScale,this.material.normalMap=this.normRT.texture,this.material.normalMapType=pe},update:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef,this.renderDisp()},renderDisp:function(){this.renderMat(this.dispMat,this.dispRT),this.renderMat(this.normMat,this.normRT)},renderMat:function(e,t){var i=this.three.renderer;this.fsQuad.material=e;var r=i.getRenderTarget();i.setRenderTarget(t),this.fsQuad.render(i),i.setRenderTarget(r)}},__hmrId:"NoisyPlane"},Ci={extends:Ht,props:{radius:{type:Number,default:20},widthSegments:{type:Number,default:128},heightSegments:{type:Number,default:128},timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:.05},dispCoef:{type:Number,default:5}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.dispCoef};return i((function(){return e.dispCoef}),(function(e){r.value=e})),{uTime:{value:0},uNoiseCoef:t,uDispCoef:r}},mounted:function(){this.updateMaterial(),this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{updateMaterial:function(){var e=this;this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uDispCoef=e.uDispCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n \n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nfloat mod289(float x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nfloat permute(float x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\nfloat taylorInvSqrt(float r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nvec4 grad4(float j, vec4 ip)\n{\n const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n vec4 p,s;\n\n p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n s = vec4(lessThan(p, vec4(0.0)));\n p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\n return p;\n}\n\n// (sqrt(5) - 1)/4 = F4, used once below\n#define F4 0.309016994374947451\n\nfloat snoise(vec4 v)\n{\n const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4\n 0.276393202250021, // 2 * G4\n 0.414589803375032, // 3 * G4\n -0.447213595499958); // -1 + 4 * G4\n\n // First corner\n vec4 i = floor(v + dot(v, vec4(F4)) );\n vec4 x0 = v - i + dot(i, C.xxxx);\n\n // Other corners\n\n // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n vec4 i0;\n vec3 isX = step( x0.yzw, x0.xxx );\n vec3 isYZ = step( x0.zww, x0.yyz );\n // i0.x = dot( isX, vec3( 1.0 ) );\n i0.x = isX.x + isX.y + isX.z;\n i0.yzw = 1.0 - isX;\n // i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n i0.y += isYZ.x + isYZ.y;\n i0.zw += 1.0 - isYZ.xy;\n i0.z += isYZ.z;\n i0.w += 1.0 - isYZ.z;\n\n // i0 now contains the unique values 0,1,2,3 in each channel\n vec4 i3 = clamp( i0, 0.0, 1.0 );\n vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n vec4 x1 = x0 - i1 + C.xxxx;\n vec4 x2 = x0 - i2 + C.yyyy;\n vec4 x3 = x0 - i3 + C.zzzz;\n vec4 x4 = x0 + C.wwww;\n\n // Permutations\n i = mod289(i);\n float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n vec4 j1 = permute( permute( permute( permute (\n i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\n // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope\n // 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n vec4 p0 = grad4(j0, ip);\n vec4 p1 = grad4(j1.x, ip);\n vec4 p2 = grad4(j1.y, ip);\n vec4 p3 = grad4(j1.z, ip);\n vec4 p4 = grad4(j1.w, ip);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n p4 *= taylorInvSqrt(dot(p4,p4));\n\n // Mix contributions from the five corners\n vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n m0 = m0 * m0;\n m1 = m1 * m1;\n return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\n}\n\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include ","\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n "),e.materialShader=t},this.material.needsupdate=!0},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisySphere"},Ni={extends:Yt,props:{timeCoef:{type:Number,default:.001},noiseCoef:{type:Number,default:.015},zCoef:{type:Number,default:10}},setup:function(e){var t={value:e.noiseCoef};i((function(){return e.noiseCoef}),(function(e){t.value=e}));var r={value:e.zCoef};return i((function(){return e.zCoef}),(function(e){r.value=e})),{uTime:{value:0},uNoiseCoef:t,uZCoef:r}},mounted:function(){this.updateMaterial(),this.startTime=Date.now(),this.three.onBeforeRender(this.updateTime)},unmounted:function(){this.three.offBeforeRender(this.updateTime)},methods:{updateMaterial:function(){var e=this;this.material.onBeforeCompile=function(t){t.uniforms.uTime=e.uTime,t.uniforms.uNoiseCoef=e.uNoiseCoef,t.uniforms.uZCoef=e.uZCoef,t.vertexShader="\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n "+bi+"\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include "," \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n "),e.materialShader=t},this.material.needsupdate=!0},updateTime:function(){this.uTime.value=(Date.now()-this.startTime)*this.timeCoef}},__hmrId:"NoisyText"},zi=function(e){var t=this;Object.entries(e).forEach((function(e){var i=e[0],r=e[1];t[i]=r})),this.o3d=new ve,this.uProgress={value:0},this.uvScale=new m,this.initMaterial(),this.initPlane()};function _i(){var e={loader:new $,count:0,textures:[],loadProgress:0,loadTextures:function(i,r){e.count=i.length,e.textures.splice(0),e.loadProgress=0,Promise.all(i.map(t)).then(r)},dispose:function(){e.textures.forEach((function(e){return e.dispose()}))}};return e;function t(t,i){return new Promise((function(r){e.loader.load(t.src,(function(t){e.loadProgress+=1/e.count,e.textures[i]=t,r(t)}))}))}}zi.prototype.initMaterial=function(){var e=this;this.material=new U({side:me,transparent:!0,map:this.texture,onBeforeCompile:function(t){t.uniforms.progress=e.uProgress,t.uniforms.uvScale={value:e.uvScale},t.vertexShader="\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n "+t.vertexShader,t.vertexShader=t.vertexShader.replace("#include ","\n #include \n vUv = vUv * uvScale + uvOffset;\n "),t.vertexShader=t.vertexShader.replace("#include ","\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n ")}})},zi.prototype.initPlane=function(){var e=this.screen,t=e.width,i=e.wWidth,r=e.wHeight;this.wSize=this.size*i/t,this.nx=Math.ceil(i/this.wSize)+1,this.ny=Math.ceil(r/this.wSize)+1,this.icount=this.nx*this.ny,this.initGeometry(),this.initUV(),this.initAnimAttributes(),this.imesh&&this.o3d.remove(this.imesh),this.imesh=new de(this.bGeometry,this.material,this.icount),this.o3d.add(this.imesh);for(var n=new ve,s=0,a=-(i-(i-this.nx*this.wSize))/2+this.dx,o=0;ot?this.uvScale.set(1/this.nx,t/e/this.ny):this.uvScale.set(e/t/this.nx,1/this.ny);for(var i=this.uvScale.x*this.nx,r=this.uvScale.y*this.ny,n=new m,s=new Float32Array(2*this.icount),a=0;a0?this.setTargetProgress(this.targetProgress+.05):this.setTargetProgress(this.targetProgress-.05)},onClick:function(e){e.clientY0&&r 0.001) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center * uvScale + uvOffset - tUv;\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 \n for (float t = 0.0; t <= 20.0; t++) {\n float percent = (t + offset) / 20.0;\n float weight = 2.0 * (percent - percent * percent);\n vec4 texel = texture2D(map, tUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n gl_FragColor.a = 1.0 - abs(strength);\n } else {\n gl_FragColor = texture2D(map, tUv);\n }\n }\n "}),r=new te(t,i),{geometry:t,material:i,mesh:r,uCenter:s,uStrength:a,setMap:function(e){n.value=e,u()},updateUV:u};function u(){var t=e.size.ratio,i=n.value.image.width/n.value.image.height;o.value.set(0,0),h.value.set(1,1),i>t?(h.value.x=t/i,o.value.x=(1-h.value.x)/2):(h.value.y=i/t,o.value.y=(1-h.value.y)/2)}}Mi.render=function(e,t,i,r,u,m){var d=n("Camera"),c=n("Scene"),l=n("Renderer");return s(),a(l,{ref:"renderer",antialias:""},{default:o((function(){return[h(d,{ref:"camera",position:{z:150}},null,512),h(c,{ref:"scene"},null,512)]})),_:1},512)},Mi.__file="src/components/sliders/Slider1.vue";var Ti={props:{images:Array,events:{type:Object,default:function(){return{wheel:!0,click:!0,keyup:!0}}}},setup:function(){var e=new m;return{loader:_i(),center:e,progress:0,targetProgress:0}},mounted:function(){this.three=this.$refs.renderer.three,this.images.length<2?console.error("This slider needs at least 2 images."):this.loader.loadTextures(this.images,this.init)},unmounted:function(){this.loader.dispose();var e=this.three.renderer.domElement;e.removeEventListener("click",this.onClick),e.removeEventListener("wheel",this.onWheel),document.removeEventListener("keyup",this.onKeyup)},methods:{init:function(){this.initScene(),Ie.fromTo(this.image1.uStrength,{value:-2},{value:0,duration:2.5,ease:Re.easeOut});var e=this.three.renderer.domElement;this.events.click&&e.addEventListener("click",this.onClick),this.events.wheel&&e.addEventListener("wheel",this.onWheel),this.events.keyup&&document.addEventListener("keyup",this.onKeyup),this.three.onBeforeRender(this.animate),this.three.onAfterResize(this.onResize)},initScene:function(){var e=this.$refs.scene.scene;this.image1=new Pi(this.three),this.image1.setMap(this.loader.textures[0]),this.image2=new Pi(this.three),this.image2.setMap(this.loader.textures[1]),this.setImagesProgress(0),e.add(this.image1.mesh),e.add(this.image2.mesh)},animate:function(){var e=this.three.mouse;this.center.copy(e).divideScalar(2).addScalar(.5),Oe(this.image1.uCenter.value,this.center,.1),Oe(this.image2.uCenter.value,this.center,.1),this.updateProgress()},onResize:function(){this.image1.updateUV(),this.image2.updateUV()},onWheel:function(e){e.deltaY>0?this.setTargetProgress(this.targetProgress+.05):this.setTargetProgress(this.targetProgress-.05)},onClick:function(e){e.clientY0&&r {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.width && conf.height) {\n setSize(conf.width, conf.height);\n } else if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n mouse.x = (e.clientX / size.width) * 2 - 1;\n mouse.y = -(e.clientY / size.height) * 2 + 1;\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n mouse.x = (e.clientX / size.width) * 2 - 1;\n mouse.y = -(e.clientY / size.height) * 2 + 1;\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: true },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport { inject } from 'vue';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: ['three', 'scene'],\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n setup(props) {\r\n const parent = inject('group', inject('scene'));\r\n const group = new Group();\r\n useBindProp(props, 'position', group.position);\r\n useBindProp(props, 'rotation', group.rotation);\r\n useBindProp(props, 'scale', group.scale);\r\n return { parent, group };\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { inject, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n diffuse: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n Object.entries(this.$props).forEach(([key, value]) => {\n if (key === 'diffuse' || key === 'thicknessColor') {\n value = new Color(value);\n }\n if (key !== 'id' && key !== 'transparent' && key !== 'vertexColors') {\n uniforms[key].value = value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n // console.log('Mesh mounted');\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n // console.log('Mesh unmounted');\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three', 'scene'],\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport { inject } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: ['three', 'scene'],\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine);\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n`;\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Image from '../../meshes/Image.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Image,\n props: {\n widthSegments: { type: Number, default: 20 },\n heightSegments: { type: Number, default: 20 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 1 },\n zCoef: { type: Number, default: 5 },\n dispCoef: { type: Number, default: 0.05 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef, uDispCoef,\n };\n },\n mounted() {\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, this.widthSegments, this.heightSegments);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n `\n );\n\n shader.fragmentShader = `\n uniform float uDispCoef;\n varying float vNoise;\n ` + shader.fragmentShader;\n\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include ',\n `\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n `\n );\n this.materialShader = shader;\n };\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyImage',\n};\n","import { ObjectSpaceNormalMap, ShaderMaterial, Vector2, WebGLRenderTarget } from 'three';\nimport { Pass } from 'three/examples/jsm/postprocessing/Pass.js';\nimport { watch } from 'vue';\nimport Plane from '../../meshes/Plane.js';\nimport snoise3 from '../../glsl/snoise3.glsl.js';\n\nexport default {\n extends: Plane,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 5 },\n deltaCoef: { type: Number, default: 1 / 512 },\n displacementScale: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDelta = { value: new Vector2(props.deltaCoef, props.deltaCoef) };\n watch(() => props.deltaCoef, (value) => { uDelta.value.set(value, value); });\n\n return {\n uTime, uNoiseCoef, uDelta,\n };\n },\n mounted() {\n this.init();\n\n watch(() => this.displacementScale, (value) => { this.material.displacementScale = value; });\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.update);\n },\n unmounted() {\n this.three.offBeforeRender(this.update);\n this.fsQuad.dispose();\n this.dispRT.dispose();\n this.dispMat.dispose();\n this.normRT.dispose();\n this.normMat.dispose();\n },\n methods: {\n init() {\n this.fsQuad = new Pass.FullScreenQuad();\n\n // displacement map\n this.dispRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.dispMat = new ShaderMaterial({\n uniforms: {\n uTime: this.uTime,\n uNoiseCoef: this.uNoiseCoef,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n ${snoise3}\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n `,\n });\n\n // normal map\n this.normRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.normMat = new ShaderMaterial({\n uniforms: {\n dispMap: { value: this.dispRT.texture },\n delta: this.uDelta,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n `,\n });\n\n this.material.displacementMap = this.dispRT.texture;\n this.material.displacementScale = this.displacementScale;\n this.material.normalMap = this.normRT.texture;\n this.material.normalMapType = ObjectSpaceNormalMap;\n // this.material.needsUpdate = true;\n },\n update() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n this.renderDisp();\n },\n renderDisp() {\n this.renderMat(this.dispMat, this.dispRT);\n this.renderMat(this.normMat, this.normRT);\n },\n renderMat(mat, target) {\n const renderer = this.three.renderer;\n this.fsQuad.material = mat;\n const oldTarget = renderer.getRenderTarget();\n renderer.setRenderTarget(target);\n this.fsQuad.render(renderer);\n renderer.setRenderTarget(oldTarget);\n },\n },\n __hmrId: 'NoisyPlane',\n};\n","import { watch } from 'vue';\nimport Sphere from '../../meshes/Sphere.js';\nimport snoise4 from '../../glsl/snoise4.glsl.js';\n\nexport default {\n extends: Sphere,\n props: {\n radius: { type: Number, default: 20 },\n widthSegments: { type: Number, default: 128 },\n heightSegments: { type: Number, default: 128 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.05 },\n dispCoef: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uDispCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n ${snoise4}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n `\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisySphere',\n};\n","import { watch } from 'vue';\nimport Text from '../../meshes/Text.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Text,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.015 },\n zCoef: { type: Number, default: 10 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyText',\n};\n","import {\n DoubleSide,\n Face3,\n InstancedBufferAttribute,\n InstancedMesh,\n MathUtils,\n MeshBasicMaterial,\n Object3D,\n Vector2,\n Vector3,\n} from 'three';\n\nimport { Geometry } from 'three/examples/jsm/deprecated/Geometry.js';\n\nexport default class AnimatedPlane {\n constructor(params) {\n Object.entries(params).forEach(([key, value]) => {\n this[key] = value;\n });\n\n this.o3d = new Object3D();\n this.uProgress = { value: 0 };\n this.uvScale = new Vector2();\n\n this.initMaterial();\n this.initPlane();\n }\n\n initMaterial() {\n this.material = new MeshBasicMaterial({\n side: DoubleSide,\n transparent: true,\n map: this.texture,\n onBeforeCompile: shader => {\n shader.uniforms.progress = this.uProgress;\n shader.uniforms.uvScale = { value: this.uvScale };\n shader.vertexShader = `\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n #include \n vUv = vUv * uvScale + uvOffset;\n `);\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n `);\n },\n });\n }\n\n initPlane() {\n const { width, wWidth, wHeight } = this.screen;\n this.wSize = this.size * wWidth / width;\n this.nx = Math.ceil(wWidth / this.wSize) + 1;\n this.ny = Math.ceil(wHeight / this.wSize) + 1;\n this.icount = this.nx * this.ny;\n\n this.initGeometry();\n this.initUV();\n this.initAnimAttributes();\n\n if (this.imesh) {\n this.o3d.remove(this.imesh);\n }\n this.imesh = new InstancedMesh(this.bGeometry, this.material, this.icount);\n this.o3d.add(this.imesh);\n\n const dummy = new Object3D();\n let index = 0;\n let x = -(wWidth - (wWidth - this.nx * this.wSize)) / 2 + this.dx;\n for (let i = 0; i < this.nx; i++) {\n let y = -(wHeight - (wHeight - this.ny * this.wSize)) / 2 + this.dy;\n for (let j = 0; j < this.ny; j++) {\n dummy.position.set(x, y, 0);\n dummy.updateMatrix();\n this.imesh.setMatrixAt(index++, dummy.matrix);\n y += this.wSize;\n }\n x += this.wSize;\n }\n }\n\n initGeometry() {\n // square\n const geometry = new Geometry();\n geometry.vertices.push(new Vector3(0, 0, 0));\n geometry.vertices.push(new Vector3(this.wSize, 0, 0));\n geometry.vertices.push(new Vector3(0, this.wSize, 0));\n geometry.vertices.push(new Vector3(this.wSize, this.wSize, 0));\n geometry.faces.push(new Face3(0, 2, 1));\n geometry.faces.push(new Face3(2, 3, 1));\n\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 0),\n new Vector2(0, 1),\n new Vector2(1, 0),\n ]);\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 1),\n new Vector2(1, 1),\n new Vector2(1, 0),\n ]);\n\n // geometry.computeFaceNormals();\n // geometry.computeVertexNormals();\n\n // center\n this.dx = this.wSize / 2;\n this.dy = this.wSize / 2;\n geometry.translate(-this.dx, -this.dy, 0);\n\n this.bGeometry = geometry.toBufferGeometry();\n }\n\n initAnimAttributes() {\n const { randFloat: rnd, randFloatSpread: rndFS } = MathUtils;\n const v3 = new Vector3();\n\n const offsets = new Float32Array(this.icount * 3);\n for (let i = 0; i < offsets.length; i += 3) {\n if (this.anim === 1) v3.set(rndFS(10), rnd(50, 100), rnd(20, 50)).toArray(offsets, i);\n else v3.set(rndFS(20), rndFS(20), rnd(20, 200)).toArray(offsets, i);\n }\n this.bGeometry.setAttribute('offset', new InstancedBufferAttribute(offsets, 3));\n\n const rotations = new Float32Array(this.icount * 3);\n const angle = Math.PI * 4;\n for (let i = 0; i < rotations.length; i += 3) {\n rotations[i] = rndFS(angle);\n rotations[i + 1] = rndFS(angle);\n rotations[i + 2] = rndFS(angle);\n }\n this.bGeometry.setAttribute('rotation', new InstancedBufferAttribute(rotations, 3));\n }\n\n initUV() {\n const ratio = this.nx / this.ny;\n const tRatio = this.texture.image.width / this.texture.image.height;\n if (ratio > tRatio) this.uvScale.set(1 / this.nx, (tRatio / ratio) / this.ny);\n else this.uvScale.set((ratio / tRatio) / this.nx, 1 / this.ny);\n const nW = this.uvScale.x * this.nx;\n const nH = this.uvScale.y * this.ny;\n\n const v2 = new Vector2();\n const uvOffsets = new Float32Array(this.icount * 2);\n for (let i = 0; i < this.nx; i++) {\n for (let j = 0; j < this.ny; j++) {\n v2.set(\n this.uvScale.x * i + (1 - nW) / 2,\n this.uvScale.y * j + (1 - nH) / 2\n ).toArray(uvOffsets, (i * this.ny + j) * 2);\n }\n }\n this.bGeometry.setAttribute('uvOffset', new InstancedBufferAttribute(uvOffsets, 2));\n }\n\n setTexture(texture) {\n this.texture = texture;\n this.material.map = texture;\n this.initUV();\n }\n\n resize() {\n this.initPlane();\n }\n}\n","\n\n\n","import { TextureLoader } from 'three';\n\nexport default function useTextures() {\n const obj = {\n loader: new TextureLoader(),\n count: 0,\n textures: [],\n loadProgress: 0,\n loadTextures,\n dispose,\n };\n return obj;\n\n function loadTextures(images, cb) {\n obj.count = images.length;\n obj.textures.splice(0);\n obj.loadProgress = 0;\n Promise.all(images.map(loadTexture)).then(cb);\n };\n\n function loadTexture(img, index) {\n return new Promise(resolve => {\n obj.loader.load(\n img.src,\n texture => {\n obj.loadProgress += 1 / obj.count;\n obj.textures[index] = texture;\n resolve(texture);\n }\n );\n });\n };\n\n function dispose() {\n obj.textures.forEach(t => t.dispose());\n }\n};\n","\n\n\n","\n\n\n","\n\n\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["useThree","const","conf","canvas","antialias","alpha","autoClear","orbit_ctrl","mouse_move","mouse_raycast","mouse_over","click","resize","width","height","size","wWidth","wHeight","ratio","afterInitCallbacks","afterResizeCallbacks","beforeRenderCallbacks","mouse","Vector2","mouseV3","Vector3","mousePlane","Plane","raycaster","Raycaster","intersectObjects","obj","renderer","camera","cameraCtrl","materials","scene","params","Object","entries","forEach","key","value","console","error","WebGLRenderer","orbitCtrl","OrbitControls","domElement","setSize","onResize","window","addEventListener","mouse_move_element","document","body","onMousemove","onMouseleave","onClick","c","removeEventListener","dispose","this","update","render","composer","callback","push","filter","o","indexOf","i","splice","e","x","clientX","y","clientY","setFromCamera","objects","length","object","onMousechange","getWorldDirection","normal","normalize","ray","intersectPlane","onObjects","offObjects","hover","onHover","let","innerWidth","innerHeight","elt","parentNode","clientWidth","clientHeight","aspect","updateProjectionMatrix","type","right","left","top","bottom","wsize","vFOV","fov","Math","PI","h","tan","abs","position","z","getCameraSize","props","Boolean","default","mouseMove","String","mouseRaycast","mouseOver","shadow","setup","three","raf","onMountedCallbacks","provide","rendererComponent","mounted","$el","init","shadowMap","enabled","animateC","animate","beforeUnmount","methods","onMounted","onBeforeRender","onAfterResize","requestAnimationFrame","renderC","$slots","setFromProp","prop","propsValues","exclude","values","includes","lerp","value1","value2","amount","lerpv2","v1","v2","lerpv3","limit","val","min","max","getMatcapUrl","hash","format","MATCAP_ROOT","useBindProp","comp","ref","toRef","watch","deep","inject","Number","near","far","zoom","created","OrthographicCamera","p","__hmrId","PerspectiveCamera","rotation","scale","parent","group","Group","add","unmounted","remove","id","background","Scene","Color","emits","rotateX","rotateY","rotateZ","mesh","watchProps","$props","beforeMount","createGeometry","rotateGeometry","setGeometry","geometry","addWatchers","refreshGeometry","oldGeo","extends","Geometry","depth","widthSegments","heightSegments","depthSegments","w","d","BoxBufferGeometry","radius","segments","thetaStart","thetaLength","CircleBufferGeometry","radialSegments","openEnded","ConeBufferGeometry","radiusTop","radiusBottom","CylinderBufferGeometry","detail","DodecahedronBufferGeometry","IcosahedronBufferGeometry","points","Array","phiStart","phiLength","LatheBufferGeometry","OctahedronBufferGeometry","vertices","indices","PolyhedronBufferGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","tube","tubularSegments","arc","TorusBufferGeometry","q","TorusKnotBufferGeometry","path","Curve","radiusSegments","closed","TubeBufferGeometry","from","color","intensity","castShadow","shadowMapSize","light","target","mapSize","Light","AmbientLight","DirectionalLight","distance","decay","PointLight","angle","penumbra","SpotLight","depthTest","depthWrite","flatShading","fog","opacity","side","FrontSide","transparent","vertexColors","material","createMaterial","setMaterial","_addWatchers","setProp","needsUpdate","setTexture","texture","set","Material","MeshBasicMaterial","MeshLambertMaterial","src","name","opts","matcap","TextureLoader","load","MeshMatcapMaterial","emissive","emissiveIntensity","reflectivity","shininess","specular","MeshPhongMaterial","aoMapIntensity","bumpScale","displacementBias","displacementScale","envMapIntensity","lightMapIntensity","metalness","normalScale","roughness","refractionRatio","wireframe","MeshStandardMaterial","keys","StandardMaterial","MeshPhysicalMaterial","string","find","replace","meshphongFragHead","ShaderChunk","meshphong_frag","slice","meshphongFragBody","SubsurfaceScatteringShader","uniforms","UniformsUtils","merge","ShaderLib","phong","thicknessColor","thicknessDistortion","thicknessAmbient","thicknessAttenuation","thicknessPower","thicknessScale","vertexShader","fragmentShader","lights_fragment_begin","split","join","diffuse","clone","TShaderMaterial","lights","MeshToonMaterial","onLoad","Function","onProgress","onError","refreshTexture","createTexture","onLoaded","$emit","urls","refraction","CubeTextureLoader","setPath","mapping","CubeRefractionMapping","materialId","receiveShadow","initMesh","removeIntersectObject","Mesh","over","component","addIntersectObject","event","bindProps","PlaneBufferGeometry","text","fontSrc","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align","TextProps","font","FontLoader","TextBufferGeometry","center","cubeRTSize","cubeCameraNear","cubeCameraFar","autoUpdate","initGem","updateCubeRT","offBeforeRender","meshBack","materialBack","cubeRT","WebGLCubeRenderTarget","RGBFormat","generateMipmaps","minFilter","LinearMipmapLinearFilter","cubeCamera","CubeCamera","envMap","premultipliedAlpha","BackSide","TMesh","visible","keepSize","DoubleSide","map","loadTexture","screen","iRatio","image","count","InstancedMesh","initMirrorMesh","SpriteMaterial","sprite","Sprite","updateUV","iWidth","iHeight","positions","attributes","array","passes","onAfterInit","EffectComposer","pass","addPass","offAfterResize","EffectPass","RenderPass","focus","aperture","maxblur","BokehPass","noiseIntensity","scanlinesIntensity","scanlinesCount","grayscale","nIntensity","sIntensity","sCount","FilmPass","ShaderPass","FXAAShader","resolution","shape","rotateR","rotateG","rotateB","scatter","HalftonePass","SMAAPass","tDiffuse","blurRadius","gradientRadius","start","end","delta","texSize","DefaultShader","useBindPropValue","srcProp","dst","dstProp","TiltShift","pass1","uniforms1","updateFocusLine","copy","dv","sub","strength","threshold","UnrealBloomPass","ZoomBlur","Image","timeCoef","noiseCoef","zCoef","dispCoef","uNoiseCoef","uZCoef","uDispCoef","startTime","Date","now","updateTime","onBeforeCompile","shader","uTime","snoise2","materialShader","deltaCoef","uDelta","fsQuad","dispRT","dispMat","normRT","normMat","Pass","FullScreenQuad","WebGLRenderTarget","depthBuffer","stencilBuffer","ShaderMaterial","dispMap","displacementMap","normalMap","normalMapType","ObjectSpaceNormalMap","renderDisp","renderMat","mat","oldTarget","getRenderTarget","setRenderTarget","Sphere","updateMaterial","needsupdate","Text","AnimatedPlane","o3d","Object3D","uProgress","uvScale","initMaterial","initPlane","progress","wSize","nx","ceil","ny","icount","initGeometry","initUV","initAnimAttributes","imesh","bGeometry","dummy","index","dx","dy","j","updateMatrix","setMatrixAt","matrix","faces","Face3","faceVertexUvs","translate","toBufferGeometry","v3","offsets","Float32Array","anim","rndFS","rnd","toArray","setAttribute","InstancedBufferAttribute","rotations","tRatio","nW","nH","uvOffsets","images","events","wheel","keyup","loader","textures","loadProgress","cb","Promise","all","then","t","img","resolve","useTextures","targetProgress","$refs","loadTextures","onKeyup","onWheel","initScene","gsap","fromTo","plane1","duration","ease","Power4","easeOut","updateProgress","plane2","setPlanesProgress","planes","deltaY","setTargetProgress","navPrevious","navNext","keyCode","isInteger","floor","progress1","pdiff","p0","p1","_createBlock","_createVNode","cameraPosition","GLTFLoader","gltf","orbit-ctrl","_renderSlot","TroisJSVuePlugin","install","app","TROIS"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"trois.module.min.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/use/useBindProp.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/PointLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ShaderMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/use/useBindPropValue.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/glsl/snoise2.glsl.js","../src/components/noisy/NoisyImage.js","../src/components/noisy/NoisyPlane.js","../src/components/noisy/NoisySphere.js","../src/components/noisy/NoisyText.js","../src/components/sliders/AnimatedPlane.js","../src/use/useTextures.js","../src/components/sliders/Slider1.vue","../src/components/sliders/ZoomBlurImage.js","../src/components/sliders/Slider1.vue?vue&type=template&id=23f29a93&lang.js","../src/components/sliders/Slider2.vue","../src/components/sliders/Slider2.vue?vue&type=template&id=2400b214&lang.js","../src/components/viewers/GLTFViewer.vue","../src/components/viewers/GLTFViewer.vue?vue&type=template&id=683b03c7&lang.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.width && conf.height) {\n setSize(conf.width, conf.height);\n } else if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: true },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport { inject } from 'vue';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: ['three', 'scene'],\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n setup(props) {\r\n const parent = inject('group', inject('scene'));\r\n const group = new Group();\r\n useBindProp(props, 'position', group.position);\r\n useBindProp(props, 'rotation', group.rotation);\r\n useBindProp(props, 'scale', group.scale);\r\n return { parent, group };\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { inject, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n diffuse: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n Object.entries(this.$props).forEach(([key, value]) => {\n if (key === 'diffuse' || key === 'thicknessColor') {\n value = new Color(value);\n }\n if (key !== 'id' && key !== 'transparent' && key !== 'vertexColors') {\n uniforms[key].value = value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n parent: {\n from: 'group',\n default: () => inject('scene'),\n },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n // console.log('Mesh mounted');\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n // console.log('Mesh unmounted');\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three', 'scene'],\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport { inject } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: ['three', 'scene'],\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n setup() {\n const parent = inject('group', inject('scene'));\n return { parent };\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.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\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine);\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\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 main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\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 \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n`;\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Image from '../../meshes/Image.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Image,\n props: {\n widthSegments: { type: Number, default: 20 },\n heightSegments: { type: Number, default: 20 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 1 },\n zCoef: { type: Number, default: 5 },\n dispCoef: { type: Number, default: 0.05 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef, uDispCoef,\n };\n },\n mounted() {\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, this.widthSegments, this.heightSegments);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n `\n );\n\n shader.fragmentShader = `\n uniform float uDispCoef;\n varying float vNoise;\n ` + shader.fragmentShader;\n\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include ',\n `\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n `\n );\n this.materialShader = shader;\n };\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyImage',\n};\n","import { ObjectSpaceNormalMap, ShaderMaterial, Vector2, WebGLRenderTarget } from 'three';\nimport { Pass } from 'three/examples/jsm/postprocessing/Pass.js';\nimport { watch } from 'vue';\nimport Plane from '../../meshes/Plane.js';\nimport snoise3 from '../../glsl/snoise3.glsl.js';\n\nexport default {\n extends: Plane,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 5 },\n deltaCoef: { type: Number, default: 1 / 512 },\n displacementScale: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDelta = { value: new Vector2(props.deltaCoef, props.deltaCoef) };\n watch(() => props.deltaCoef, (value) => { uDelta.value.set(value, value); });\n\n return {\n uTime, uNoiseCoef, uDelta,\n };\n },\n mounted() {\n this.init();\n\n watch(() => this.displacementScale, (value) => { this.material.displacementScale = value; });\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.update);\n },\n unmounted() {\n this.three.offBeforeRender(this.update);\n this.fsQuad.dispose();\n this.dispRT.dispose();\n this.dispMat.dispose();\n this.normRT.dispose();\n this.normMat.dispose();\n },\n methods: {\n init() {\n this.fsQuad = new Pass.FullScreenQuad();\n\n // displacement map\n this.dispRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.dispMat = new ShaderMaterial({\n uniforms: {\n uTime: this.uTime,\n uNoiseCoef: this.uNoiseCoef,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n ${snoise3}\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n `,\n });\n\n // normal map\n this.normRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.normMat = new ShaderMaterial({\n uniforms: {\n dispMap: { value: this.dispRT.texture },\n delta: this.uDelta,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n `,\n });\n\n this.material.displacementMap = this.dispRT.texture;\n this.material.displacementScale = this.displacementScale;\n this.material.normalMap = this.normRT.texture;\n this.material.normalMapType = ObjectSpaceNormalMap;\n // this.material.needsUpdate = true;\n },\n update() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n this.renderDisp();\n },\n renderDisp() {\n this.renderMat(this.dispMat, this.dispRT);\n this.renderMat(this.normMat, this.normRT);\n },\n renderMat(mat, target) {\n const renderer = this.three.renderer;\n this.fsQuad.material = mat;\n const oldTarget = renderer.getRenderTarget();\n renderer.setRenderTarget(target);\n this.fsQuad.render(renderer);\n renderer.setRenderTarget(oldTarget);\n },\n },\n __hmrId: 'NoisyPlane',\n};\n","import { watch } from 'vue';\nimport Sphere from '../../meshes/Sphere.js';\nimport snoise4 from '../../glsl/snoise4.glsl.js';\n\nexport default {\n extends: Sphere,\n props: {\n radius: { type: Number, default: 20 },\n widthSegments: { type: Number, default: 128 },\n heightSegments: { type: Number, default: 128 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.05 },\n dispCoef: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uDispCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n ${snoise4}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n `\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisySphere',\n};\n","import { watch } from 'vue';\nimport Text from '../../meshes/Text.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Text,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.015 },\n zCoef: { type: Number, default: 10 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyText',\n};\n","import {\n DoubleSide,\n Face3,\n InstancedBufferAttribute,\n InstancedMesh,\n MathUtils,\n MeshBasicMaterial,\n Object3D,\n Vector2,\n Vector3,\n} from 'three';\n\nimport { Geometry } from 'three/examples/jsm/deprecated/Geometry.js';\n\nexport default class AnimatedPlane {\n constructor(params) {\n Object.entries(params).forEach(([key, value]) => {\n this[key] = value;\n });\n\n this.o3d = new Object3D();\n this.uProgress = { value: 0 };\n this.uvScale = new Vector2();\n\n this.initMaterial();\n this.initPlane();\n }\n\n initMaterial() {\n this.material = new MeshBasicMaterial({\n side: DoubleSide,\n transparent: true,\n map: this.texture,\n onBeforeCompile: shader => {\n shader.uniforms.progress = this.uProgress;\n shader.uniforms.uvScale = { value: this.uvScale };\n shader.vertexShader = `\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n #include \n vUv = vUv * uvScale + uvOffset;\n `);\n\n shader.vertexShader = shader.vertexShader.replace('#include ', `\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n `);\n },\n });\n }\n\n initPlane() {\n const { width, wWidth, wHeight } = this.screen;\n this.wSize = this.size * wWidth / width;\n this.nx = Math.ceil(wWidth / this.wSize) + 1;\n this.ny = Math.ceil(wHeight / this.wSize) + 1;\n this.icount = this.nx * this.ny;\n\n this.initGeometry();\n this.initUV();\n this.initAnimAttributes();\n\n if (this.imesh) {\n this.o3d.remove(this.imesh);\n }\n this.imesh = new InstancedMesh(this.bGeometry, this.material, this.icount);\n this.o3d.add(this.imesh);\n\n const dummy = new Object3D();\n let index = 0;\n let x = -(wWidth - (wWidth - this.nx * this.wSize)) / 2 + this.dx;\n for (let i = 0; i < this.nx; i++) {\n let y = -(wHeight - (wHeight - this.ny * this.wSize)) / 2 + this.dy;\n for (let j = 0; j < this.ny; j++) {\n dummy.position.set(x, y, 0);\n dummy.updateMatrix();\n this.imesh.setMatrixAt(index++, dummy.matrix);\n y += this.wSize;\n }\n x += this.wSize;\n }\n }\n\n initGeometry() {\n // square\n const geometry = new Geometry();\n geometry.vertices.push(new Vector3(0, 0, 0));\n geometry.vertices.push(new Vector3(this.wSize, 0, 0));\n geometry.vertices.push(new Vector3(0, this.wSize, 0));\n geometry.vertices.push(new Vector3(this.wSize, this.wSize, 0));\n geometry.faces.push(new Face3(0, 2, 1));\n geometry.faces.push(new Face3(2, 3, 1));\n\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 0),\n new Vector2(0, 1),\n new Vector2(1, 0),\n ]);\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 1),\n new Vector2(1, 1),\n new Vector2(1, 0),\n ]);\n\n // geometry.computeFaceNormals();\n // geometry.computeVertexNormals();\n\n // center\n this.dx = this.wSize / 2;\n this.dy = this.wSize / 2;\n geometry.translate(-this.dx, -this.dy, 0);\n\n this.bGeometry = geometry.toBufferGeometry();\n }\n\n initAnimAttributes() {\n const { randFloat: rnd, randFloatSpread: rndFS } = MathUtils;\n const v3 = new Vector3();\n\n const offsets = new Float32Array(this.icount * 3);\n for (let i = 0; i < offsets.length; i += 3) {\n if (this.anim === 1) v3.set(rndFS(10), rnd(50, 100), rnd(20, 50)).toArray(offsets, i);\n else v3.set(rndFS(20), rndFS(20), rnd(20, 200)).toArray(offsets, i);\n }\n this.bGeometry.setAttribute('offset', new InstancedBufferAttribute(offsets, 3));\n\n const rotations = new Float32Array(this.icount * 3);\n const angle = Math.PI * 4;\n for (let i = 0; i < rotations.length; i += 3) {\n rotations[i] = rndFS(angle);\n rotations[i + 1] = rndFS(angle);\n rotations[i + 2] = rndFS(angle);\n }\n this.bGeometry.setAttribute('rotation', new InstancedBufferAttribute(rotations, 3));\n }\n\n initUV() {\n const ratio = this.nx / this.ny;\n const tRatio = this.texture.image.width / this.texture.image.height;\n if (ratio > tRatio) this.uvScale.set(1 / this.nx, (tRatio / ratio) / this.ny);\n else this.uvScale.set((ratio / tRatio) / this.nx, 1 / this.ny);\n const nW = this.uvScale.x * this.nx;\n const nH = this.uvScale.y * this.ny;\n\n const v2 = new Vector2();\n const uvOffsets = new Float32Array(this.icount * 2);\n for (let i = 0; i < this.nx; i++) {\n for (let j = 0; j < this.ny; j++) {\n v2.set(\n this.uvScale.x * i + (1 - nW) / 2,\n this.uvScale.y * j + (1 - nH) / 2\n ).toArray(uvOffsets, (i * this.ny + j) * 2);\n }\n }\n this.bGeometry.setAttribute('uvOffset', new InstancedBufferAttribute(uvOffsets, 2));\n }\n\n setTexture(texture) {\n this.texture = texture;\n this.material.map = texture;\n this.initUV();\n }\n\n resize() {\n this.initPlane();\n }\n}\n","import { TextureLoader } from 'three';\n\nexport default function useTextures() {\n const obj = {\n loader: new TextureLoader(),\n count: 0,\n textures: [],\n loadProgress: 0,\n loadTextures,\n dispose,\n };\n return obj;\n\n function loadTextures(images, cb) {\n obj.count = images.length;\n obj.textures.splice(0);\n obj.loadProgress = 0;\n Promise.all(images.map(loadTexture)).then(cb);\n };\n\n function loadTexture(img, index) {\n return new Promise(resolve => {\n obj.loader.load(\n img.src,\n texture => {\n obj.loadProgress += 1 / obj.count;\n obj.textures[index] = texture;\n resolve(texture);\n }\n );\n });\n };\n\n function dispose() {\n obj.textures.forEach(t => t.dispose());\n }\n};\n","\n\n\n","import {\n Mesh,\n PlaneBufferGeometry,\n ShaderMaterial,\n Vector2,\n} from 'three';\n\nexport default function ZoomBlurImage(three) {\n let geometry, material, mesh;\n\n const uMap = { value: null };\n const uCenter = { value: new Vector2(0.5, 0.5) };\n const uStrength = { value: 0 };\n const uUVOffset = { value: new Vector2(0, 0) };\n const uUVScale = { value: new Vector2(1, 1) };\n\n init();\n\n return { geometry, material, mesh, uCenter, uStrength, setMap, updateUV };\n\n function init() {\n geometry = new PlaneBufferGeometry(2, 2, 1, 1);\n\n material = new ShaderMaterial({\n transparent: true,\n uniforms: {\n map: uMap,\n center: uCenter,\n strength: uStrength,\n uvOffset: uUVOffset,\n uvScale: uUVScale,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n // adapted from https://github.com/evanw/glfx.js\n fragmentShader: `\n uniform sampler2D map;\n uniform vec2 center;\n uniform float strength;\n uniform vec2 uvOffset;\n uniform vec2 uvScale;\n varying vec2 vUv;\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 main() {\n vec2 tUv = vUv * uvScale + uvOffset;\n if (abs(strength) > 0.001) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center * uvScale + uvOffset - tUv;\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 \n for (float t = 0.0; t <= 20.0; t++) {\n float percent = (t + offset) / 20.0;\n float weight = 2.0 * (percent - percent * percent);\n vec4 texel = texture2D(map, tUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n gl_FragColor.a = 1.0 - abs(strength);\n } else {\n gl_FragColor = texture2D(map, tUv);\n }\n }\n `,\n });\n\n mesh = new Mesh(geometry, material);\n }\n\n function setMap(value) {\n uMap.value = value;\n updateUV();\n }\n\n function updateUV() {\n const ratio = three.size.ratio;\n const iRatio = uMap.value.image.width / uMap.value.image.height;\n uUVOffset.value.set(0, 0);\n uUVScale.value.set(1, 1);\n if (iRatio > ratio) {\n uUVScale.value.x = ratio / iRatio;\n uUVOffset.value.x = (1 - uUVScale.value.x) / 2;\n } else {\n uUVScale.value.y = iRatio / ratio;\n uUVOffset.value.y = (1 - uUVScale.value.y) / 2;\n }\n }\n}\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["useThree","const","conf","canvas","antialias","alpha","autoClear","orbit_ctrl","mouse_move","mouse_raycast","mouse_over","click","resize","width","height","size","wWidth","wHeight","ratio","afterInitCallbacks","afterResizeCallbacks","beforeRenderCallbacks","mouse","Vector2","mouseV3","Vector3","mousePlane","Plane","raycaster","Raycaster","intersectObjects","obj","renderer","camera","cameraCtrl","materials","scene","params","Object","entries","forEach","key","value","console","error","WebGLRenderer","orbitCtrl","OrbitControls","domElement","setSize","onResize","window","addEventListener","mouse_move_element","document","body","onMousemove","onMouseleave","onClick","c","removeEventListener","dispose","this","update","render","composer","callback","push","filter","o","indexOf","i","splice","updateMouse","e","rect","target","getBoundingClientRect","x","clientX","left","y","clientY","top","setFromCamera","objects","length","object","onMousechange","getWorldDirection","normal","normalize","ray","intersectPlane","onObjects","offObjects","hover","onHover","let","innerWidth","innerHeight","elt","parentNode","clientWidth","clientHeight","aspect","updateProjectionMatrix","type","right","bottom","wsize","vFOV","fov","Math","PI","h","tan","abs","position","z","getCameraSize","props","Boolean","default","mouseMove","String","mouseRaycast","mouseOver","shadow","setup","three","raf","onMountedCallbacks","provide","rendererComponent","mounted","$el","init","shadowMap","enabled","animateC","animate","beforeUnmount","methods","onMounted","onBeforeRender","onAfterResize","requestAnimationFrame","renderC","$slots","setFromProp","prop","propsValues","exclude","values","includes","lerp","value1","value2","amount","lerpv2","v1","v2","lerpv3","limit","val","min","max","getMatcapUrl","hash","format","MATCAP_ROOT","useBindProp","comp","ref","toRef","watch","deep","inject","Number","near","far","zoom","created","OrthographicCamera","p","__hmrId","PerspectiveCamera","rotation","scale","parent","group","Group","add","unmounted","remove","id","background","Scene","Color","emits","rotateX","rotateY","rotateZ","mesh","watchProps","$props","beforeMount","createGeometry","rotateGeometry","setGeometry","geometry","addWatchers","refreshGeometry","oldGeo","extends","Geometry","depth","widthSegments","heightSegments","depthSegments","w","d","BoxBufferGeometry","radius","segments","thetaStart","thetaLength","CircleBufferGeometry","radialSegments","openEnded","ConeBufferGeometry","radiusTop","radiusBottom","CylinderBufferGeometry","detail","DodecahedronBufferGeometry","IcosahedronBufferGeometry","points","Array","phiStart","phiLength","LatheBufferGeometry","OctahedronBufferGeometry","vertices","indices","PolyhedronBufferGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","tube","tubularSegments","arc","TorusBufferGeometry","q","TorusKnotBufferGeometry","path","Curve","radiusSegments","closed","TubeBufferGeometry","from","color","intensity","castShadow","shadowMapSize","light","mapSize","Light","AmbientLight","DirectionalLight","distance","decay","PointLight","angle","penumbra","SpotLight","depthTest","depthWrite","flatShading","fog","opacity","side","FrontSide","transparent","vertexColors","material","createMaterial","setMaterial","_addWatchers","setProp","needsUpdate","setTexture","texture","set","Material","MeshBasicMaterial","MeshLambertMaterial","src","name","opts","matcap","TextureLoader","load","MeshMatcapMaterial","emissive","emissiveIntensity","reflectivity","shininess","specular","MeshPhongMaterial","aoMapIntensity","bumpScale","displacementBias","displacementScale","envMapIntensity","lightMapIntensity","metalness","normalScale","roughness","refractionRatio","wireframe","MeshStandardMaterial","keys","StandardMaterial","MeshPhysicalMaterial","string","find","replace","meshphongFragHead","ShaderChunk","meshphong_frag","slice","meshphongFragBody","SubsurfaceScatteringShader","uniforms","UniformsUtils","merge","ShaderLib","phong","thicknessColor","thicknessDistortion","thicknessAmbient","thicknessAttenuation","thicknessPower","thicknessScale","vertexShader","fragmentShader","lights_fragment_begin","split","join","diffuse","clone","TShaderMaterial","lights","MeshToonMaterial","onLoad","Function","onProgress","onError","refreshTexture","createTexture","onLoaded","$emit","urls","refraction","CubeTextureLoader","setPath","mapping","CubeRefractionMapping","materialId","receiveShadow","initMesh","removeIntersectObject","Mesh","over","component","addIntersectObject","event","bindProps","PlaneBufferGeometry","text","fontSrc","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align","TextProps","font","FontLoader","TextBufferGeometry","center","cubeRTSize","cubeCameraNear","cubeCameraFar","autoUpdate","initGem","updateCubeRT","offBeforeRender","meshBack","materialBack","cubeRT","WebGLCubeRenderTarget","RGBFormat","generateMipmaps","minFilter","LinearMipmapLinearFilter","cubeCamera","CubeCamera","envMap","premultipliedAlpha","BackSide","TMesh","visible","keepSize","DoubleSide","map","loadTexture","screen","iRatio","image","count","InstancedMesh","initMirrorMesh","SpriteMaterial","sprite","Sprite","updateUV","iWidth","iHeight","positions","attributes","array","passes","onAfterInit","EffectComposer","pass","addPass","offAfterResize","EffectPass","RenderPass","focus","aperture","maxblur","BokehPass","noiseIntensity","scanlinesIntensity","scanlinesCount","grayscale","nIntensity","sIntensity","sCount","FilmPass","ShaderPass","FXAAShader","resolution","shape","rotateR","rotateG","rotateB","scatter","HalftonePass","SMAAPass","tDiffuse","blurRadius","gradientRadius","start","end","delta","texSize","DefaultShader","useBindPropValue","srcProp","dst","dstProp","TiltShift","pass1","uniforms1","updateFocusLine","copy","dv","sub","strength","threshold","UnrealBloomPass","ZoomBlur","Image","timeCoef","noiseCoef","zCoef","dispCoef","uNoiseCoef","uZCoef","uDispCoef","startTime","Date","now","updateTime","onBeforeCompile","shader","uTime","snoise2","materialShader","deltaCoef","uDelta","fsQuad","dispRT","dispMat","normRT","normMat","Pass","FullScreenQuad","WebGLRenderTarget","depthBuffer","stencilBuffer","ShaderMaterial","dispMap","displacementMap","normalMap","normalMapType","ObjectSpaceNormalMap","renderDisp","renderMat","mat","oldTarget","getRenderTarget","setRenderTarget","Sphere","updateMaterial","needsupdate","Text","AnimatedPlane","o3d","Object3D","uProgress","uvScale","initMaterial","initPlane","useTextures","loader","textures","loadProgress","images","cb","Promise","all","then","t","img","index","resolve","progress","wSize","nx","ceil","ny","icount","initGeometry","initUV","initAnimAttributes","imesh","bGeometry","dummy","dx","dy","j","updateMatrix","setMatrixAt","matrix","faces","Face3","faceVertexUvs","translate","toBufferGeometry","v3","offsets","Float32Array","anim","rndFS","rnd","toArray","setAttribute","InstancedBufferAttribute","rotations","tRatio","nW","nH","uvOffsets","events","wheel","keyup","targetProgress","$refs","loadTextures","onWheel","onKeyup","initScene","gsap","fromTo","plane1","duration","ease","Power4","easeOut","updateProgress","plane2","setPlanesProgress","planes","deltaY","setTargetProgress","navPrevious","navNext","keyCode","isInteger","floor","progress1","pdiff","p0","p1","ZoomBlurImage","uMap","uCenter","uStrength","uUVOffset","uUVScale","uvOffset","_createBlock","_createVNode","image1","setMap","image2","setImagesProgress","divideScalar","addScalar","mouse-move","cameraPosition","GLTFLoader","gltf","orbit-ctrl","_renderSlot","TroisJSVuePlugin","install","app","TROIS"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index d894259..5801825 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "troisjs", - "version": "0.1.3", + "version": "0.1.4", "scripts": { "dev": "vite", "build": "vite build", diff --git a/rollup.config.js b/rollup.config.js index 0210150..bc9884e 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -43,35 +43,6 @@ const plugins = [ ]; export default [ - // { - // input, - // external, - // output: { - // format: 'umd', - // name: 'TroisJS', - // file: 'build/trois.umd.js', - // sourcemap: true, - // globals: { - // 'three': 'THREE', - // 'vue': 'Vue', - // }, - // }, - // plugins, - // }, - // { - // input, - // external, - // output: { - // format: 'umd', - // name: 'TroisJS', - // file: 'build/trois.umd.min.js', - // sourcemap: true, - // }, - // plugins: [ - // ...plugins, - // terser(), - // ], - // }, { input, external, @@ -126,24 +97,24 @@ export default [ terser(), ], }, - // { - // input, - // external: [ - // 'gsap', - // 'vue', - // ], - // output: { - // format: 'cjs', - // file: 'build/trois.js', - // sourcemap: true, - // }, - // plugins: [ - // ...plugins, - // resolve({ - // moduleDirectories: ['node_modules'], - // }), - // ], - // }, + { + input, + external: [ + 'gsap', + 'vue', + ], + output: { + format: 'cjs', + file: 'build/trois.js', + sourcemap: false, + }, + plugins: [ + ...plugins, + resolve({ + moduleDirectories: ['node_modules'], + }), + ], + }, // { // input, // external: [