diff --git a/example/r3f/atmosphere.html b/example/r3f/atmosphere.html
new file mode 100644
index 000000000..d7a942dcf
--- /dev/null
+++ b/example/r3f/atmosphere.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+ @react-three/fiber Cesium Ion
+
+
+
+
+
+
+
+
diff --git a/example/r3f/atmosphere.jsx b/example/r3f/atmosphere.jsx
new file mode 100644
index 000000000..9b2d4f781
--- /dev/null
+++ b/example/r3f/atmosphere.jsx
@@ -0,0 +1,183 @@
+import { StrictMode, useRef } from 'react';
+import { createRoot } from 'react-dom/client';
+
+// TilesRenderer, controls and attribution imports
+import {
+ TilesPlugin,
+ TilesRenderer,
+ TilesAttributionOverlay,
+ GlobeControls,
+ CompassGizmo,
+ CameraTransition,
+} from '3d-tiles-renderer/r3f';
+
+// Plugins
+import {
+ GoogleCloudAuthPlugin,
+ UpdateOnChangePlugin,
+ TileCompressionPlugin,
+ TilesFadePlugin,
+ GLTFExtensionsPlugin,
+} from '3d-tiles-renderer/plugins';
+import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
+
+// R3F, DREI and LEVA imports
+import { Canvas, useFrame, useThree } from '@react-three/fiber';
+import { useControls } from 'leva';
+import { MathUtils } from 'three';
+
+// Postprocessing
+import { EffectComposer, SMAA, ToneMapping } from '@react-three/postprocessing';
+import { EffectMaterial, ToneMappingMode } from 'postprocessing';
+
+// Atmosphere
+import {
+ AerialPerspective,
+ Atmosphere,
+ Sky,
+ Stars,
+} from '@takram/three-atmosphere/r3f';
+import { Dithering, LensFlare, } from '@takram/three-geospatial-effects/r3f';
+import { toCreasedNormals } from 'three/examples/jsm/utils/BufferGeometryUtils.js';
+
+// Plugin to generate creased normals for the tiles
+class TileCreasedNormalsPlugin {
+
+ processTileModel( scene ) {
+
+ scene.traverse( c => {
+
+ if ( c.geometry ) {
+
+ c.geometry = toCreasedNormals( c.geometry, MathUtils.degToRad( 30 ) );
+
+ }
+
+ } );
+
+ }
+
+}
+
+const dracoLoader = new DRACOLoader().setDecoderPath( 'https://www.gstatic.com/draco/v1/decoders/' );
+function App() {
+
+ const levaParams = {
+ apiToken: {
+ value: localStorage.getItem( 'google-token' ) || 'put-your-api-key-here',
+ onChange: ( value ) => localStorage.setItem( 'google-token', value ),
+ transient: false,
+ },
+ ortho: false,
+ };
+
+ // TODO: the renderer is rerendering due to floating point issues
+ // - see if we should trigger an invalidate on tiles plugin add and params change
+ // - see if we need to trigger a force update on plugin add for the UpdateOnChange plugin
+
+ const camera = useThree( ( { camera } ) => camera );
+ const gl = useThree( ( { gl } ) => gl );
+ gl.toneMappingExposure = 10;
+
+ const atmosphereRef = useRef( null );
+ const composerRef = useRef( null );
+ useFrame( () => {
+
+ atmosphereRef.current?.updateByDate( Date.now() );
+
+ const composer = composerRef.current;
+ if ( composer != null ) {
+
+ composer.passes.forEach( pass => {
+
+ if ( pass.fullscreenMaterial instanceof EffectMaterial ) {
+
+ pass.fullscreenMaterial.adoptCameraSettings( camera );
+
+ }
+
+ } );
+
+ }
+
+ } );
+
+ window.CAMERA = camera;
+
+ const { apiToken, ortho } = useControls( levaParams );
+ return (
+ <>
+
+
+
+
+
+
+
+
+ {/* Controls */}
+
+
+ {/* Attributions */}
+
+
+ {/* Add compass gizmo */}
+
+
+
+ {/* Atmosphere set up */}
+
+ {/* Background */}
+
+
+
+ {/* Atmosphere effects */}
+
+
+
+
+
+
+
+
+
+ >
+ );
+
+}
+
+createRoot( document.getElementById( 'root' ) ).render(
+
+
+ ,
+);
+
diff --git a/example/r3f/globe.jsx b/example/r3f/globe.jsx
index 0a9fb3022..f21b47518 100644
--- a/example/r3f/globe.jsx
+++ b/example/r3f/globe.jsx
@@ -104,10 +104,6 @@ function App() {
>
- {/*
- 3D Tiles renderer tile set
- Use a "key" property to ensure the tiles renderer gets recreated when the api token or asset change
- */}
diff --git a/package-lock.json b/package-lock.json
index 5aed20620..59c22f8ab 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,6 +8,13 @@
"name": "3d-tiles-renderer",
"version": "0.3.45",
"license": "Apache-2.0",
+ "dependencies": {
+ "@react-three/postprocessing": "^2.16.3",
+ "@takram/three-atmosphere": "^0.5.0",
+ "@takram/three-geospatial": "^0.0.1-alpha.4",
+ "@takram/three-geospatial-effects": "^0.0.1-alpha.4",
+ "postprocessing": "^6.36.4"
+ },
"devDependencies": {
"@babel/core": "^7.21.8",
"@babel/preset-env": "^7.21.5",
@@ -1653,10 +1660,10 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.25.7",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz",
- "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==",
- "devOptional": true,
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+ "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
+ "license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
@@ -3875,16 +3882,17 @@
}
},
"node_modules/@mediapipe/tasks-vision": {
- "version": "0.10.8",
- "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.8.tgz",
- "integrity": "sha512-Rp7ll8BHrKB3wXaRFKhrltwZl1CiXGdibPxuWXvqGnKTnv8fqa/nvftYNuSbf+pbJWKYCXdBtYTITdAUTGGh0Q==",
- "dev": true
+ "version": "0.10.17",
+ "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.17.tgz",
+ "integrity": "sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg==",
+ "devOptional": true,
+ "license": "Apache-2.0"
},
"node_modules/@monogrid/gainmap-js": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.0.6.tgz",
"integrity": "sha512-ireqJg7cw0tUn/JePDG8rAL7RyXgUKSDbjYdiygkrnye1WuKGLAWDBwF/ICwCwJ9iZBAF5caU8gSu+c34HLGdQ==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"promise-worker-transferable": "^1.0.4"
},
@@ -4397,28 +4405,29 @@
"dev": true
},
"node_modules/@react-spring/animated": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.6.1.tgz",
- "integrity": "sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==",
- "dev": true,
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.5.tgz",
+ "integrity": "sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==",
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
- "@react-spring/shared": "~9.6.1",
- "@react-spring/types": "~9.6.1"
+ "@react-spring/shared": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/@react-spring/core": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.6.1.tgz",
- "integrity": "sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==",
- "dev": true,
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.5.tgz",
+ "integrity": "sha512-rmEqcxRcu7dWh7MnCcMXLvrf6/SDlSokLaLTxiPlAYi11nN3B5oiCUAblO72o+9z/87j2uzxa2Inm8UbLjXA+w==",
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
- "@react-spring/animated": "~9.6.1",
- "@react-spring/rafz": "~9.6.1",
- "@react-spring/shared": "~9.6.1",
- "@react-spring/types": "~9.6.1"
+ "@react-spring/animated": "~9.7.5",
+ "@react-spring/shared": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
},
"funding": {
"type": "opencollective",
@@ -4429,34 +4438,37 @@
}
},
"node_modules/@react-spring/rafz": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.6.1.tgz",
- "integrity": "sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==",
- "dev": true
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.7.5.tgz",
+ "integrity": "sha512-5ZenDQMC48wjUzPAm1EtwQ5Ot3bLIAwwqP2w2owG5KoNdNHpEJV263nGhCeKKmuA3vG2zLLOdu3or6kuDjA6Aw==",
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/@react-spring/shared": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.6.1.tgz",
- "integrity": "sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==",
- "dev": true,
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.5.tgz",
+ "integrity": "sha512-wdtoJrhUeeyD/PP/zo+np2s1Z820Ohr/BbuVYv+3dVLW7WctoiN7std8rISoYoHpUXtbkpesSKuPIw/6U1w1Pw==",
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
- "@react-spring/rafz": "~9.6.1",
- "@react-spring/types": "~9.6.1"
+ "@react-spring/rafz": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/@react-spring/three": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.6.1.tgz",
- "integrity": "sha512-Tyw2YhZPKJAX3t2FcqvpLRb71CyTe1GvT3V+i+xJzfALgpk10uPGdGaQQ5Xrzmok1340DAeg2pR/MCfaW7b8AA==",
- "dev": true,
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.7.5.tgz",
+ "integrity": "sha512-RxIsCoQfUqOS3POmhVHa1wdWS0wyHAUway73uRLp3GAL5U2iYVNdnzQsep6M2NZ994BlW8TcKuMtQHUqOsy6WA==",
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
- "@react-spring/animated": "~9.6.1",
- "@react-spring/core": "~9.6.1",
- "@react-spring/shared": "~9.6.1",
- "@react-spring/types": "~9.6.1"
+ "@react-spring/animated": "~9.7.5",
+ "@react-spring/core": "~9.7.5",
+ "@react-spring/shared": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
},
"peerDependencies": {
"@react-three/fiber": ">=6.0",
@@ -4465,45 +4477,47 @@
}
},
"node_modules/@react-spring/types": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.6.1.tgz",
- "integrity": "sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==",
- "dev": true
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.5.tgz",
+ "integrity": "sha512-HVj7LrZ4ReHWBimBvu2SKND3cDVUPWKLqRTmWe/fNY6o1owGOX0cAHbdPDTMelgBlVbrTKrre6lFkhqGZErK/g==",
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/@react-three/drei": {
- "version": "9.114.3",
- "resolved": "https://registry.npmjs.org/@react-three/drei/-/drei-9.114.3.tgz",
- "integrity": "sha512-hPKPYmxTb2P1mOdhkouJbKJVcfFK5JmThr/97i4zkweoNzWBHNde090A6r0SFFb4tGaTtHM4/kyfVx5PrzjTMw==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.11.2",
- "@mediapipe/tasks-vision": "0.10.8",
- "@monogrid/gainmap-js": "^3.0.5",
- "@react-spring/three": "~9.6.1",
- "@use-gesture/react": "^10.2.24",
- "camera-controls": "^2.4.2",
+ "version": "9.120.4",
+ "resolved": "https://registry.npmjs.org/@react-three/drei/-/drei-9.120.4.tgz",
+ "integrity": "sha512-keO7gHudafooXZxqukzPYIvhkBLL+PsnteuUPcHE3WZ5Hq1tC78AlY0kvm4NkC0w6tfsxpWl1yAYbUcnSPSmGg==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@mediapipe/tasks-vision": "0.10.17",
+ "@monogrid/gainmap-js": "^3.0.6",
+ "@react-spring/three": "~9.7.5",
+ "@use-gesture/react": "^10.3.1",
+ "camera-controls": "^2.9.0",
"cross-env": "^7.0.3",
- "detect-gpu": "^5.0.28",
+ "detect-gpu": "^5.0.56",
"glsl-noise": "^0.0.0",
- "hls.js": "1.3.5",
- "maath": "^0.10.7",
- "meshline": "^3.1.6",
+ "hls.js": "^1.5.17",
+ "maath": "^0.10.8",
+ "meshline": "^3.3.1",
"react-composer": "^5.0.3",
- "stats-gl": "^2.0.0",
+ "stats-gl": "^2.2.8",
"stats.js": "^0.17.0",
"suspend-react": "^0.1.3",
"three-mesh-bvh": "^0.7.8",
- "three-stdlib": "^2.29.9",
- "troika-three-text": "^0.49.0",
+ "three-stdlib": "^2.34.0",
+ "troika-three-text": "^0.52.0",
"tunnel-rat": "^0.1.2",
- "utility-types": "^3.10.0",
+ "utility-types": "^3.11.0",
"uuid": "^9.0.1",
- "zustand": "^3.7.1"
+ "zustand": "^5.0.1"
},
"peerDependencies": {
- "@react-three/fiber": ">=8.0",
- "react": ">=18.0",
- "react-dom": ">=18.0",
+ "@react-three/fiber": "^8 || ^9.0.0-0",
+ "react": "^18",
+ "react-dom": "^18",
"three": ">=0.137"
},
"peerDependenciesMeta": {
@@ -4512,11 +4526,40 @@
}
}
},
+ "node_modules/@react-three/drei/node_modules/zustand": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.2.tgz",
+ "integrity": "sha512-8qNdnJVJlHlrKXi50LDqqUNmUbuBjoKLrYQBnoChIbVph7vni+sY+YpvdjXG9YLd/Bxr6scMcR+rm5H3aSqPaw==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20.0"
+ },
+ "peerDependencies": {
+ "@types/react": ">=18.0.0",
+ "immer": ">=9.0.6",
+ "react": ">=18.0.0",
+ "use-sync-external-store": ">=1.2.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "immer": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "use-sync-external-store": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@react-three/fiber": {
"version": "8.17.10",
"resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.17.10.tgz",
"integrity": "sha512-S6bqa4DqUooEkInYv/W+Jklv2zjSYCXAhm6qKpAQyOXhTEt5gBXnA7W6aoJ0bjmp9pAeaSj/AZUoz1HCSof/uA==",
- "devOptional": true,
"dependencies": {
"@babel/runtime": "^7.17.8",
"@types/debounce": "^1.2.1",
@@ -4562,6 +4605,34 @@
}
}
},
+ "node_modules/@react-three/postprocessing": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/@react-three/postprocessing/-/postprocessing-2.16.3.tgz",
+ "integrity": "sha512-ftodXpUsy0/mzn0KqyV7MBau71dD9C5UOFnB3kHhCLNoxjKYQWZa9do0olJTSkl3owYXRfNHcLriK1Xn8wxZJw==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer": "^6.0.3",
+ "maath": "^0.6.0",
+ "n8ao": "^1.6.6",
+ "postprocessing": "^6.32.1",
+ "three-stdlib": "^2.23.4"
+ },
+ "peerDependencies": {
+ "@react-three/fiber": ">=8.0",
+ "react": ">=18.0",
+ "three": ">= 0.138.0"
+ }
+ },
+ "node_modules/@react-three/postprocessing/node_modules/maath": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/maath/-/maath-0.6.0.tgz",
+ "integrity": "sha512-dSb2xQuP7vDnaYqfoKzlApeRcR2xtN8/f7WV/TMAkBC8552TwTLtOO0JTcSygkYMjNDPoo6V01jTw/aPi4JrMw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/three": ">=0.144.0",
+ "three": ">=0.144.0"
+ }
+ },
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.24.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz",
@@ -4803,6 +4874,97 @@
"react": ">= 16.3.0"
}
},
+ "node_modules/@takram/three-atmosphere": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@takram/three-atmosphere/-/three-atmosphere-0.5.0.tgz",
+ "integrity": "sha512-T00AqrE+TYdbpwK/3G9ZNFZbXCMYIIOBs5lbpQytzKMuq/CRxE4RUu6n5ODb4tJocqa7O5g0iLFifIfoKvfd8g==",
+ "license": "MIT",
+ "dependencies": {
+ "@takram/three-geospatial": "0.0.1-alpha.4",
+ "astronomy-engine": "^2.1.19",
+ "react-merge-refs": "^2.1.1",
+ "tiny-invariant": "^1.3.3",
+ "url-join": "^5.0.0"
+ },
+ "peerDependencies": {
+ "@react-three/drei": ">=9.117.3",
+ "@react-three/fiber": ">=8.17.10",
+ "@react-three/postprocessing": ">=2.16.3",
+ "postprocessing": ">=6.36.4",
+ "react": ">=18.0",
+ "three": ">=0.170.0"
+ },
+ "peerDependenciesMeta": {
+ "@react-three/drei": {
+ "optional": true
+ },
+ "@react-three/fiber": {
+ "optional": true
+ },
+ "@react-three/postprocessing": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@takram/three-geospatial": {
+ "version": "0.0.1-alpha.4",
+ "resolved": "https://registry.npmjs.org/@takram/three-geospatial/-/three-geospatial-0.0.1-alpha.4.tgz",
+ "integrity": "sha512-QF87u99+ZEfwADXckr9V/bVxVc2e/HOJrAj5uyhJkM89l2EKSyzCr1Q609LyQNYp1rsbzZX5QAfKsFByxjTooQ==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash-es": "^4.17.21",
+ "react-merge-refs": "^2.1.1",
+ "tiny-invariant": "^1.3.3",
+ "type-fest": "^4.28.0"
+ },
+ "peerDependencies": {
+ "@react-three/fiber": ">=8.17.10",
+ "react": ">=18.0",
+ "three": ">=0.170.0"
+ }
+ },
+ "node_modules/@takram/three-geospatial-effects": {
+ "version": "0.0.1-alpha.4",
+ "resolved": "https://registry.npmjs.org/@takram/three-geospatial-effects/-/three-geospatial-effects-0.0.1-alpha.4.tgz",
+ "integrity": "sha512-lnX8rclzG9j7uCRLqtwcRDst7eH/8afbIeIZ/S3bojZKot11svpMBdpOCYmPOlhjlrUcIgspHKujgqqi3dRAcA==",
+ "dependencies": {
+ "@takram/three-geospatial": "0.0.1-alpha.4",
+ "n8ao": "^1.9.3"
+ },
+ "peerDependencies": {
+ "@react-three/fiber": ">=8.17.10",
+ "@react-three/postprocessing": ">=2.16.3",
+ "postprocessing": ">=6.36.4",
+ "react": ">=18.0",
+ "three": ">=0.170.0"
+ },
+ "peerDependenciesMeta": {
+ "@react-three/fiber": {
+ "optional": true
+ },
+ "@react-three/postprocessing": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@takram/three-geospatial/node_modules/type-fest": {
+ "version": "4.30.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.2.tgz",
+ "integrity": "sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@tootallnate/once": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
@@ -4815,8 +4977,7 @@
"node_modules/@tweenjs/tween.js": {
"version": "23.1.3",
"resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz",
- "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==",
- "dev": true
+ "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA=="
},
"node_modules/@types/babel__core": {
"version": "7.20.5",
@@ -4862,14 +5023,13 @@
"node_modules/@types/debounce": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.4.tgz",
- "integrity": "sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==",
- "devOptional": true
+ "integrity": "sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw=="
},
"node_modules/@types/draco3d": {
"version": "1.4.10",
"resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.10.tgz",
"integrity": "sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==",
- "dev": true
+ "license": "MIT"
},
"node_modules/@types/eslint": {
"version": "7.29.0",
@@ -4939,7 +5099,7 @@
"version": "2019.7.3",
"resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz",
"integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==",
- "dev": true
+ "license": "MIT"
},
"node_modules/@types/prettier": {
"version": "2.7.3",
@@ -4950,14 +5110,12 @@
"node_modules/@types/prop-types": {
"version": "15.7.13",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
- "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
- "devOptional": true
+ "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA=="
},
"node_modules/@types/react": {
"version": "18.3.11",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz",
"integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==",
- "devOptional": true,
"dependencies": {
"@types/prop-types": "*",
"csstype": "^3.0.2"
@@ -4967,7 +5125,6 @@
"version": "0.26.7",
"resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz",
"integrity": "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==",
- "devOptional": true,
"dependencies": {
"@types/react": "*"
}
@@ -4981,14 +5138,12 @@
"node_modules/@types/stats.js": {
"version": "0.17.3",
"resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz",
- "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==",
- "dev": true
+ "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ=="
},
"node_modules/@types/three": {
"version": "0.166.0",
"resolved": "https://registry.npmjs.org/@types/three/-/three-0.166.0.tgz",
"integrity": "sha512-FHMnpcdhdbdOOIYbfkTkUVpYMW53odxbTRwd0/xJpYnTzEsjnVnondGAvHZb4z06UW0vo6WPVuvH0/9qrxKx7g==",
- "dev": true,
"dependencies": {
"@tweenjs/tween.js": "~23.1.2",
"@types/stats.js": "*",
@@ -5000,8 +5155,7 @@
"node_modules/@types/webxr": {
"version": "0.5.20",
"resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.20.tgz",
- "integrity": "sha512-JGpU6qiIJQKUuVSKx1GtQnHJGxRjtfGIhzO2ilq43VZZS//f1h1Sgexbdk+Lq+7569a6EYhOWrUpIruR/1Enmg==",
- "devOptional": true
+ "integrity": "sha512-JGpU6qiIJQKUuVSKx1GtQnHJGxRjtfGIhzO2ilq43VZZS//f1h1Sgexbdk+Lq+7569a6EYhOWrUpIruR/1Enmg=="
},
"node_modules/@types/yargs": {
"version": "17.0.33",
@@ -5226,13 +5380,13 @@
"version": "10.3.1",
"resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz",
"integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==",
- "dev": true
+ "devOptional": true
},
"node_modules/@use-gesture/react": {
"version": "10.3.1",
"resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz",
"integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"@use-gesture/core": "10.3.1"
},
@@ -5565,6 +5719,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/astronomy-engine": {
+ "version": "2.1.19",
+ "resolved": "https://registry.npmjs.org/astronomy-engine/-/astronomy-engine-2.1.19.tgz",
+ "integrity": "sha512-8yWKNf7UeNbH458h3sAJ6ZgAjE5jTXp/mNNRFoC20j2SHwZIjAQeEsBB2Q3uCFRaTCCJRv33K2XhkhZQMXoX6w==",
+ "license": "MIT"
+ },
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -5817,7 +5977,6 @@
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "devOptional": true,
"funding": [
{
"type": "github",
@@ -5837,7 +5996,8 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
"integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"require-from-string": "^2.0.2"
}
@@ -5920,7 +6080,6 @@
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "devOptional": true,
"funding": [
{
"type": "github",
@@ -5987,7 +6146,7 @@
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/camera-controls/-/camera-controls-2.9.0.tgz",
"integrity": "sha512-TpCujnP0vqPppTXXJRYpvIy0xq9Tro6jQf2iYUxlDpPCNxkvE/XGaTuwIxnhINOkVP/ob2CRYXtY3iVYXeMEzA==",
- "dev": true,
+ "devOptional": true,
"peerDependencies": {
"three": ">=0.126.1"
}
@@ -6271,7 +6430,7 @@
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
"integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"cross-spawn": "^7.0.1"
},
@@ -6289,7 +6448,7 @@
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -6326,8 +6485,7 @@
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
- "devOptional": true
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"node_modules/data-urls": {
"version": "2.0.0",
@@ -6413,8 +6571,7 @@
"node_modules/debounce": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
- "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
- "devOptional": true
+ "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="
},
"node_modules/debug": {
"version": "4.3.7",
@@ -6514,10 +6671,11 @@
}
},
"node_modules/detect-gpu": {
- "version": "5.0.51",
- "resolved": "https://registry.npmjs.org/detect-gpu/-/detect-gpu-5.0.51.tgz",
- "integrity": "sha512-7P+5KDthVGXXWS06EuqBIq7YBijxfaNfm+BSFNTRAkZP26J97ASssh5KoR53diWNcBNOEb1ILfdsz2pzesSgYw==",
- "dev": true,
+ "version": "5.0.61",
+ "resolved": "https://registry.npmjs.org/detect-gpu/-/detect-gpu-5.0.61.tgz",
+ "integrity": "sha512-7fe6+weEj1JAQl4ys/pcuCtR0m70FCpsgAb4oox6udPUzBD44U+kMBfudCZWv3ytJZnbKT9hxaQto3jbIeJttQ==",
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"webgl-constants": "^1.1.1"
}
@@ -6596,8 +6754,7 @@
"node_modules/draco3d": {
"version": "1.5.7",
"resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.7.tgz",
- "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==",
- "dev": true
+ "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ=="
},
"node_modules/earcut": {
"version": "3.0.0",
@@ -7619,8 +7776,7 @@
"node_modules/fflate": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
- "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
- "dev": true
+ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="
},
"node_modules/file-entry-cache": {
"version": "6.0.1",
@@ -7971,7 +8127,7 @@
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz",
"integrity": "sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==",
- "dev": true
+ "devOptional": true
},
"node_modules/gopd": {
"version": "1.0.1",
@@ -8085,10 +8241,11 @@
}
},
"node_modules/hls.js": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.3.5.tgz",
- "integrity": "sha512-uybAvKS6uDe0MnWNEPnO0krWVr+8m2R0hJ/viql8H3MVK+itq8gGQuIYoFHL3rECkIpNH98Lw8YuuWMKZxp3Ew==",
- "dev": true
+ "version": "1.5.18",
+ "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.18.tgz",
+ "integrity": "sha512-znxR+2jecWluu/0KOBqUcvVyAB5tLff10vjMGrpAlz1eFY+ZhF1bY3r82V+Bk7WJdk03iTjtja9KFFz5BrqjSA==",
+ "devOptional": true,
+ "license": "Apache-2.0"
},
"node_modules/html-encoding-sniffer": {
"version": "2.0.1",
@@ -8160,7 +8317,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "devOptional": true,
"funding": [
{
"type": "github",
@@ -8189,7 +8345,7 @@
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
- "dev": true
+ "devOptional": true
},
"node_modules/import-fresh": {
"version": "3.3.0",
@@ -8557,7 +8713,7 @@
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
"integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
- "dev": true
+ "devOptional": true
},
"node_modules/is-regex": {
"version": "1.1.4",
@@ -8715,7 +8871,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "devOptional": true
},
"node_modules/isobject": {
"version": "3.0.1",
@@ -8833,7 +8989,6 @@
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/its-fine/-/its-fine-1.2.5.tgz",
"integrity": "sha512-fXtDA0X0t0eBYAGLVM5YsgJGsJ5jEmqZEPrGbzdf5awjv0xE7nqv3TVnvtUF060Tkes15DbDAKW/I48vsb6SyA==",
- "devOptional": true,
"dependencies": {
"@types/react-reconciler": "^0.28.0"
},
@@ -8845,7 +9000,6 @@
"version": "0.28.8",
"resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.8.tgz",
"integrity": "sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==",
- "devOptional": true,
"dependencies": {
"@types/react": "*"
}
@@ -11967,8 +12121,7 @@
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "devOptional": true
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"node_modules/js-yaml": {
"version": "3.14.1",
@@ -12191,7 +12344,7 @@
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"immediate": "~3.0.5"
}
@@ -12220,6 +12373,12 @@
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
+ "license": "MIT"
+ },
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
@@ -12243,7 +12402,6 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "devOptional": true,
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
@@ -12264,7 +12422,7 @@
"version": "0.10.8",
"resolved": "https://registry.npmjs.org/maath/-/maath-0.10.8.tgz",
"integrity": "sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==",
- "dev": true,
+ "devOptional": true,
"peerDependencies": {
"@types/three": ">=0.134.0",
"three": ">=0.134.0"
@@ -12346,7 +12504,7 @@
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/meshline/-/meshline-3.3.1.tgz",
"integrity": "sha512-/TQj+JdZkeSUOl5Mk2J7eLcYTLiQm2IDzmlSvYm7ov15anEcDJ92GHqqazxTSreeNgfnYu24kiEvvv0WlbCdFQ==",
- "dev": true,
+ "devOptional": true,
"peerDependencies": {
"three": ">=0.137"
}
@@ -12354,8 +12512,7 @@
"node_modules/meshoptimizer": {
"version": "0.18.1",
"resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz",
- "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==",
- "dev": true
+ "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw=="
},
"node_modules/micromatch": {
"version": "4.0.8",
@@ -12434,6 +12591,16 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
+ "node_modules/n8ao": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/n8ao/-/n8ao-1.9.3.tgz",
+ "integrity": "sha512-OZX+u8LaEfxLi6lupuyT8gIv80D6D8FIeKbBNkCyY0nE+1wmm6sQ4yeyW3a15lFMrfTcEhe0AU8QhhDejHg7sg==",
+ "license": "ISC",
+ "peerDependencies": {
+ "postprocessing": ">=6.30.0",
+ "three": ">=0.137"
+ }
+ },
"node_modules/nanoid": {
"version": "3.3.8",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
@@ -12507,7 +12674,7 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true,
+ "devOptional": true,
"engines": {
"node": ">=0.10.0"
}
@@ -12743,7 +12910,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
+ "devOptional": true,
"engines": {
"node": ">=8"
}
@@ -12839,11 +13006,20 @@
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/postprocessing": {
+ "version": "6.36.4",
+ "resolved": "https://registry.npmjs.org/postprocessing/-/postprocessing-6.36.4.tgz",
+ "integrity": "sha512-3fAyBGuLNR7Rg/q+f2SNlsVCI5mDrymvxhOif3tPKEej8M38z4TvwzNZm+RNpRY2tACE7qQUNE5IHyMcqgvlAg==",
+ "license": "Zlib",
+ "peerDependencies": {
+ "three": ">= 0.157.0 < 0.171.0"
+ }
+ },
"node_modules/potpack": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz",
"integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==",
- "dev": true
+ "license": "ISC"
},
"node_modules/prelude-ls": {
"version": "1.2.1",
@@ -12885,7 +13061,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz",
"integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"is-promise": "^2.1.0",
"lie": "^3.0.2"
@@ -12908,7 +13084,7 @@
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
@@ -12919,7 +13095,7 @@
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "dev": true
+ "devOptional": true
},
"node_modules/protobufjs": {
"version": "7.4.0",
@@ -13005,7 +13181,6 @@
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
- "devOptional": true,
"dependencies": {
"loose-envify": "^1.1.0"
},
@@ -13027,7 +13202,7 @@
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/react-composer/-/react-composer-5.0.3.tgz",
"integrity": "sha512-1uWd07EME6XZvMfapwZmc7NgCZqDemcvicRi3wMJzXsQLvZ3L7fTHVyPy1bZdnWXM4iPjYuNE+uJ41MLKeTtnA==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"prop-types": "^15.6.0"
},
@@ -13080,11 +13255,20 @@
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
"dev": true
},
+ "node_modules/react-merge-refs": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-2.1.1.tgz",
+ "integrity": "sha512-jLQXJ/URln51zskhgppGJ2ub7b2WFKGq3cl3NYKtlHoTG+dN2q7EzWrn3hN3EgPsTMvpR9tpq5ijdp7YwFZkag==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
"node_modules/react-reconciler": {
"version": "0.27.0",
"resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz",
"integrity": "sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==",
- "devOptional": true,
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.21.0"
@@ -13147,8 +13331,7 @@
"node_modules/regenerator-runtime": {
"version": "0.14.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
- "devOptional": true
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
},
"node_modules/regenerator-transform": {
"version": "0.15.2",
@@ -13225,7 +13408,8 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -13442,7 +13626,6 @@
"version": "0.21.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz",
"integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==",
- "devOptional": true,
"dependencies": {
"loose-envify": "^1.1.0"
}
@@ -13516,7 +13699,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -13528,7 +13711,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
+ "devOptional": true,
"engines": {
"node": ">=8"
}
@@ -13662,7 +13845,7 @@
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/stats-gl/-/stats-gl-2.2.8.tgz",
"integrity": "sha512-94G5nZvduDmzxBS7K0lYnynYwreZpkknD8g5dZmU6mpwIhy3caCrjAm11Qm1cbyx7mqix7Fp00RkbsonzKWnoQ==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"@types/three": "^0.163.0"
}
@@ -13671,7 +13854,7 @@
"version": "0.163.0",
"resolved": "https://registry.npmjs.org/@types/three/-/three-0.163.0.tgz",
"integrity": "sha512-uIdDhsXRpQiBUkflBS/i1l3JX14fW6Ot9csed60nfbZNXHDTRsnV2xnTVwXcgbvTiboAR4IW+t+lTL5f1rqIqA==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"@tweenjs/tween.js": "~23.1.1",
"@types/stats.js": "*",
@@ -13684,7 +13867,7 @@
"version": "0.17.0",
"resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz",
"integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==",
- "dev": true
+ "devOptional": true
},
"node_modules/string-length": {
"version": "4.0.2",
@@ -13902,7 +14085,6 @@
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz",
"integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==",
- "devOptional": true,
"peerDependencies": {
"react": ">=17.0"
}
@@ -13975,24 +14157,23 @@
"node_modules/three": {
"version": "0.170.0",
"resolved": "https://registry.npmjs.org/three/-/three-0.170.0.tgz",
- "integrity": "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ==",
- "devOptional": true
+ "integrity": "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ=="
},
"node_modules/three-mesh-bvh": {
"version": "0.7.8",
"resolved": "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.7.8.tgz",
"integrity": "sha512-BGEZTOIC14U0XIRw3tO4jY7IjP7n7v24nv9JXS1CyeVRWOCkcOMhRnmENUjuV39gktAw4Ofhr0OvIAiTspQrrw==",
"deprecated": "Deprecated due to three.js version incompatibility. Please use v0.8.0, instead.",
- "dev": true,
+ "devOptional": true,
"peerDependencies": {
"three": ">= 0.151.0"
}
},
"node_modules/three-stdlib": {
- "version": "2.33.0",
- "resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.33.0.tgz",
- "integrity": "sha512-V/uycBuqQOP/3Z+FBtpMdj2Ds5PyfJ3VDfMzktEmG4niOIzv7q1y5uMSbMcng0+057m1l0N147FQxsodQo9zBg==",
- "dev": true,
+ "version": "2.35.2",
+ "resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.35.2.tgz",
+ "integrity": "sha512-Ns9ZdiFEAsiv8JvHS28Qgxg4YRTq13Ixa4EDUQZhUovZ3j/GLTou4zE887SLSqsuRZwuy3gklttn2ha5JaJpTQ==",
+ "license": "MIT",
"dependencies": {
"@types/draco3d": "^1.4.0",
"@types/offscreencanvas": "^2019.6.4",
@@ -14009,7 +14190,7 @@
"version": "0.6.10",
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz",
"integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==",
- "dev": true
+ "license": "MIT"
},
"node_modules/throat": {
"version": "6.0.2",
@@ -14017,6 +14198,12 @@
"integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==",
"dev": true
},
+ "node_modules/tiny-invariant": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
+ "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==",
+ "license": "MIT"
+ },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@@ -14095,14 +14282,15 @@
}
},
"node_modules/troika-three-text": {
- "version": "0.49.1",
- "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.49.1.tgz",
- "integrity": "sha512-lXGWxgjJP9kw4i4Wh+0k0Q/7cRfS6iOME4knKht/KozPu9GcFA9NnNpRvehIhrUawq9B0ZRw+0oiFHgRO+4Wig==",
- "dev": true,
+ "version": "0.52.3",
+ "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.52.3.tgz",
+ "integrity": "sha512-jLhiwgV8kEkwWjvK12f2fHVpbOC75p7SgPQ0cgcz+IMtN5Bdyg4EuFdwuTOVu9ga8UeYdKBpzd1AxviyixtYTQ==",
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"bidi-js": "^1.0.2",
- "troika-three-utils": "^0.49.0",
- "troika-worker-utils": "^0.49.0",
+ "troika-three-utils": "^0.52.0",
+ "troika-worker-utils": "^0.52.0",
"webgl-sdf-generator": "1.1.1"
},
"peerDependencies": {
@@ -14110,19 +14298,21 @@
}
},
"node_modules/troika-three-utils": {
- "version": "0.49.0",
- "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.49.0.tgz",
- "integrity": "sha512-umitFL4cT+Fm/uONmaQEq4oZlyRHWwVClaS6ZrdcueRvwc2w+cpNQ47LlJKJswpqtMFWbEhOLy0TekmcPZOdYA==",
- "dev": true,
+ "version": "0.52.0",
+ "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.52.0.tgz",
+ "integrity": "sha512-00oxqIIehtEKInOTQekgyknBuRUj1POfOUE2q1OmL+Xlpp4gIu+S0oA0schTyXsDS4d9DkR04iqCdD40rF5R6w==",
+ "devOptional": true,
+ "license": "MIT",
"peerDependencies": {
"three": ">=0.125.0"
}
},
"node_modules/troika-worker-utils": {
- "version": "0.49.0",
- "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.49.0.tgz",
- "integrity": "sha512-1xZHoJrG0HFfCvT/iyN41DvI/nRykiBtHqFkGaGgJwq5iXfIZFBiPPEHFpPpgyKM3Oo5ITHXP5wM2TNQszYdVg==",
- "dev": true
+ "version": "0.52.0",
+ "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.52.0.tgz",
+ "integrity": "sha512-W1CpvTHykaPH5brv5VHLfQo9D1OYuo0cSBEUQFFT/nBUzM8iD6Lq2/tgG/f1OelbAS1WtaTPQzE5uM49egnngw==",
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/ts-api-utils": {
"version": "1.3.0",
@@ -14146,7 +14336,7 @@
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.1.2.tgz",
"integrity": "sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"zustand": "^4.3.2"
}
@@ -14155,7 +14345,7 @@
"version": "4.5.5",
"resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.5.tgz",
"integrity": "sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"use-sync-external-store": "1.2.2"
},
@@ -14424,6 +14614,15 @@
"integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==",
"dev": true
},
+ "node_modules/url-join": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz",
+ "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
"node_modules/url-parse": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
@@ -14438,7 +14637,7 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
"integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==",
- "dev": true,
+ "devOptional": true,
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
@@ -14447,7 +14646,7 @@
"version": "3.11.0",
"resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz",
"integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==",
- "dev": true,
+ "devOptional": true,
"engines": {
"node": ">= 4"
}
@@ -14456,7 +14655,7 @@
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
- "dev": true,
+ "devOptional": true,
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
@@ -14594,13 +14793,14 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz",
"integrity": "sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==",
- "dev": true
+ "devOptional": true
},
"node_modules/webgl-sdf-generator": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz",
"integrity": "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==",
- "dev": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/webidl-conversions": {
"version": "6.1.0",
@@ -14644,7 +14844,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"isexe": "^2.0.0"
},
@@ -14905,7 +15105,6 @@
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz",
"integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==",
- "devOptional": true,
"engines": {
"node": ">=12.7.0"
},
diff --git a/package.json b/package.json
index 0b43771db..699e9e360 100644
--- a/package.json
+++ b/package.json
@@ -72,5 +72,12 @@
"@react-three/fiber": "^8.17.9",
"react": "^18.3.1",
"react-dom": "^18.3.1"
+ },
+ "dependencies": {
+ "@react-three/postprocessing": "^2.16.3",
+ "@takram/three-atmosphere": "^0.5.0",
+ "@takram/three-geospatial": "^0.0.1-alpha.4",
+ "@takram/three-geospatial-effects": "^0.0.1-alpha.4",
+ "postprocessing": "^6.36.4"
}
}
diff --git a/src/plugins/three/UnloadTilesPlugin.js b/src/plugins/three/UnloadTilesPlugin.js
index a8fbfe478..3060a5a34 100644
--- a/src/plugins/three/UnloadTilesPlugin.js
+++ b/src/plugins/three/UnloadTilesPlugin.js
@@ -1,4 +1,4 @@
-import { LRUCache } from '3d-tiles-renderer';
+import { LRUCache } from '../../utilities/LRUCache.js';
// Plugin that disposes tiles on unload to remove them from the GPU, saving memory