{"_id":"@takram/three-clouds","_rev":"23-dc119b5c83b6ad1e87ff8e4a2629a7bc","name":"@takram/three-clouds","dist-tags":{"latest":"0.7.6"},"versions":{"0.1.0":{"name":"@takram/three-clouds","version":"0.1.0","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.1.0","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"7a445d3c7de609e751b2642c7e50100096df1528","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.1.0.tgz","fileCount":103,"integrity":"sha512-MN7Vac0EK0TgwX3UH9llVOCE4RqXe1R+dTxo6WNk9s7+ter8AY+nvsdxtSpa7XAtsr/iMTPGBOgmOwMC9iuojA==","signatures":[{"sig":"MEUCIF62VDEi3R3X/an733t4G0lXQWuGX5/WykBUN9zpLG06AiEA2NgJwza1/o/bBvZWQQUVsaURA86JpXOHPMJ4pyVDZ6E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3589972},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.1.0.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/6ea7b7374c3277970d58d6df603be2ef/takram-three-clouds-0.1.0.tgz","_integrity":"sha512-MN7Vac0EK0TgwX3UH9llVOCE4RqXe1R+dTxo6WNk9s7+ter8AY+nvsdxtSpa7XAtsr/iMTPGBOgmOwMC9iuojA==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.9.0","@takram/three-geospatial":"0.0.1-alpha.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=18.0","three":">=0.170.0","postprocessing":">=6.36.4","@react-three/fiber":">=8.17.10","@react-three/postprocessing":">=2.16.3"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.1.0_1740286023954_0.18861180119821475","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@takram/three-clouds","version":"0.1.1","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.1.1","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"7d5f65e3bbbe84ec29a0d195035be1d8ce878ca8","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.1.1.tgz","fileCount":103,"integrity":"sha512-/LvQb6eFhsywMqWpPNhrAwVE3r9kg4wyDDUCuxyC18/tuBo0Af19JVjHZdUD97B6QJ5g/eqTEa8kkjN+4nTUJg==","signatures":[{"sig":"MEUCIHfQ4Qx12e/KYTrWfU3nZbxPIDZHFWvews2satELGQsTAiEAtJtE173+/viPkdb3SFyAvE+5plTcDk1cDtptl/CjUHU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3590368},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.1.1.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/f51c062b2081d35870fa19bd18df24f1/takram-three-clouds-0.1.1.tgz","_integrity":"sha512-/LvQb6eFhsywMqWpPNhrAwVE3r9kg4wyDDUCuxyC18/tuBo0Af19JVjHZdUD97B6QJ5g/eqTEa8kkjN+4nTUJg==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.10.0","@takram/three-geospatial":"0.0.1-alpha.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=18.0","three":">=0.170.0","postprocessing":">=6.36.4","@react-three/fiber":">=8.17.10","@react-three/postprocessing":">=2.16.3"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.1.1_1740882838923_0.34000775884007184","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@takram/three-clouds","version":"0.1.2","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.1.2","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"c1b0d33182d5f52fc2874574d8da8794f1c22361","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.1.2.tgz","fileCount":103,"integrity":"sha512-JNbmB+HBXSqOH8R5iCUeRekOVd/rZ5nbr773NHeFxEvrEM3/OJrdetFtPXI7orKmvXHUx+gjA10W7obGXmHLUg==","signatures":[{"sig":"MEUCIQDfeXl2Hha+M9iXatJ4r305CLhZ3mmw4TrQAmtwI6JwCAIgL9deNxz1zKbgbMVSWD702SuKtKj1H2CgI6t3SGMSYGs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3590453},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.1.2.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/8f413716018e599a11847803a76131da/takram-three-clouds-0.1.2.tgz","_integrity":"sha512-JNbmB+HBXSqOH8R5iCUeRekOVd/rZ5nbr773NHeFxEvrEM3/OJrdetFtPXI7orKmvXHUx+gjA10W7obGXmHLUg==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.10.1","@takram/three-geospatial":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=18.0","three":">=0.170.0","postprocessing":">=6.36.4","@react-three/fiber":">=8.17.10","@react-three/postprocessing":">=2.16.3"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.1.2_1741508236596_0.5368053132872759","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@takram/three-clouds","version":"0.1.3","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.1.3","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"9dfac93db9141e70465c0bd0af0ac43a394803a6","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.1.3.tgz","fileCount":103,"integrity":"sha512-tB2KLfA98xeV+XBcAwLpN1Dzz10WlGEdTgW6/2L8JSH4p4e8JODCT1yrmjq/7VWKveFyBgo3LlBN4ftBgCS7bQ==","signatures":[{"sig":"MEQCIHAFO96kba/TR2bxanIXy/Eg65IeqPX5KQU//IQrmHssAiATBFB+HkLnp2j3LVUV0Kt5/+OW28ECETnTFrWlIaasDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3590490},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.1.3.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/aa245d356324bea55264ac9f3abfea77/takram-three-clouds-0.1.3.tgz","_integrity":"sha512-tB2KLfA98xeV+XBcAwLpN1Dzz10WlGEdTgW6/2L8JSH4p4e8JODCT1yrmjq/7VWKveFyBgo3LlBN4ftBgCS7bQ==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.10.2","@takram/three-geospatial":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=18.0","three":">=0.170.0","postprocessing":">=6.36.4","@react-three/fiber":">=8.17.10","@react-three/postprocessing":">=2.16.3"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.1.3_1741509820957_0.3233043282631445","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@takram/three-clouds","version":"0.2.0","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.2.0","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"67f6cfc6d5d3583c09a42ca2c6f628b4bca2b0fd","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.2.0.tgz","fileCount":103,"integrity":"sha512-AMsJyK+R2000tx/hqAgrLV1RAyLB2lwL05sw5sDdhK0XlyE1bkocrYgpmEOjaZA91O+eTt1eDNPjTGWb9Gt1Nw==","signatures":[{"sig":"MEYCIQD5Qa+YaurCwqkkWYSvbLjua2mh5PYiQGSjczOBnN7qUAIhANbJNzvlhhwP82Qe2G+Zqn8MFJeDFG5yV4z6+D4Kaz0v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3589885},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.2.0.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/56481539ea91763d11250ab5c0f62406/takram-three-clouds-0.2.0.tgz","_integrity":"sha512-AMsJyK+R2000tx/hqAgrLV1RAyLB2lwL05sw5sDdhK0XlyE1bkocrYgpmEOjaZA91O+eTt1eDNPjTGWb9Gt1Nw==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.11.0","@takram/three-geospatial":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.2.0_1741509896458_0.19910955918736728","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@takram/three-clouds","version":"0.1.4","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.1.4","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"488fe353ac90545cde1b5157d23e5e6f5e782e85","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.1.4.tgz","fileCount":103,"integrity":"sha512-TahIoW4nloS6kghk0j3j/kpvLirdGYKDThL2oIm4cAY5cfZvCV3dMut3VrGyQbwkJ+JbGv8xYOrH7KwtKr0kvg==","signatures":[{"sig":"MEUCIQDtqngsjEhxfWEgVLTaJXZkk92AAfYQ0Ly0jhpQ5erhIgIgI7B50M2aZBjxRf4s5OHlvFYttfWFiNilIFzOEARpjR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3590680},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.1.4.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/c99cc40a1a16590f4dd60a01f151320b/takram-three-clouds-0.1.4.tgz","_integrity":"sha512-TahIoW4nloS6kghk0j3j/kpvLirdGYKDThL2oIm4cAY5cfZvCV3dMut3VrGyQbwkJ+JbGv8xYOrH7KwtKr0kvg==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.10.3","@takram/three-geospatial":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=18.0","three":">=0.170.0","postprocessing":">=6.36.4","@react-three/fiber":">=8.17.10","@react-three/postprocessing":">=2.16.3"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.1.4_1741933781842_0.5511552372286834","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@takram/three-clouds","version":"0.2.1","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.2.1","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"d521f1679e937e7969b5b614cb2d1d9137503d44","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.2.1.tgz","fileCount":103,"integrity":"sha512-An+SStw7f1ey/o5OwDoVk9oTGQD1sgxfLfK5XW5q+a7BPLAlgfLWuSmehqEcFI0gdl0GchfZzrOxRkBC28vS9A==","signatures":[{"sig":"MEUCIG8zAuBzjagdZAZKtcQlcNNnqPxw8WVHQLyxD5hGp5S6AiEA5IqajN1X/bsyfbMPh3kUEFAFEpY3DbsK5VspC4G+XbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3590472},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.2.1.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/17acf2f21dcab7941c0710a166d0fee8/takram-three-clouds-0.2.1.tgz","_integrity":"sha512-An+SStw7f1ey/o5OwDoVk9oTGQD1sgxfLfK5XW5q+a7BPLAlgfLWuSmehqEcFI0gdl0GchfZzrOxRkBC28vS9A==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.11.1","@takram/three-geospatial":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.2.1_1741934428678_0.2623565294216621","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@takram/three-clouds","version":"0.2.2","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.2.2","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"5ab36e39ef181a46b50b25917566d545e34f2737","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.2.2.tgz","fileCount":103,"integrity":"sha512-vRsE4dhMqliYWw0tBAUd7Fe3REfgDk/+XkQsAfghI4onUlweAzSSMTQb3UuRYJp4w23HYUK70kik7z32y+E0Pg==","signatures":[{"sig":"MEQCICqlCdBwOG2RzMaOHjYt5LE2mc+O04yjh5H11CXpGPreAiAAkdFlVcgpBkDPlsJ4d9rZY3mMblxQOFVVhoycePH2mQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4109888},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.2.2.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/a111ebbc0a3168d086cd11f0ef8e8952/takram-three-clouds-0.2.2.tgz","_integrity":"sha512-vRsE4dhMqliYWw0tBAUd7Fe3REfgDk/+XkQsAfghI4onUlweAzSSMTQb3UuRYJp4w23HYUK70kik7z32y+E0Pg==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.11.2","@takram/three-geospatial":"0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.2.2_1747943988957_0.13761267308631564","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@takram/three-clouds","version":"0.3.0","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.3.0","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"02f03de6db494567c4bc467c41776be3aeb76e6d","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.3.0.tgz","fileCount":103,"integrity":"sha512-bCTlQ62Kt/cU5VYvoyuTMrK22deltz94Az7lWYK4YKu1X4xyxgi8+T9p4xk1BYFc4tPcxk/farq7bqbDeym54A==","signatures":[{"sig":"MEYCIQDxwBGNwcNYl8W/S/6UvcdfP9AT5x2MmtTSxjujGlHOjgIhAPwscKlWU/YfwS/W/KdYaE1Zwb0n31RevZyrXAXePtYo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4115822},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.3.0.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/ab14f35d3e373656e36c20aed86c96d5/takram-three-clouds-0.3.0.tgz","_integrity":"sha512-bCTlQ62Kt/cU5VYvoyuTMrK22deltz94Az7lWYK4YKu1X4xyxgi8+T9p4xk1BYFc4tPcxk/farq7bqbDeym54A==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.12.0","@takram/three-geospatial":"0.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.3.0_1749692573197_0.5563156956074147","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@takram/three-clouds","version":"0.4.0","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.4.0","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"93d3d7233c6bd30551218308d0c8f0635c86a949","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.4.0.tgz","fileCount":103,"integrity":"sha512-7b7TnxOsJbh5PO5DPaa0vAYWBE5jyjPlDJTnLtd3Sc40rTvMJEeKYYCMt10P+qfSFweYoV01ARoL1cKJzP95vg==","signatures":[{"sig":"MEYCIQCF5TKWgO22TmBVDBsyuRx16oIDm5ecaVnS5Km9AMWysAIhAPhe3mO9gMmlRcHmNMK1/pKlT9f5xWg3x5bYiwWB5WO4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4122373},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.4.0.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","actor":{"name":"shotamatsuda","type":"user","email":"shota@takram.com"},"email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/16e92f456735a86deddd90bed1ebfee4/takram-three-clouds-0.4.0.tgz","_integrity":"sha512-7b7TnxOsJbh5PO5DPaa0vAYWBE5jyjPlDJTnLtd3Sc40rTvMJEeKYYCMt10P+qfSFweYoV01ARoL1cKJzP95vg==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.13.0","@takram/three-geospatial":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.4.0_1751670849718_0.27594011050462663","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@takram/three-clouds","version":"0.4.1","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.4.1","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"a43af45e2b6cf8e0fe3eeeb6942da2471f8a2f3e","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.4.1.tgz","fileCount":103,"integrity":"sha512-Eg8bP5+L7bSQRupZLmQaFv6IqauG3uWqQ8281U2z508EWsj+DWvf2OdKjB1eh1fnTl9ZMzh5d5VpRhm9szjeOQ==","signatures":[{"sig":"MEYCIQDr3CzxyT5hN8UU3Xv9uAAmY358lzhoo8i2FNvpJpyJogIhAOPgfUgQCQoIIN1qbu7CJJ2UYpXH+Hi5CDGD3PtAZMNO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4122396},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.4.1.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/8cce1b07239e0b43b6620ee4286f181e/takram-three-clouds-0.4.1.tgz","_integrity":"sha512-Eg8bP5+L7bSQRupZLmQaFv6IqauG3uWqQ8281U2z508EWsj+DWvf2OdKjB1eh1fnTl9ZMzh5d5VpRhm9szjeOQ==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.13.1","@takram/three-geospatial":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.4.1_1752439667626_0.8422257548978924","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@takram/three-clouds","version":"0.4.2","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.4.2","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"2f2c34b4ba0868ee88c1c6eac334b1060c933422","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.4.2.tgz","fileCount":103,"integrity":"sha512-utG6PH46KmY6stStRVC4Pzfdq+IwBlLcwF8eK0VKpgNmN69DFQgfj0VltPXiqVNHpo1iMkFrZJH8YLwcy710/w==","signatures":[{"sig":"MEYCIQDpKfTb53M5MTQSrKCjHirS86sfk8lZbQ5RUYFwCluCsgIhAOwBSIofiSXYbvopY7iHBeWjuwd42vtoPqXeE/6wZuxp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4122475},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.4.2.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/97d0b62faa6bfa809ab08900a757326f/takram-three-clouds-0.4.2.tgz","_integrity":"sha512-utG6PH46KmY6stStRVC4Pzfdq+IwBlLcwF8eK0VKpgNmN69DFQgfj0VltPXiqVNHpo1iMkFrZJH8YLwcy710/w==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.13.2","@takram/three-geospatial":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.4.2_1752482785791_0.5948421441766165","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@takram/three-clouds","version":"0.5.0","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.5.0","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"c929a6f73427633cec577d59434f11cc427b0b9d","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.5.0.tgz","fileCount":103,"integrity":"sha512-uuJh2wM1mIzClFRh62G32D4P3rDQrZwpEIN7aA8LoWeoJdet9JRvUP50YlcbP+24eMM5bliT0ccC5bsNl8niNA==","signatures":[{"sig":"MEQCIFklCO2/t4+LBPCM7KtA7SfYjn6Xvn5+z+qZ8GR7Y6TRAiB3Ef8/1iF0/y0zU0g3YuT33eSATKMrkXsK9fplt8CB5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4115040},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.5.0.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/8e15ef9dfdc1f2418b95b42d787230e5/takram-three-clouds-0.5.0.tgz","_integrity":"sha512-uuJh2wM1mIzClFRh62G32D4P3rDQrZwpEIN7aA8LoWeoJdet9JRvUP50YlcbP+24eMM5bliT0ccC5bsNl8niNA==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.34.1","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.14.0","@takram/three-geospatial":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.5.0_1755545629235_0.16774900970782225","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@takram/three-clouds","version":"0.5.1","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.5.1","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"ce241d78060c96f3fd37dfb51e081eaa50f164a4","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.5.1.tgz","fileCount":103,"integrity":"sha512-XnDxTrXB9ohD3SMuBwOu5+c7IWXVkSsW7Hf5uRhL7QBRrXmg9N86x23S6DSoJEhrfyzZhAoSoz7OXQ/X8BGo7Q==","signatures":[{"sig":"MEQCIGfHV5tRQBNkt/5AvOEL2ypdtHWPUv4GlAdEMq/EcxF8AiBOL2K5A5C+V/yxKfdumm06MF7rn/JCFoG1yu1crWO6og==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4114043},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.5.1.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/913ed45065f75f6a6332c568198b6491/takram-three-clouds-0.5.1.tgz","_integrity":"sha512-XnDxTrXB9ohD3SMuBwOu5+c7IWXVkSsW7Hf5uRhL7QBRrXmg9N86x23S6DSoJEhrfyzZhAoSoz7OXQ/X8BGo7Q==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.41.0","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.15.0","@takram/three-geospatial":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.5.1_1761987720988_0.7093603909343162","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@takram/three-clouds","version":"0.5.2","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.5.2","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"248838ecdd868a21d2a5e5deb0bfddf96864dab3","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.5.2.tgz","fileCount":103,"integrity":"sha512-a6Hid4yd+Gw+zpXbI6v050qXZplwWShE6rWoVVjhppCdhGh1WRYHrZRwiHjDioYzCcOudIg3KOUhsxwffhaFVg==","signatures":[{"sig":"MEYCIQDOi/xET9l2RMqUWZ1kbEUlpdFJex629yI+DpYg3djvbAIhAOtS6wFolDSnqCw2CX8JkAXPRJf/Ob0CmAMvdNIVpmQc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4111029},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.5.2.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/a3a2a99b49b8247bb103f4130392d885/takram-three-clouds-0.5.2.tgz","_integrity":"sha512-a6Hid4yd+Gw+zpXbI6v050qXZplwWShE6rWoVVjhppCdhGh1WRYHrZRwiHjDioYzCcOudIg3KOUhsxwffhaFVg==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.0.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.12.0","dependencies":{"type-fest":"^4.41.0","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.15.1","@takram/three-geospatial":"0.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.5.2_1761990746429_0.5811564983396418","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@takram/three-clouds","version":"0.6.0","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.6.0","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"1547d53aceaa905cb72aff0eb003b9e3cbcd7a04","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.6.0.tgz","fileCount":103,"integrity":"sha512-uMwqsj/KgDVaLbuLbXLNdrhVrtF3lEk1Tr/1rDrQXPXQygemf14YfQ2gQxZH3nYqrZN+3OVOstEPJ3t5X1/tmw==","signatures":[{"sig":"MEUCIQDRHrICiBsK+paF2aoFgYlmdEToFBtZ9M9/mG7VeDf0swIgMlBFtoOpx1KQmvhQtfvoHTfJ1qgOX+EK43vtS6mfaSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4110994},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.6.0.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/e364827f9b4556587541b17646163c5e/takram-three-clouds-0.6.0.tgz","_integrity":"sha512-uMwqsj/KgDVaLbuLbXLNdrhVrtF3lEk1Tr/1rDrQXPXQygemf14YfQ2gQxZH3nYqrZN+3OVOstEPJ3t5X1/tmw==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"10.9.4","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.21.1","dependencies":{"type-fest":"^4.41.0","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.16.0","@takram/three-geospatial":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.6.0_1766553349843_0.19508702568677427","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@takram/three-clouds","version":"0.7.0","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.7.0","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"8aebdb952608f5b37d8d1d7390dc95774006010c","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.7.0.tgz","fileCount":103,"integrity":"sha512-sWpsbjTGvCAdgvq6gZBphM0pHSQ+FpSLXcq9X1dsGFW2W7igsQXmtODPlqgGA1RlLAaPBP1m7SWpqTHr9oGAeQ==","signatures":[{"sig":"MEUCIHAzMXwV4uWrKrt83Fxh2qh/eev3p0APDOJ9IrXdR0yEAiEAhCpa9dcDcjfpdp0TOdYIujeKCQZawDwgRJajgxpdX9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4104763},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.7.0.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/dad6cdd5cd5b0e87f982b135a2cb1250/takram-three-clouds-0.7.0.tgz","_integrity":"sha512-sWpsbjTGvCAdgvq6gZBphM0pHSQ+FpSLXcq9X1dsGFW2W7igsQXmtODPlqgGA1RlLAaPBP1m7SWpqTHr9oGAeQ==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"11.9.0","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"24.14.0","dependencies":{"type-fest":"^5.4.4","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.17.0","@takram/three-geospatial":"0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.38.0","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.7.0_1773041473650_0.013151502602574139","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@takram/three-clouds","version":"0.7.1","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.7.1","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"90aefd9a7307195fa98bf7cb0ac888c31e9b92de","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.7.1.tgz","fileCount":103,"integrity":"sha512-DptL622cMFWXK6sr0GiapyMoUyQwKlP81djlu6aOhqA/J3i0vj3Xs6LoefVnBG/6VwVjS5s7g8rdx+q0HqELyQ==","signatures":[{"sig":"MEUCIQCBdST+6i6/MNDH2GVDIYtycHzYjLCkz686z1ExOCyxXQIgZSPqiZYalCsmW5wY2gdv3y3pq92XiBPTkd61DKZPJjs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4105573},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.7.1.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/e5455ce685756dca5e0ca17050b700ea/takram-three-clouds-0.7.1.tgz","_integrity":"sha512-DptL622cMFWXK6sr0GiapyMoUyQwKlP81djlu6aOhqA/J3i0vj3Xs6LoefVnBG/6VwVjS5s7g8rdx+q0HqELyQ==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"10.9.4","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.22.1","dependencies":{"type-fest":"^5.4.4","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.17.0","@takram/three-geospatial":"0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.38.0","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.7.1_1773117650081_0.10240927809068046","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@takram/three-clouds","version":"0.7.2","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.7.2","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"90daa3e59505148f613c213e2dc77fddce27a7e2","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.7.2.tgz","fileCount":103,"integrity":"sha512-iuzXlLVAXo3rU2YdTlb3zgtY6AGHf8AFSjy+yUwv4PzVyM3UKG0fHuQLjHcCkJHrKGFIfZ/hedjt8PtEqtZx5w==","signatures":[{"sig":"MEYCIQDzmjfXzSJIYmbsqBDYywsw52TrfAhaPUuixRQ8bVESEwIhAMZoJo188Y4Nh9R6qWjegHVarVDnjxMwflvcMvLRWWcG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4104614},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.7.2.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/b07d8fd6c9676ed52a7a6dd45e299838/takram-three-clouds-0.7.2.tgz","_integrity":"sha512-iuzXlLVAXo3rU2YdTlb3zgtY6AGHf8AFSjy+yUwv4PzVyM3UKG0fHuQLjHcCkJHrKGFIfZ/hedjt8PtEqtZx5w==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"10.9.4","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.22.1","dependencies":{"type-fest":"^5.4.4","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.17.1","@takram/three-geospatial":"0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.7.2_1774204712120_0.8158850696174187","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"@takram/three-clouds","version":"0.7.3","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.7.3","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"48503aeda497e9b185bb3f4cb02dc2f99df3a416","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.7.3.tgz","fileCount":103,"integrity":"sha512-Ef/C8o3scj4Palr0aZZv6Ew87t/L/g/VpnWIHkEewszVclvZyvh9RWCwW80L3haVAP3p/x8etwLIqNsJEE+s3A==","signatures":[{"sig":"MEUCIEcARRMss8Upyny9fHiOrQUe6SmqyejiS9Ml5RMQjO7KAiEA8GH23dPtVXCD7z7rD/sr35dPmJ42y9TYPKxTT7C6hyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4104158},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.7.3.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/e0719ffbf5fe4482bed95c82f8a70ba2/takram-three-clouds-0.7.3.tgz","_integrity":"sha512-Ef/C8o3scj4Palr0aZZv6Ew87t/L/g/VpnWIHkEewszVclvZyvh9RWCwW80L3haVAP3p/x8etwLIqNsJEE+s3A==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"10.9.4","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.22.1","dependencies":{"type-fest":"^5.4.4","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.17.1","@takram/three-geospatial":"0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.7.3_1774206048179_0.24920004745560909","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"@takram/three-clouds","version":"0.7.4","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.7.4","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"6067c898d7d756ce283fce807ae3c5c665221d7c","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.7.4.tgz","fileCount":103,"integrity":"sha512-UsN86Ss3IZHKLfS9Hiq6k10kvXdK4eCy54GFPoNGIrpVmcwA8Wn8Uy57M+0LDq2E+K7OSt25Qe3m18Ts1N4G5g==","signatures":[{"sig":"MEUCIQCN+RpX9INfM6+29nNLAABd7ez3znMlzfKNcpuhMMRfpgIgAVuRSxnfw8N7fzjPp3xP3O1Rli1WcZknsqcZaus/Xfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4104247},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.7.4.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/b39aa96056d8968bfd93678deace1072/takram-three-clouds-0.7.4.tgz","_integrity":"sha512-UsN86Ss3IZHKLfS9Hiq6k10kvXdK4eCy54GFPoNGIrpVmcwA8Wn8Uy57M+0LDq2E+K7OSt25Qe3m18Ts1N4G5g==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"10.9.4","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.22.1","dependencies":{"type-fest":"^5.4.4","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.18.0","@takram/three-geospatial":"0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.7.4_1775326306039_0.5479413395383852","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"@takram/three-clouds","version":"0.7.5","keywords":["three","three.js","geospatial","volumetric","clouds"],"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","_id":"@takram/three-clouds@0.7.5","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"dist":{"shasum":"a3bee700ba9acf92b8861f8874e8d7f7ea96596e","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.7.5.tgz","fileCount":103,"integrity":"sha512-RS1PRTQDLhknatbGg9KBZ9feDbJ11IVtKdhHD7HXt76hhcz+4Px7eIiWWZ+uFFAj1GukJYgeM9Tlht+chYh3ig==","signatures":[{"sig":"MEUCICHHz1qp/YF/vSyRSPCSC1E9359M0AqD0+gd9vcOYZ4zAiEAmS0ZJN9uuiFKS5N5pf+Ts+OVuv6xgMKgtm4Ofkuq6l4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4104321},"main":"./build/index.cjs","type":"module","_from":"file:takram-three-clouds-0.7.5.tgz","types":"./types/index.d.ts","module":"./build/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/293489d4890e8280b33cb18f11357d8b/takram-three-clouds-0.7.5.tgz","_integrity":"sha512-RS1PRTQDLhknatbGg9KBZ9feDbJ11IVtKdhHD7HXt76hhcz+4Px7eIiWWZ+uFFAj1GukJYgeM9Tlht+chYh3ig==","repository":{"url":"git+https://github.com/takram-design-engineering/three-geospatial.git","type":"git"},"_npmVersion":"10.9.4","description":"A Three.js and R3F implementation of geospatial volumetric clouds","directories":{},"_nodeVersion":"22.22.1","dependencies":{"type-fest":"^5.4.4","tiny-invariant":"^1.3.3","@takram/three-atmosphere":"0.19.0","@takram/three-geospatial":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=19.0","three":">=0.170.0","postprocessing":">=6.36.7","@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4"},"peerDependenciesMeta":{"react":{"optional":true},"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/three-clouds_0.7.5_1777294257521_0.3218335505896637","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"@takram/three-clouds","version":"0.7.6","description":"A Three.js and R3F implementation of geospatial volumetric clouds","keywords":["three","three.js","geospatial","volumetric","clouds"],"homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"repository":{"type":"git","url":"git+https://github.com/takram-design-engineering/three-geospatial.git"},"license":"MIT","author":{"name":"Shota Matsuda","email":"shota@takram.com"},"type":"module","exports":{".":{"types":"./types/index.d.ts","import":"./build/index.js","require":"./build/index.cjs"},"./r3f":{"types":"./types/r3f/index.d.ts","import":"./build/r3f.js","require":"./build/r3f.cjs"}},"main":"./build/index.cjs","module":"./build/index.js","types":"./types/index.d.ts","dependencies":{"@takram/three-atmosphere":"0.19.1","@takram/three-geospatial":"0.9.1","tiny-invariant":"^1.3.3","type-fest":"^5.4.4"},"peerDependencies":{"@react-three/fiber":">=9.0.4","@react-three/postprocessing":">=3.0.4","postprocessing":">=6.36.7","react":">=19.0","three":">=0.170.0"},"peerDependenciesMeta":{"@react-three/drei":{"optional":true},"@react-three/fiber":{"optional":true},"@react-three/postprocessing":{"optional":true},"react":{"optional":true}},"publishConfig":{"access":"public"},"_id":"@takram/three-clouds@0.7.6","_integrity":"sha512-cfoEI3W5NJuYUL1Pd4k5UXLlb7rLThh3dNIOO+/EPw8cbuRUgiIVEVtNPmA+v5KRJf87gPI+rjuxgK0huAajDw==","_resolved":"/private/var/folders/dp/36650_jx1svgxp8b1h1bwjlh0000gn/T/24b49d6e44e12eea943fd7e9b98f1d29/takram-three-clouds-0.7.6.tgz","_from":"file:takram-three-clouds-0.7.6.tgz","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-cfoEI3W5NJuYUL1Pd4k5UXLlb7rLThh3dNIOO+/EPw8cbuRUgiIVEVtNPmA+v5KRJf87gPI+rjuxgK0huAajDw==","shasum":"83f7640d91168ac6c6c8d867084ecd9e290fbe8c","tarball":"https://registry.npmjs.org/@takram/three-clouds/-/three-clouds-0.7.6.tgz","fileCount":103,"unpackedSize":4104403,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGIDa82aOrNWJppSdN9QYXo23Ij21sJYggdyst6t+gfiAiBy+mw9rpVpHTItb1Q4ERqoBYaMJ2avIJvgfN3cRYnZDw=="}]},"_npmUser":{"name":"shotamatsuda","email":"shota@takram.com"},"directories":{},"maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/three-clouds_0.7.6_1778050871892_0.011330938554664272"},"_hasShrinkwrap":false}},"time":{"created":"2025-02-23T04:47:03.841Z","modified":"2026-05-06T07:01:12.313Z","0.1.0":"2025-02-23T04:47:04.167Z","0.1.1":"2025-03-02T02:33:59.127Z","0.1.2":"2025-03-09T08:17:16.895Z","0.1.3":"2025-03-09T08:43:41.256Z","0.2.0":"2025-03-09T08:44:56.741Z","0.1.4":"2025-03-14T06:29:42.064Z","0.2.1":"2025-03-14T06:40:29.020Z","0.2.2":"2025-05-22T19:59:49.179Z","0.3.0":"2025-06-12T01:42:53.435Z","0.4.0":"2025-07-04T23:14:09.948Z","0.4.1":"2025-07-13T20:47:47.834Z","0.4.2":"2025-07-14T08:46:26.060Z","0.5.0":"2025-08-18T19:33:49.531Z","0.5.1":"2025-11-01T09:02:01.264Z","0.5.2":"2025-11-01T09:52:26.648Z","0.6.0":"2025-12-24T05:15:50.075Z","0.7.0":"2026-03-09T07:31:13.967Z","0.7.1":"2026-03-10T04:40:50.340Z","0.7.2":"2026-03-22T18:38:32.391Z","0.7.3":"2026-03-22T19:00:48.459Z","0.7.4":"2026-04-04T18:11:46.345Z","0.7.5":"2026-04-27T12:50:57.783Z","0.7.6":"2026-05-06T07:01:12.172Z"},"bugs":{"url":"https://github.com/takram-design-engineering/three-geospatial/issues"},"author":{"name":"Shota Matsuda","email":"shota@takram.com"},"license":"MIT","homepage":"https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds","keywords":["three","three.js","geospatial","volumetric","clouds"],"repository":{"type":"git","url":"git+https://github.com/takram-design-engineering/three-geospatial.git"},"description":"A Three.js and R3F implementation of geospatial volumetric clouds","maintainers":[{"name":"shotamatsuda","email":"shota@takram.com"}],"readme":"# @takram/three-clouds\n\n[![npm version](https://img.shields.io/npm/v/@takram/three-clouds.svg?style=flat-square)](https://www.npmjs.com/package/@takram/three-clouds) [![Storybook](https://img.shields.io/badge/-Storybook-FF4785?style=flat-square&logo=storybook&logoColor=white)](https://takram-design-engineering.github.io/three-geospatial/?path=/story/clouds-clouds--basic)\n\nA Three.js and R3F (React Three Fiber) implementation of geospatial volumetric clouds with features including:\n\n- Beer shadow maps (BSM) and shadows cast on scene objects\n- Temporal upscaling and filtering\n- Light shafts (crepuscular rays)\n- Haze (sparse fog)\n\nThis library is part of a project to prototype the rendering aspect of a Web GIS engine. For more details on the background and current status of this project, please refer to the [main README](/README.md).\n\n## Installation\n\n```sh\nnpm install @takram/three-clouds\npnpm add @takram/three-clouds\nyarn add @takram/three-clouds\n```\n\nPeer dependencies include `three` and `postprocessing`, as well as `@react-three/fiber`, `@react-three/postprocessing` and `@react-three/drei` (required by `@takram/three-atmosphere`) when using R3F.\n\n```\nthree postprocessing\n@react-three/fiber @react-three/postprocessing @react-three/drei\n```\n\n## Usage\n\n### Default clouds\n\nPlace [`Clouds`](#clouds) inside [`EffectComposer`](https://github.com/pmndrs/postprocessing) before [`AerialPerspective`](https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/atmosphere#aerialperspective).\n\n```tsx\nimport { EffectComposer } from '@react-three/postprocessing'\nimport { AerialPerspective, Atmosphere } from '@takram/three-atmosphere/r3f'\nimport { Clouds } from '@takram/three-clouds/r3f'\n\nconst Scene = () => (\n  <Atmosphere>\n    <EffectComposer enableNormalPass>\n      <Clouds qualityPreset='high' coverage={0.4} />\n      <AerialPerspective sky sunLight skyLight />\n    </EffectComposer>\n  </Atmosphere>\n)\n```\n\n![Example of Tokyo](https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/main/packages/clouds/docs/tokyo.jpg)\n→ [Storybook](https://takram-design-engineering.github.io/three-geospatial/?path=/story/clouds-3d-tiles-renderer-integration--tokyo)\n\n![Example of Fuji](https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/main/packages/clouds/docs/fuji.jpg)\n→ [Storybook](https://takram-design-engineering.github.io/three-geospatial/?path=/story/clouds-3d-tiles-renderer-integration--fuji)\n\n![Example of London](https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/main/packages/clouds/docs/london.jpg)\n→ [Storybook](https://takram-design-engineering.github.io/three-geospatial/?path=/story/clouds-3d-tiles-renderer-integration--london)\n\n### Configuring cloud layers\n\nClouds can be customized using [`CloudLayer`](#cloudlayer).\n\n```tsx\nimport { EffectComposer } from '@react-three/postprocessing'\nimport { AerialPerspective, Atmosphere } from '@takram/three-atmosphere/r3f'\nimport { Clouds } from '@takram/three-clouds/r3f'\n\nconst Scene = () => (\n  <Atmosphere>\n    <EffectComposer enableNormalPass>\n      <Clouds disableDefaultLayers>\n        <CloudLayer channel='r' altitude={750} height={650} />\n        <CloudLayer channel='g' altitude={1000} height={1200} />\n        <CloudLayer\n          channel='b'\n          altitude={7500}\n          height={500}\n          densityScale={0.003}\n          shapeAmount={0.4}\n          shapeDetailAmount={0}\n          coverageFilterWidth={0.5}\n        />\n      </Clouds>\n      <AerialPerspective sky sunLight skyLight />\n    </EffectComposer>\n  </Atmosphere>\n)\n```\n\n### Configuring weather\n\nProvide a path to your weather texture. This also applies to shape, shape detail, and turbulence textures.\n\n```tsx\nimport { EffectComposer } from '@react-three/postprocessing'\nimport { AerialPerspective, Atmosphere } from '@takram/three-atmosphere/r3f'\nimport { Clouds } from '@takram/three-clouds/r3f'\n\nconst Scene = () => (\n  <Atmosphere>\n    <EffectComposer enableNormalPass>\n      <Clouds localWeatherTexture={/* path to weather texture */} />\n      <AerialPerspective sky sunLight skyLight />\n    </EffectComposer>\n  </Atmosphere>\n)\n```\n\n### Generating textures procedurally\n\nPass an object that implements [`ProceduralTexture`](#proceduraltexture-procedural3dtexture). For shape and shape detail, use [`Procedural3DTexture`](#proceduraltexture-procedural3dtexture).\n\n```tsx\nimport { EffectComposer } from '@react-three/postprocessing'\nimport { AerialPerspective, Atmosphere } from '@takram/three-atmosphere/r3f'\nimport { ProceduralTextureBase } from '@takram/three-clouds'\nimport { Clouds } from '@takram/three-clouds/r3f'\n\nconst localWeatherTexture = new ProceduralTextureBase({\n  size: 512,\n  fragmentShader: /* glsl */ `\n    in vec2 vUv;\n    layout(location = 0) out vec4 outputColor;\n    void main() {\n      outputColor = ...;\n    }\n  `\n})\n\nconst Scene = () => (\n  <Atmosphere>\n    <EffectComposer enableNormalPass>\n      <Clouds localWeatherTexture={localWeatherTexture} />\n      <AerialPerspective sky sunLight skyLight />\n    </EffectComposer>\n  </Atmosphere>\n)\n```\n\n## Performance tweaks\n\nVolumetric clouds are not a lightweight effect. You might need to adjust the quality settings for your target devices.\n\nThere are 4 quality presets that you may consider:\n\n- **Low**: Disables shape detail, light shafts, and turbulence, and significantly lowers the precision of ray marching\n- **Medium**: Disables light shafts and turbulence, as well as lowering the precision of ray marching\n- **High**: The baseline settings\n- **Ultra**: Increases the resolution of BSM\n\nIf \"Low\" quality preset still does not meet your performance goal, then I recommend considering a skybox instead, which might offer better visual quality unless you specifically need volumetric clouds.\n\nBelow are my measurements as of version 0.0.1 on the [Tokyo scene](https://takram-design-engineering.github.io/three-geospatial/?path=/story/clouds-3d-tiles-renderer-integration--tokyo). Note that they are relatively new devices as of this writing.\n\n| Device                | FPS       | Quality preset | Temporal upscaling | Canvas resolution | Browser |\n| --------------------- | --------- | -------------- | ------------------ | ----------------- | ------- |\n| iPhone 13             | 36-53     | Low            | Yes                | 780×1326px        | Safari  |\n| iPad Pro (1st gen.)   | 30-32     | Low            | Yes                | 2388×1520px       | Safari  |\n| iPad Pro (M4)         | **60**    | **Medium**     | Yes                | 2420×1520px       | Safari  |\n| iPad Pro (M4)         | 43-55     | High           | Yes                | 2420×1520px       | Safari  |\n| MacBook Pro (M3 Max)  | **92-95** | **High**       | Yes                | 4K                | Chrome  |\n| MacBook Pro (M3 Max)  | **76-77** | **Ultra**      | Yes                | 4K                | Chrome  |\n| MacBook Pro (M3 Max)  | 31        | High           | **No**             | 4K                | Chrome  |\n| Mac Studio (M2 Ultra) | **60**    | **High**       | Yes                | 4K                | Chrome  |\n| Mac Studio (M2 Ultra) | **60**    | **Ultra**      | Yes                | 4K                | Chrome  |\n| Mac Studio (M2 Ultra) | 29-31     | High           | **No**             | 4K                | Chrome  |\n| GeForce 4090          | **60**    | **Ultra**      | Yes                | 4K                | Chrome  |\n| GeForce 4090          | **60**    | **Ultra**      | **No**             | 4K                | Chrome  |\n\nThe other factor that influences the performance is how clouds are modeled. Clouds are roughly modeled as shown in the image below.\n\n![](https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/main/packages/clouds/docs/cloud-shape.png)\n\nRay marching can be visualized as follows:\n\n![](https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/main/packages/clouds/docs/ray-march.png)\n\nThis illustrates that greater total cloud layer height increases computational cost, and excessive erosion reduces efficiency by causing rays to miss the clouds, leading to unnecessary sampling of the weather texture.\n\n## Limitations\n\n- The number of cloud layers is limited to 4. This is because the coverage of all layers is packed into a texture, and all layers are computed at once as `vec4` in the shaders.\n\n- It is difficult to maintain _the same_ rendering outputs while improving visual quality, performance, and adding new features, due to the way the clouds are modeled and ray marched.\n\n### Known issues\n\n- The temporal upscaling is still basic and prone to ghosting and smearing, especially when viewed through sparse clouds, and disocclusion errors on scene objects.\n\n- Aerial perspective is applied to the clouds using transmittance-weighted mean depth of clouds, an approximation that reduces the computation of atmospheric transparency. However, because this is a mean depth, it is not accurate for representing the depth of areas where distant sparse clouds overlap, and introduces artifacts.\n\n### Possible improvements\n\n- Local weather is not tiled across the entire globe. It is tiled using cube-sphere UV, which results in several seams, not only at the poles. While a single tile cannot seamlessly cover a sphere, blending the seams can improve it.\n\n- The cloud base of each layer lines up at the same altitude, making it look artificial. This may be improved by tweaking the shape altering function.\n\n- Interpolated sun and sky irradiance, when [`accurateSunSkyLight`](#cloudsaccuratesunskylight) is set to false, could be improved by using spherical harmonics to approximate the radial gradient of the sky.\n\n- A large portion of weather sampling is wasted simply checking whether it is outside the cloud shell. However, since we already know the front depth and sample count at the texel from the reprojected previous frame, using this information to better estimate the ray marching range would make it much more efficient.\n\n- Compute light shafts of the scene objects (possibly in the [atmosphere package](../atmosphere)). Implementing this would require an additional depth pass to render the scene as seen from the sun, which is too expensive unless shadow map is already in use. It may provide a partial solution to project the main camera's depth onto the sun's view.\n\n### Planned features\n\n- The altitude of cloud layers is determined relative to the ellipsoid surface, but in reality, the cloud base altitude is not constant with respect to either the ellipsoid or geopotential height. Thus, clouds appear too low in high-altitude non-mountain areas (e.g. east of the west coast of North America). This could be compensated for by considering the observed average cloud base altitude, [X](https://x.com/shotamatsuda/status/1885737165709254882).\n\n- Introduce global cloud coverage and support rendering views from space.\n\n- Currently developed using GLSL. It does not use node-based TSL yet, and WebGPU is not supported, but both are planned.\n\n# API\n\n**R3F components**\n\n- [`Clouds`](#clouds)\n- [`CloudLayer`](#cloudlayer)\n\n**Three.js**\n\n- [`CloudsEffect`](#cloudseffect)\n- [`ProceduralTexture`, `Procedural3DTexture`](#proceduraltexture-procedural3dtexture)\n\n## Clouds\n\nThe R3F counterpart of `CloudsEffect`.\n\nSee [`CloudsEffect`](#cloudseffect) for further details.\n\n```tsx\nimport { EffectComposer } from '@react-three/postprocessing'\nimport { AerialPerspective, Atmosphere } from '@takram/three-atmosphere/r3f'\nimport { Clouds } from '@takram/three-clouds/r3f'\n\nconst Scene = () => (\n  <Atmosphere>\n    <EffectComposer enableNormalPass>\n      {/* Clouds is a post-processing effect. It should be placed inside\n      EffectComposer. */}\n      <Clouds\n        qualityPreset='high'\n        coverage={0.4}\n        // Just use dash-case to pierce into nested properties.\n        clouds-accurateSunSkyLight\n        shadow-cascadeCount={3}\n      />\n      {/* By placing it inside Atmosphere along with AerialPerspective, the\n      output buffers are routed to AerialPerspective and composited into the\n      final render. */}\n      <AerialPerspective sky sunLight skyLight />\n    </EffectComposer>\n  </Atmosphere>\n)\n```\n\n→ [Source](/packages/clouds/src/r3f/Clouds.tsx)\n\n### Props\n\nThe parameters of [`CloudsEffect`](#cloudseffect) are also exposed as props.\n\n#### disableDefaultLayers\n\n```ts\ndisableDefaultLayers: boolean = false\n```\n\nSet this to remove the default cloud layers, creating a clear sky. You can then define your own layers from scratch using [`CloudLayer`](#cloudlayer).\n\n#### localWeatherTexture\n\n```ts\nlocalWeatherTexture: Texture | ProceduralTexture | null = DEFAULT_LOCAL_WEATHER_URL\n```\n\nThe local weather texture, or a URL to it. See also [`localWeatherTexture`](#localweathertexture-1).\n\nIf left undefined, the default texture will be loaded directly from GitHub.\n\n#### shapeTexture, shapeDetailTexture\n\n```ts\nshapeTexture: Data3DTexture | Procedural3DTexture | null = DEFAULT_SHAPE_URL\nshapeDetailTexture: Data3DTexture | Procedural3DTexture | null = DEFAULT_SHAPE_DETAIL_URL\n```\n\nThe shape and shape detail textures, or URLs to them. See also [`shapeTexture`, `shapeDetailTexture`](#shapetexture-shapedetailtexture-1).\n\nIf left undefined, the default textures will be loaded directly from GitHub.\n\n#### turbulenceTexture\n\n```ts\nturbulenceTexture: Texture | ProceduralTexture | null = DEFAULT_TURBULENCE_URL\n```\n\nThe turbulence texture, or a URL to it. See also [`turbulenceTexture`](#turbulencetexture-1).\n\nIf left undefined, the default texture will be loaded directly from GitHub.\n\n#### stbnTexture\n\n```ts\nstbnTexture: Data3DTexture | null = DEFAULT_STBN_URL\n```\n\nA spatiotemporal blue noise texture, or a URL to it. See also [`stbnTexture`](#stbntexture-1).\n\nIf left undefined, the default texture will be loaded directly from GitHub.\n\n## CloudLayer\n\nRepresents a layer of clouds.\n\nThere are two objects with the same name. One exported from `@takram/three-clouds`, and another from `@takram/three-clouds/r3f`, which is a React component that applies props into `CloudEffect`.\n\n```tsx\nimport { EffectComposer } from '@react-three/postprocessing'\nimport { AerialPerspective, Atmosphere } from '@takram/three-atmosphere/r3f'\nimport { CloudLayer as CloudLayerImpl } from '@takram/three-clouds'\nimport { CloudLayer, Clouds } from '@takram/three-clouds/r3f'\n\nconst Scene = () => {\n  // Modify an instance of the CloudLayer class transiently if props change\n  // frequently.\n  const layerRef = useRef<CloudLayerImpl>(null)\n  useFrame(({ clock }) => {\n    const layer = layerRef.current\n    if (layer != null) {\n      layer.height += clock.getDelta()\n    }\n  })\n\n  return (\n    <Atmosphere>\n      <EffectComposer enableNormalPass>\n        {/* Set disableDefaultLayers to remove the default cloud layers.\n        Otherwise, CloudLayer props patches the default cloud layers. */}\n        <Clouds disableDefaultLayers>\n          <CloudLayer\n            channel='r' // Channel of the local weather texture\n            altitude={1000}\n            height={1000}\n            shadow\n          />\n          <CloudLayer\n            ref={layerRef}\n            channel='r' // Multiple layers can share the same channel.\n            altitude={2000}\n            height={800}\n            shadow\n          />\n          {/* Create fog near the ground, for example. */}\n          <CloudLayer\n            channel='a'\n            height={300}\n            densityScale={0.05}\n            shapeAmount={0.2}\n            shapeDetailAmount={0}\n            shapeAlteringBias={0.5}\n            coverageFilterWidth={1}\n            densityProfile={{\n              expTerm: 1,\n              exponent: 1e-3,\n              constantTerm: 0,\n              linearTerm: 0\n            }}\n          />\n          {/* The number of cloud layers is limited to 4. */}\n        </Clouds>\n        <AerialPerspective sky sunLight skyLight />\n      </EffectComposer>\n    </Atmosphere>\n  )\n}\n```\n\n### Parameters / props\n\n#### channel\n\n```ts\nchannel: 'r' | 'g' | 'b' | 'a' = 'r'\n```\n\nThe channel of the weather texture to use for this cloud layer. Multiple layers can share the same channel.\n\n#### altitude\n\n```ts\naltitude: number = 0\n```\n\nThe altitude of the bottom of the cloud layer, measured from the ellipsoid surface in meters.\n\n#### height\n\n```ts\nheight: number = 0\n```\n\nThe height of the cloud layer in meters. Settings this value to 0 disables the layer.\n\n#### densityScale\n\n```ts\ndensityScale: number = 0.2\n```\n\nControls the overall density of the clouds within the layer. Settings this value to 0 disables the layer.\n\n#### shapeAmount\n\n```ts\nshapeAmount: number = 1\n```\n\nControls the influence of the shape texture on the cloud layer.\n\n#### shapeDetailAmount\n\n```ts\nshapeDetailAmount: number = 1\n```\n\nControls the influence of the shape detail texture on the cloud layer.\n\n#### weatherExponent\n\n```ts\nweatherExponent: number = 1\n```\n\nControls the gradient of the weather texture. Values greater than 1 sharpen the gradient, while lower values flatten the weather making it more uniform.\n\n#### shapeAlteringBias\n\n```ts\nshapeAlteringBias: number = 0.35\n```\n\nControls the vertical bias of the cloud shape. A value of 1 results in symmetry, while 0 fully biases the shape at the bottom.\n\n#### coverageFilterWidth\n\n```ts\ncoverageFilterWidth: number = 0.6\n```\n\nDetermines how the weather signal influences the shape-altered density. A value of 1 produces a linear gradient, ignoring weather signal, while 0 creates a sharp density transition at the weather signal.\n\n#### densityProfile\n\n<!-- prettier-ignore -->\n```ts\ndensityProfile: DensityProfile = {\n  expTerm: number = 0, // a\n  exponent: number = 0, // b\n  linearTerm: number = 0.75, // c\n  constantTerm: number = 0.25 // d\n}\n```\n\nDetermines how density varies with the height fraction ($\\eta$), ranging from 0 to 1 within the cloud layer: $ae^{b\\eta}+c\\eta+d$. Clouds are typically denser at the top and sparser at the bottom (hence the default values). You can adjust these parameters to define a different density distribution.\n\n#### shadow\n\n```ts\nshadow: boolean = false\n```\n\nSpecifies whether this cloud layer should be included in BSM.\n\n→ [Source](/packages/clouds/src/r3f/CloudLayer.tsx)\n\n## CloudsEffect\n\nA post-processing effect that renders volumetric clouds. Although it is an effect and can render as a standalone, it is primarily intended to render clouds into buffers and then composited in `AerialPerspectiveEffect`.\n\nThis is for use with the [`postprocessing`](https://github.com/pmndrs/postprocessing)'s `EffectComposer` and is not compatible with the one in Three.js examples.\n\n→ [Source](/packages/clouds/src/CloudsEffect.ts)\n\n### Rendering path\n\nNothing novel here, just a combination of existing techniques. See the [references section](#references) for further details.\n\n![Rendering path diagram](https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/main/packages/clouds/docs/rendering-path.png)\n\n- **Shadow**\n\n  Performs ray marching in the sun's orthographic projection and outputs the necessary values for computing the optical depth of the clouds (BSM) during the main camera's ray marching.\n\n  → [Shader](/packages/clouds/src/shaders/shadow.frag)\n\n- **Shadow resolve**\n\n  Applies temporal anti-aliasing (TAA) on BSM, not for the aliasing at polygon edges, but rather for temporal filtering:\n  - Reduce spatial aliasing in BSM due to the high-frequency details of the clouds relative to the output resolution.\n  - Reduce temporal aliasing caused by temporal jitters during shadow ray marching.\n\n  → [Shader](/packages/clouds/src/shaders/shadowResolve.frag)\n\n- **Clouds**\n\n  Renders the color and transparency of the clouds, optionally including the shadow length. The aerial perspective is already applied to the clouds here.\n\n  → [Shader](/packages/clouds/src/shaders/clouds.frag)\n\n- **Clouds resolve**\n\n  Performs TAAU-like upscaling on the clouds pass outputs, reducing the number of texels to ray march in the clouds shader pass by 1/16.\n\n  → [Shader](/packages/clouds/src/shaders/cloudsResolve.frag)\n\n- **Aerial perspective**\n\n  This pass is part of the [atmosphere package](https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/atmosphere). It provides `overlay`, `shadow`, and `shadowLength` properties for compositing while applying atmospheric transparency and adding sun and sky irradiance into the scene.\n\n  → [Documentation](https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/atmosphere#aerialperspectiveeffect)\n\n### Parameters\n\nThe number of parameters might seem overwhelming at first, but they provide fine control as needed. To get started, try adjusting [`qualityPreset`](#qualitypreset), [`coverage`](#coverage), cloud layer's [`altitude`](#altitude), and [`height`](#height) to suit your needs. You can also experiment with the parameters in the [Basic story](https://takram-design-engineering.github.io/three-geospatial/?path=/story/clouds-clouds--basic).\n\n- [Rendering](#rendering)\n- [Cloud layers](#cloud-layers)\n- [Textures](#textures)\n- [Scattering](#scattering)\n- [Weather and shape](#weather-and-shape)\n- [Cascaded shadow maps](#cascaded-shadow-maps)\n- [Advanced clouds parameters](#advanced-clouds-parameters)\n- [Advanced shadow parameters](#advanced-shadow-parameters)\n- The parameters of [`AtmosphereMaterialBase`](https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/atmosphere#atmospherematerialbase)\n\n### Rendering\n\n#### qualityPreset\n\n```ts\nqualityPreset: 'low' | 'medium' | 'high' | 'ultra' = 'high'\n```\n\nSee also the [performance tweaks section](#performance-tweaks).\n\n#### resolutionScale\n\n```ts\nresolutionScale: number = 1\n```\n\nSpecifies the final output resolution. For example, setting this to 0.5 reduces the total number of texels to compute by 1/4.\n\n#### temporalUpscale\n\n```ts\ntemporalUpscale: boolean = true\n```\n\nWhether to perform temporal upscaling, which reduces the number of texels to ray march in the clouds pass by 1/16. It is recommended to keep this enabled unless targeting very high-performance devices.\n\nSee also the [limitations section](#limitations), as this technique has tradeoffs.\n\n#### lightShafts\n\n```ts\nlightShafts: boolean = true\n```\n\nWhether to render light shafts (crepuscular rays) using additional ray marching. This enhances the visual impact of cloud-light interaction but is computationally expensive.\n\n#### shapeDetail\n\n```ts\nshapeDetail: boolean = true\n```\n\nWhether to sample the shape detail texture. This enhances cloud details but is computationally expensive.\n\n#### turbulence\n\n```ts\nturbulence: boolean = true\n```\n\nWhether to apply turbulence at the bottom of clouds by sampling the turbulence texture. This adds a sense of wind but is computationally expensive.\n\n#### haze\n\n```ts\nhaze: boolean = true\n```\n\nWhether to apply an approximated haze effect. This is inexpensive and recommended to keep enabled.\n\n### Cloud layers\n\n#### cloudLayers\n\n```ts\ncloudLayers: CloudLayers = CloudLayers.DEFAULT\n```\n\nDefines layers of clouds. See [`CloudLayer`](#cloudlayer) for further details.\n\n### Textures\n\n#### localWeatherTexture\n\n```ts\nlocalWeatherTexture: Texture | ProceduralTexture | null = null\n```\n\nThe local weather texture.\n\nEach channel corresponds to the local weather signal of a specific cloud layer. The texture must be tileable.\n\nAlternatively, you can pass an object that implements from [`ProceduralTexture`](#proceduraltexture-proceduraltexture).\n\n#### shapeTexture, shapeDetailTexture\n\n```ts\nshapeTexture: Data3DTexture | Procedural3DTexture | null = null\nshapeDetailTexture: Data3DTexture | Procedural3DTexture | null = null\n```\n\nThe shape and shape detail textures.\n\nThe red channel represents the inverse amount of erosion applied to the cloud shell (a value of 0 means more erosion). The texture must be tileable (stackable).\n\nAlternatively, you can pass objects that implement from [`Procedural3DTexture`](#proceduraltexture-procedural3dtexture).\n\n#### turbulenceTexture\n\n```ts\nturbulenceTexture: Texture | ProceduralTexture | null = null\n```\n\nThe turbulence texture.\n\nThe RGB value represents a 3D vector used for domain distortion of the shape and shape detail. The texture must be tileable.\n\nAlternatively, you can pass an object that implements from [`ProceduralTexture`](#proceduraltexture-proceduraltexture).\n\n#### stbnTexture\n\n```ts\nstbnTexture: Data3DTexture | null = null\n```\n\nA [spatiotemporal blue noise](https://research.nvidia.com/publication/2022-07_spatiotemporal-blue-noise-masks) (STBN) texture.\n\nThis is used for stochastic sampling. While not required, omitting it will make spatial and temporal aliasing highly noticeable.\n\n### Scattering\n\n#### scatteringCoefficient, absorptionCoefficient\n\n```ts\nscatteringCoefficient: number = 1\nabsorptionCoefficient: number = 0\n```\n\nThe scattering coefficient ($\\sigma_s$) and absorption coefficient ($\\sigma_a$) following the standard definition in volumetric ray marching. Clouds are known to have an albedo very close to 1, defined as $\\sigma_s/(\\sigma_s+\\sigma_a)$, so it is recommended to keep the absorption coefficient low, unless you want a different cloud appearance.\n\n#### scatterAnisotropy1, scatterAnisotropy2, scatterAnisotropyMix\n\n```ts\nscatterAnisotropy1: number = 0.7\nscatterAnisotropy2: number = -0.2\nscatterAnisotropyMix: number = 0.5\n```\n\nControls dual-lobe Henyey-Greenstein phase function. Positive anisotropy strengthens forward scattering, and negative strengthens back-scattering. The two scattering phases are combined using `scatterAnisotropyMix`.\n\nThese values take effect only when [`accuratePhaseFunction`](#cloudsaccuratephasefunction) is disabled.\n\n#### skyLightScale\n\n```ts\nskyLightScale: number = 1\n```\n\nThe contribution of sky light. This is a fudge factor and you might adjust this value to make it look convincing to you.\n\n#### groundBounceScale\n\n```ts\ngroundBounceScale: number = 1\n```\n\nThe contribution of light bouncing off the ground. This is a fudge factor and you might adjust this value to make it look convincing to you.\n\n#### powderScale, powderExponent\n\n```ts\npowderScale: number = 0.8\npowderExponent: number = 150\n```\n\nControls the [\"Beer-Powder\" term](https://www.guerrilla-games.com/read/the-real-time-volumetric-cloudscapes-of-horizon-zero-dawn) on the clouds. This is a fudge factor and you might adjust this value to make it look convincing to you.\n\n### Weather and shape\n\n#### coverage\n\n```ts\ncoverage: number = 0.3\n```\n\nControls the overall amount of clouds in the sky. A value of 0 results in a clear sky, while a value of 1 means the sky is completely covered by clouds.\n\nNote that cloud coverage is also determined by other parameters, and this value does not directly correspond to the ratio of clouds covering the sky.\n\n#### localWeatherRepeat, localWeatherOffset\n\n```ts\nlocalWeatherRepeat: Vector2 = new Vector2().setScalar(100)\nlocalWeatherOffset: Vector2 = new Vector2()\n```\n\nThe repeat and offset values of the local weather texture. It is tiled using cube-sphere UV on a globe sphere. A repeat value of 100 tiles the texture 100 times per edge of the cube-sphere, whereas an offset of 0.5 shifts it by half the tile size.\n\n#### localWeatherVelocity\n\n```ts\nlocalWeatherVelocity: Vector2 = new Vector2()\n```\n\nThe rate at which `localWeatherOffset` changes per second. A non-zero value animates the clouds.\n\n#### shapeRepeat, shapeOffset\n\n```ts\nshapeRepeat: Vector3 = new Vector3().setScalar(0.0003)\nshapeOffset: Vector3 = new Vector3()\n```\n\nThe repeat and offset values of the shape texture. It is stacked in the world coordinate. A value of 0.001 repeats the texture once per kilometer, whereas an offset of 0.5 shifts it by half the stack size.\n\n#### shapeDetailRepeat, shapeDetailOffset\n\n```ts\nshapeDetailRepeat: Vector3 = new Vector3().setScalar(0.006)\nshapeDetailOffset: Vector3 = new Vector3()\n```\n\nThe repeat and offset values of the shape detail texture. It is stacked in the world coordinate. A value of 0.001 repeats the texture once per kilometer, whereas an offset of 0.5 shifts it by half the stack size.\n\n#### shapeVelocity, shapeDetailVelocity\n\n```ts\nshapeVelocity: Vector3 = new Vector3()\nshapeDetailVelocity: Vector3 = new Vector3()\n```\n\nThe rate at which `shapeOffset` and `shapeDetailOffset` change per second. A non-zero value animates the clouds.\n\n#### turbulenceRepeat\n\n```ts\nturbulenceRepeat: Vector2 = new Vector2().setScalar(20)\n```\n\nThe repeat value of the turbulence texture. It is tiled in a local weather texture tile. A value of 10 tiles the texture 10 times per edge of local weather texture.\n\n#### turbulenceDisplacement\n\n```ts\nturbulenceDisplacement: number = 350\n```\n\nControls the maximum turbulence displacement in meters. This applies where turbulence is strongest (value of 1) and at the bottom of the clouds.\n\n### Cascaded shadow maps\n\n#### shadow.cascadeCount\n\n```ts\ncascadeCount: number = 3\n```\n\nThe number of shadow cascades.\n\n#### shadow.mapSize\n\n```ts\nmapSize: Vector2 = new Vector2().setScalar(512)\n```\n\nThe resolution of each cascade in the shadow map.\n\n#### shadow.maxFar\n\n```ts\nmaxFar: number | null = null\n```\n\nThe maximum far plane distance for rendering shadows within the main camera's frustum. This limits the main camera's frustum: shadows beyond this distance are not rendered, and setting a value larger than the main camera's far plane has no effect.\n\n#### shadow.farScale\n\n```ts\nfarScale: number = 1\n```\n\nA scale factor for the main camera's far plane. This is useful when the far plane extends to a point like the horizon occlusion point, even though shadows do not need to be rendered that far. The resulting value is also limited by `shadow.maxFar`.\n\n#### shadow.splitMode, shadow.splitLambda\n\n```ts\nsplitMode: 'uniform' | 'logarithmic' | 'practical' = 'practical'\nsplitLambda: number = 0.6\n```\n\nControls [how the main camera's frustum is split](https://developer.nvidia.com/gpugems/gpugems3/part-ii-light-and-shadows/chapter-10-parallel-split-shadow-maps-programmable-gpus). `splitLambda` is only applicable when `splitMode` is set to `practical`.\n\n### Advanced clouds parameters\n\n#### clouds.multiScatteringOctaves\n\n```ts\nmultiScatteringOctaves: number = 8\n```\n\nThe number of octaves accumulated to approximate multiple scattering. A higher value results in brighter clouds, but values beyond 8 have no noticeable effect.\n\n#### clouds.accurateSunSkyLight\n\n```ts\naccurateSunSkyLight: boolean = true\n```\n\nWhether to sample sun and sky irradiance at every sample point during ray marching. If disabled, irradiance is approximated by interpolating values at the bottom and top of the total cloud layers above the camera, which is only plausible for small-scale scenes.\n\n#### clouds.accuratePhaseFunction\n\n```ts\naccuratePhaseFunction: boolean = false\n```\n\nWhether to use a [numerically-fitted Mie phase function](https://research.nvidia.com/labs/rtr/approximate-mie/) for large particles (d = 10 μm) instead of the dual-lobe Henyey-Greenstein phase function. However, it won't be plausible without a more precise computation of multiple scattering.\n\n#### clouds.maxIterationCount\n\n```ts\nmaxIterationCount: number = 500\n```\n\nThe limit on the number of iterations for the primary ray marching.\n\n#### clouds.minStepSize, clouds.maxStepSize\n\n```ts\nminStepSize: number = 50\nmaxStepSize: number = 1000\n```\n\nControls the step size for the primary ray marching in meters.\n\n#### clouds.maxRayDistance\n\n```ts\nmaxRayDistance: number = 2e5\n```\n\nThe limit on the primary ray distance in meters.\n\n#### clouds.perspectiveStepScale\n\n```ts\nperspectiveStepScale: number = 1.01\n```\n\nThe growth factor of the step size during ray marching. This applies to both the primary rays and shadow length rays.\n\n#### clouds.minDensity, clouds.minExtinction, clouds.minTransmittance\n\n```ts\nminDensity: number = 1e-5\nminExtinction: number = 1e-5\nminTransmittance: number = 1e-2\n```\n\nThe minimum thresholds for density, extinction and transmittance, which determine the early termination of the primary rays.\n\n#### clouds.maxIterationCountToSun, clouds.maxIterationCountToGround\n\n```ts\nmaxIterationCountToSun: number = 3\nmaxIterationCountToGround: number = 2\n```\n\nThe number of steps for ray marching toward the sun and ground (secondary rays). This enhances cloud details, but is very costly, and values greater than 4 have little improvements on quality.\n\n#### clouds.minSecondaryStepSize, clouds.secondaryStepScale\n\n```ts\nminSecondaryStepSize: number = 100\nsecondaryStepScale: number = 2\n```\n\nControls the step size for the secondary ray marching in meters.\n\n#### clouds.maxShadowFilterRadius\n\n```ts\nmaxShadowFilterRadius: number = 6\n```\n\nThe radius for percentage-closer filtering (PCF) on BSM when the sun is near the horizon. Setting this to 0 disables PCF, but it will suffer from aliasing.\n\n#### clouds.maxShadowLengthIterationCount\n\n```ts\nmaxShadowFilterRadius: number = 500\n```\n\nThe limit on the number of iterations for the shadow length ray marching.\n\n#### clouds.minShadowLengthStepSize\n\n```ts\nminShadowLengthStepSize: number = 50\n```\n\nControls the step size for the shadow length ray marching in meters.\n\n#### clouds.maxShadowLengthRayDistance\n\n```ts\nmaxShadowLengthRayDistance: number = 2e5\n```\n\nThe limit on the shadow length ray distance in meters.\n\n#### clouds.hazeDensityScale\n\n```ts\nhazeDensityScale: number = 3e-5\n```\n\nControls the density of the haze. A greater value makes it denser.\n\n#### clouds.hazeExponent\n\n```ts\nhazeExponent: number = 1e-3\n```\n\nControls the rate at which the haze density exponentially decreases with altitude. A lower value makes it more concentrated near the ground, while a higher value spreads it more at higher altitudes.\n\n#### clouds.hazeScatteringCoefficient, clouds.hazeAbsorptionCoefficient\n\n```ts\nhazeScatteringCoefficient: number = 0.9\nhazeAbsorptionCoefficient: number = 0.5\n```\n\nThe scattering coefficient ($\\sigma_s$) and absorption coefficient ($\\sigma_a$) for haze.\n\n### Advanced shadow parameters\n\n#### shadow.temporalPass\n\n```ts\ntemporalPass: boolean = true\n```\n\nWhether to enable TAA pass on BSM to reduce aliasing.\n\n#### shadow.temporalJitter\n\n```ts\ntemporalJitter: boolean = true\n```\n\nWhether to use STBN for sampling. When used with [`temporalPass`](#shadowtemporalpass) enabled, this helps reduce spatial aliasing pronounced by Structured Volume Sampling (SVS).\n\nDisabling this option removes flickers but increases spatial aliasing.\n\n#### shadow.maxIterationCount\n\n```ts\nmaxIterationCount: number = 50\n```\n\nThe limit on the number of iterations for the primary ray marching.\n\n#### shadow.minStepSize, shadow.maxStepSize\n\n```ts\nminStepSize: number = 100\nmaxStepSize: number = 1000\n```\n\nControls the step size for the primary ray marching in meters.\n\n#### shadow.minDensity, shadow.minExtinction, shadow.minTransmittance\n\n```ts\nminDensity: number = 1e-5\nminExtinction: number = 1e-5\nminTransmittance: number = 1e-4\n```\n\nThe minimum thresholds for density, extinction and transmittance, which determine the early termination of the primary rays.\n\n#### shadow.opticalDepthTailScale\n\n```ts\nopticalDepthTailScale: number = 2\n```\n\nControls the additional optical depth applied during early termination of rays. Increasing this value compensates for missing shadows in denser regions of clouds, where ray marching terminates early.\n\n## ProceduralTexture, Procedural3DTexture\n\nInterfaces for replacing texture files with classes that generate data procedurally. This reduces network payload at the cost of additional overhead during initialization.\n\n### Properties\n\n#### size\n\n```ts\nreadonly size: number\n```\n\nThe size of the output texture, assuming square or cubic dimensions.\n\n#### texture\n\n```ts\nreadonly texture: Texture | Data3DTexture\n```\n\nThe generated output texture.\n\n### Methods\n\n#### dispose\n\n```ts\ndispose: () => void\n```\n\nFrees the GPU-related resources allocated by this instance.\n\n#### render\n\n```ts\nrender: (renderer: WebGLRenderer, deltaTime?: number) => void\n```\n\nRenders data to the output texture using the provided renderer. This method is called every frame.\n\n### Implementations\n\n#### LocalWeather\n\nGenerates a procedural texture for [`localWeatherTexture`](#localweathertexture-1).\n\n```ts\nnew LocalWeather()\n```\n\n→ [Source](/packages/clouds/src/LocalWeather.ts)\n\n#### CloudShape, CloudShapeDetail\n\nGenerates procedural textures for [`shapeTexture` and `shapeDetailTexture`](#shapetexture-shapedetailtexture-1).\n\n```ts\nnew CloudShape()\nnew CloudShapeDetail()\n```\n\n→ [Source](/packages/clouds/src/CloudShape.ts)\n\n#### Turbulence\n\nGenerates a procedural texture for [`turbulenceTexture`](#turbulencetexture-1).\n\n```ts\nnew Turbulence()\n```\n\n→ [Source](/packages/clouds/src/Turbulence.ts)\n\n# References\n\nIn alphabetical order\n\n- [A Survey of Temporal Antialiasing Techniques](https://research.nvidia.com/labs/rtr/publication/yang2020survey/)\n  - Summarizes key concepts and techniques of TAA and TAAU.\n- [An Excursion in Temporal Supersampling](https://developer.download.nvidia.com/gameworks/events/GDC2016/msalvi_temporal_supersampling.pdf)\n  - Covers variance clipping in detail.\n- [Convincing Cloud Rendering – An Implementation of Real-Time Dynamic Volumetric Clouds in Frostbite](https://odr.chalmers.se/items/53d0fe07-df09-4cd1-ae7d-6c05491b52bf)\n  - A comprehensive guide to rendering volumetric clouds.\n- [Deep Scattering - Rendering Atmospheric Clouds with Radiance-Predicting Neural Networks](https://dl.acm.org/doi/10.1145/3130800.3130880)\n  - Not specifically for real-time rendering, but provides visual references and the math behind light-cloud interactions.\n- [Nubis - Authoring Realtime Volumetric Cloudscapes with the Decima Engine](https://www.guerrilla-games.com/read/nubis-authoring-real-time-volumetric-cloudscapes-with-the-decima-engine)\n  - A well-known presentation on volumetric clouds, similar to Guerrilla Games slides.\n- [Oz: The Great and Volumetric](https://www.researchgate.net/publication/262309690_Oz_the_great_and_volumetric)\n  - A short paper on the approximation of multiple scattering.\n- [Physically Based and Scalable Atmospheres in Unreal Engine](https://blog.selfshadow.com/publications/s2020-shading-course/hillaire/s2020_pbs_hillaire_slides.pdf)\n  - Briefly introduces BSM.\n- [Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite](https://www.ea.com/frostbite/news/physically-based-sky-atmosphere-and-cloud-rendering)\n  - Perhaps one of the most influential papers on real-time volumetric rendering. It covers many essential techniques, including the basics of volumetric ray marching, energy-conserving analytical integration of scattered light, transmittance-weighted mean depth of clouds, and more.\n- [Real-Time Volumetric Rendering](https://patapom.com/topics/Revision2013/Revision%202013%20-%20Real-time%20Volumetric%20Rendering%20Course%20Notes.pdf)\n  - An introductory course on volumetric cloud rendering.\n- [Spatiotemporal Blue Noise Masks](https://research.nvidia.com/publication/2022-07_spatiotemporal-blue-noise-masks)\n  - The paper and SDK on STBN, which is used extensively for the stochastic sampling.\n- [Temporal Reprojection Anti-Aliasing in INSIDE](https://gdcvault.com/play/1022970/Temporal-Reprojection-Anti-Aliasing-in)\n  - A detailed presentation on TAA.\n- [The Real-time Volumetric Cloudscapes of Horizon Zero Dawn](https://www.guerrilla-games.com/read/the-real-time-volumetric-cloudscapes-of-horizon-zero-dawn)\n  - Another well-known presentation on volumetric clouds, similar to the Nubis slides, introducing the powder term.\n\n**Implementation references**\n\n- [Clouds](https://github.com/lightest/clouds) by lightest\n  - Useful for understanding the missing details in BSM and crepuscular rays.\n- [Procedural Scene in OpenGL 4](https://github.com/fede-vaccaro/TerrainEngine-OpenGL) by fade-vaccaro\n  - Helps in grasping the fundamentals of volumetric cloud ray marching.\n- [Skybolt](https://github.com/Prograda/Skybolt) by Prograda\n  - Helps in modeling global volumetric clouds and controlling coverage.\n- [Structured Volume Sampling](https://github.com/huwb/volsample) by huwb\n  - A reference for implementing Structured Volume Sampling.\n- [three-csm](https://github.com/StrandedKitty/three-csm/) by StrandedKitty\n  - A reference for implementing Cascaded Shadow Maps.\n- [Tileable Volume Noise](https://github.com/sebh/TileableVolumeNoise) by sebh\n  - A reference for implementing volumetric noise in cloud shape and details.\n- [Volumetric Cloud](https://www.shadertoy.com/view/3sffzj) by airo\n  - A basic example of volumetric cloud ray marching.\n\n# License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}