{"_id":"@certe/atmos-terrain","_rev":"20-d3178684a3b362f86ea7ed694930f010","name":"@certe/atmos-terrain","dist-tags":{"latest":"0.8.17"},"versions":{"0.1.0":{"name":"@certe/atmos-terrain","version":"0.1.0","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.1.0","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"c59334ddc671a25b3cab6dcee007061b0c52cfdd","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.1.0.tgz","fileCount":60,"integrity":"sha512-ekcE9RAxdyF8NuCFlz6pWSxysPtW2UrmOCicj+u4kCp5HYE0/KbBi50Q2MUL39GDpL4rKD3l+1L3gLDUkVVk8Q==","signatures":[{"sig":"MEQCIE1u7wvIC2r1cBYIvNl/mCX9NBsEZ70/SdhqXXjcIFr1AiAhSXO0GVCCUJ76KJjoUnTjTswczebbLBDWNslA8crOxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274898},"main":"src/index.ts","type":"module","types":"src/index.ts","gitHead":"5c6592e202ce6a27854da7ff21e0728d816b0bd7","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.1.0","@certe/atmos-math":"^0.1.0","@certe/atmos-renderer":"^0.1.0"},"publishConfig":{"main":"dist/index.js","types":"dist/index.d.ts"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.1.0_1772141636579_0.2333566880286837","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@certe/atmos-terrain","version":"0.2.0","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.2.0","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"415c4d4b74dbe91467251b1c7a8f84c156fa5582","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.2.0.tgz","fileCount":60,"integrity":"sha512-4agtihnyAyX6z8wOWlfEGb8Xn/PzXM5R4T0ERrG32aGb5TmTYsm6GlVeHDQiqRpheFf9djF8lz7omTsArbizeA==","signatures":[{"sig":"MEQCIDq6Fkut6C6uQ/28ZAsHNDbw/3mHNtaGgOdYNwqiQ1gvAiAbFrygWf3QNoAqM+8lgvrIoTeFpCLPeazsuv4lG2ngWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274950},"main":"src/index.ts","type":"module","types":"src/index.ts","gitHead":"fb99ffbce0df9cc350d0022d5517f6afebe6839e","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.2.0","@certe/atmos-math":"^0.2.0","@certe/atmos-renderer":"^0.2.0"},"publishConfig":{"main":"dist/index.js","types":"dist/index.d.ts"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.2.0_1772142412432_0.5705369089800376","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@certe/atmos-terrain","version":"0.3.0","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.3.0","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"b6ab7dba811f3e4030a1fde586f104df6c201e5a","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.3.0.tgz","fileCount":59,"integrity":"sha512-Z66y3t+WiN5+pEH60UmZ2uVsEi6V5cwlpabByibH9BTS0Nla2Htw3rLpCQ2vvFbOqTkUj4I4FABqCuFbpGcQow==","signatures":[{"sig":"MEYCIQDGGToY3gPBciTvGX83THv/pUOtaVW3uQNWYYS64eanDgIhAMfSs0YeP68x1JChr/XjCXDFV508o7IB15HrVwc7E47W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"474c19ea5aff58621b0b33e56602cfa0702421b0","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.3.0","@certe/atmos-math":"^0.3.0","@certe/atmos-renderer":"^0.3.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.3.0_1772142717959_0.424010220652673","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@certe/atmos-terrain","version":"0.4.0","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.4.0","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"edff4758ef83df1bac015c17c2f1d74da678b8e2","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.4.0.tgz","fileCount":59,"integrity":"sha512-+4DGBZNbpmc3Yf5FIw9J4F26bDXm82TTJP1+wPxcokTfT5bLdT9BYMvG6vSuDhIIRxnG7DJJGZyrNWs2oY08MQ==","signatures":[{"sig":"MEUCIBkqeRi5HqYj2y+7DcKQ9nfhoY8ejXSPU0Kf1ZxUF8aQAiEAnVTwE7bF8/FNrIb8xJuErV28j6zCp+vnR5uq1e1cUkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"083ed45425aabad091973baa99377df2e8c6e6a9","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.4.0","@certe/atmos-math":"^0.4.0","@certe/atmos-renderer":"^0.4.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.4.0_1772142868634_0.05016418698139735","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@certe/atmos-terrain","version":"0.5.0","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.5.0","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"82e07bd178b0209dc10c7a5e4d2d71fdb08cc384","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.5.0.tgz","fileCount":59,"integrity":"sha512-HV8K6n2U3Cwi6/Q2rq7vnHsfs37pNIEsYJNelhfaXeRlVBHzfvjQKTyAJqagDFSYOhBwh9EEdxyUp8lLdrltDQ==","signatures":[{"sig":"MEUCIQClrgVQKoeKKsIACHEeSmy/xT6586YZbjBQu40mJNj2aAIgTDqvCL6QWmnoI3eyBppT3qvYUe1pR7Dvy5k52L1NnEQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"fafaf52e5d708b3495cf37877130fb1b5524dc66","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.5.0","@certe/atmos-math":"^0.5.0","@certe/atmos-renderer":"^0.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.5.0_1772143334134_0.5666471953790171","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@certe/atmos-terrain","version":"0.6.0","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.6.0","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"28ce0125b14c389580995cab011d6fe523cfcb44","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.6.0.tgz","fileCount":59,"integrity":"sha512-XYy6+DE+RAkcbSj5/4PhEJfpkx8J3lMebTLS4FEupOHlMN0lEROB4kAk/F3L6DmNXC/NmCxinga4uu5SO9hPcA==","signatures":[{"sig":"MEUCIA5Y6O7ZuRvKW1aJjlGA7yDRqKh6nhtFDkypSZBIRboqAiEAg5NTcpgdyhmSkdlx7ZKWls/zOuSxKNR42BY0oHM7XBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"c62f791309b89b99fcc400bb36e7e09c506c15b9","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.6.0","@certe/atmos-math":"^0.6.0","@certe/atmos-renderer":"^0.6.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.6.0_1772143577511_0.11660468606889074","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@certe/atmos-terrain","version":"0.7.0","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.7.0","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"b70455b2358bcf31c064d7738b8340c9fede2ea6","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.7.0.tgz","fileCount":59,"integrity":"sha512-X02jUfdQHLRzSGMQIpSr28EQPyyVzeNGHF6HNz17SYX4TIoSSi112tomZfCE7j5dn0O70I/TJOgrf8Eg8+RvPg==","signatures":[{"sig":"MEYCIQCUhfqYaKaHz+7iMf9XLobQtCXvuGTpLaxOvepkKjDdeAIhAPFo32Ij2hYIgjOInid4dqzn3MngtOc9FT4vGdXoJDzc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"4ad1f8bbda2066c6d8dcb9bd9f96892c1883e459","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.7.0","@certe/atmos-math":"^0.7.0","@certe/atmos-renderer":"^0.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.7.0_1772177449680_0.5853442986211914","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@certe/atmos-terrain","version":"0.8.0","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.0","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"0dd3426e10819d7ddcac0b9ee0f62b94484e9a04","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.0.tgz","fileCount":59,"integrity":"sha512-/n7VCY3x8zRGggyPy0uQ5l4Zd5LFLP82UwDjUWZQEh//3brAEPpRksPiQLVtKO2Ew/hZZT5IOd0lkNMIbz622g==","signatures":[{"sig":"MEQCID7uCTW9KGsUjHFDLkrE/DES59hfrP1OywKD9WydDsJeAiBBVuf/VDfVJl/EMiHys2TVXgW3usPWpOG2hnt7VkofYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"8c1032c4b2f89195b1cb13bad95498a9dfeefb0f","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.0","@certe/atmos-math":"^0.8.0","@certe/atmos-renderer":"^0.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.0_1772179622216_0.915386748143503","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@certe/atmos-terrain","version":"0.8.1","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.1","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"b42f140e57e59750516191b0a1d6da945020f348","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.1.tgz","fileCount":59,"integrity":"sha512-V9a8C66EZPOverWeycAEcylpMx+9Ys9GgLXlwz2Z/KaVRFNKs/1ZtQLjtksB/OQpHx2KVAWFQMMZ7fPCUnYfSQ==","signatures":[{"sig":"MEYCIQCdNyoV8JkE2SeuCgnTMg8Mn0DQ5VGWvRBPgnAU1bYPyAIhAMORT95aouu4l0J+EfveiHzltScDcPJrp8S7hvNg0avh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"b6d153304dfeac5689cfacdee0e91ba8a1bbce24","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.1","@certe/atmos-math":"^0.8.1","@certe/atmos-renderer":"^0.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.1_1772181049060_0.226615306229891","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@certe/atmos-terrain","version":"0.8.2","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.2","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"f2c665de315cebef4b25685cb2b67ff5e89a4675","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.2.tgz","fileCount":59,"integrity":"sha512-RiJumcAnODZyrOPuNalMJgiqhbIKA3nk68qcXdsIiQsXpr4o8MuqJThvGhvJeUNNGaPLA68L4Hl3RMDu7925gQ==","signatures":[{"sig":"MEYCIQDSf+2HWK84T5kjlahWB9NX4M2Me4Mv+7VAsKRd0feECQIhAMhUKiVMn+gQufwT+fJhuGNpbHVysJIxTwy1Edj+jlTO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"963a23d51bee0bcdc5808b758c6cf955ffe9ee4b","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.2","@certe/atmos-math":"^0.8.2","@certe/atmos-renderer":"^0.8.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.2_1772181907417_0.8288460592037465","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@certe/atmos-terrain","version":"0.8.3","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.3","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"7e769974833ef9e03484ba0c166cbc85435cf82f","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.3.tgz","fileCount":59,"integrity":"sha512-ihzTFtAE3gGorcFRdnOFrQB1qd1mLO9w5WXsN0RHkn+QXGsEzxQHNUQxS3NJWhDJK2qpAPyUs59V3qsuD7fCpA==","signatures":[{"sig":"MEUCIQD4ydjbqyuo4rYpMaxWvNgf4RxGdaIgOs5UT/KAOH0BFgIgd1je8FvtF9ffDzB1N4BeKmDYoox2+0F3OIycAD+boQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"cf59f97984e28b509b8eeb0f2cfe2735dedccf76","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.3","@certe/atmos-math":"^0.8.3","@certe/atmos-renderer":"^0.8.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.3_1772182772797_0.6975347417989424","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"@certe/atmos-terrain","version":"0.8.5","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.5","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"afe6efb7033015b52b6b9df69d70d2d3237fca6f","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.5.tgz","fileCount":59,"integrity":"sha512-oHrzH6JUMPR8m8Xfb3G3cGO73nBqW++hqFGuesBM73yIVPU6Bfr5zIRLZ98MJDmiXWbQtB4qWYqMXZQaCXfswA==","signatures":[{"sig":"MEYCIQDqN3HV77fSMh0fhXttYD3t8J59JEWxf4RoH4+9FkhDaAIhAK6+YBjPBFF1vbs6GnGIHLuN94fyebFHf26X8sRyDRbg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"d62087d725f117c07276eb555157df47307c7e4d","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.5","@certe/atmos-math":"^0.8.5","@certe/atmos-renderer":"^0.8.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.5_1772185618696_0.0450147938963652","host":"s3://npm-registry-packages-npm-production"}},"0.8.6":{"name":"@certe/atmos-terrain","version":"0.8.6","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.6","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"f983af73715c122a56c78313af7610e98536c631","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.6.tgz","fileCount":59,"integrity":"sha512-eD4LtwBXCkfqf/u8zReh/R1wXYwfyHco7b44eiAit77gZHjWS77WyTtxToVrRliqx5S0CLAHHL4KmwSSbJyRmg==","signatures":[{"sig":"MEUCIQD1KrTNTN4C9ZzcTkVMWhJdxxKoLnBi4l1P6hVip+GKGQIgXbGMVsEkgI5t+Letqtss8w7GnZdVQIArXdpDBlFD/4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"1a291fc74f00adb3a01ce388f13780f30570871a","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.6","@certe/atmos-math":"^0.8.6","@certe/atmos-renderer":"^0.8.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.6_1772185869744_0.16645868113284723","host":"s3://npm-registry-packages-npm-production"}},"0.8.7":{"name":"@certe/atmos-terrain","version":"0.8.7","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.7","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"9bc3692eb3996fde56ca13792dff5762bfc5e6ba","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.7.tgz","fileCount":59,"integrity":"sha512-FMuT9lYqVoho0Z1KAkmIRRWU0Iv5KSZLPPeWCNpaklIzNaFeNnrJQtaP/wMRPQBothgrGnINv5bjal3eCAw1MQ==","signatures":[{"sig":"MEQCIAK8Oe4s17Hian61ULhLCXIiR3P3Z64mQZiBtX+ij6mDAiAgYzatFmPnL8mlm/fFVcGGV33aLVsV1/pP1UmWSlWerg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"958b7d454bc59314cfa11ec90e3f1bded0b20b86","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.7","@certe/atmos-math":"^0.8.7","@certe/atmos-renderer":"^0.8.7"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.7_1772189499344_0.7801905412860874","host":"s3://npm-registry-packages-npm-production"}},"0.8.8":{"name":"@certe/atmos-terrain","version":"0.8.8","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.8","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"84265346a115e72c9571a95883c4c4ab0fcaf41d","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.8.tgz","fileCount":59,"integrity":"sha512-FaaPAxMAnzbAu7LNl5ehzUs1DuRt54Hcq8gm5VX49uJHNm4F5Zf1yPIRpZWW/4jWdLMkNSWAwCQD8C4UXgmRFg==","signatures":[{"sig":"MEUCIDcPm+Zk04MIJhJta5we6uGOJ0BZ8cm+rEaPnRKKZcB7AiEArFKC7c3J3pzvWcYGu7KZjyx/AtO02oTwCyXGUYgy2Ho=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273606},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"e8e79a89f9991a76707a4cbc33d18a8978e1d434","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.8","@certe/atmos-math":"^0.8.8","@certe/atmos-renderer":"^0.8.8"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.8_1772198614420_0.5718264391467403","host":"s3://npm-registry-packages-npm-production"}},"0.8.10":{"name":"@certe/atmos-terrain","version":"0.8.10","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.10","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"7493ddc71c5777ad2a19326c7f0fc7ce83ef30aa","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.10.tgz","fileCount":59,"integrity":"sha512-qjD9s3kL4UxaUie7FhDHCYKYL8G/3YFxpEFbIq5FNmp6xdNVaAhAMk+dQgNdkrp+zDwLQMrUDkkrVstKj2dLLw==","signatures":[{"sig":"MEYCIQD5FTv9dytTCffxKj9LSxhvFj+sVOo9iQz+x+18f0zsjAIhAMFgTaih/k0KHklg9w0BNptkMjzwj//p5aa6QrWCzktu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280501},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"80f55191489d08faaddc84744c833aa5d74db98d","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.10","@certe/atmos-math":"^0.8.10","@certe/atmos-renderer":"^0.8.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.10_1772649637567_0.03513321500342048","host":"s3://npm-registry-packages-npm-production"}},"0.8.13":{"name":"@certe/atmos-terrain","version":"0.8.13","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.13","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"2cd9bea0a29c62a1aa118e962a132d7209883790","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.13.tgz","fileCount":59,"integrity":"sha512-yZja4DU3pBTZmR52gxOqkcmzI5mmQnjNgp6Q2j2WU6IDr9DjzXm0dePbD/7E6eEnFS8JLmO9tXAzspAx2+eE9w==","signatures":[{"sig":"MEUCIQCjpEexq/DmG2IoFhBksPxe++lxUxFkA801jZUO/vuCqAIgMAvuiY7NMUutdstRt6laibE2LuGT1OYO6+ngKGQbf20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280501},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"d5607e7cfdc490944c5d06e65bda4fb953fbca79","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.13","@certe/atmos-math":"^0.8.13","@certe/atmos-renderer":"^0.8.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.13_1776666389663_0.27095234804311374","host":"s3://npm-registry-packages-npm-production"}},"0.8.14":{"name":"@certe/atmos-terrain","version":"0.8.14","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.14","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"93ce452766ea97adab473dd8a1ae9afdf947288d","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.14.tgz","fileCount":59,"integrity":"sha512-4WOn2qH1+AieCeiGRto6V0mktMmlnj6qtzjzo2cmTo6dyDs8cZyZh2PbGTyUbZ/WLrxSMDyEUTbnQTTDHnVQYA==","signatures":[{"sig":"MEYCIQCyKuYI5Nfd6CaC+dTiQIovHukGx4uw59/rRhxdcugTVgIhAOzskSFDipzio28KCq5O9ZYu2DAUFG8hh795gPZEV5a1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280501},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"f6a881bd1ab98fbee304e4b80766c64e47821d42","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.14","@certe/atmos-math":"^0.8.14","@certe/atmos-renderer":"^0.8.14"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.14_1776666596498_0.516097947872411","host":"s3://npm-registry-packages-npm-production"}},"0.8.16":{"name":"@certe/atmos-terrain","version":"0.8.16","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"license":"GPL-3.0-or-later","_id":"@certe/atmos-terrain@0.8.16","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"homepage":"https://github.com/certesolutions-cyber/atmos","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"dist":{"shasum":"cd44ed89ae01a88e16dd23098a503965934f4cfe","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.16.tgz","fileCount":59,"integrity":"sha512-2cvbkbyx+xd18sMQMQvFlG+fcoX2ALM+9yeg64YUYDoIt3PWdYdNGnLOTtkZ5fFb4Hv2iSB7DSdBjBbPAiqm0Q==","signatures":[{"sig":"MEUCIDjPC+SPbHQdJXjmm5ZDlbyx1Dh5OLvMGHKqGIolQL5uAiEAzuEv3O+w7Okig4PYPVpL75VGIulWpdTTaYm8a94Nudo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280501},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"98ab83c5c89e585f00281118de82927cb9470a85","scripts":{"test":"vitest run"},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"repository":{"url":"git+https://github.com/certesolutions-cyber/atmos.git","type":"git","directory":"packages/terrain"},"_npmVersion":"10.8.2","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@certe/atmos-core":"^0.8.16","@certe/atmos-math":"^0.8.16","@certe/atmos-renderer":"^0.8.16"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/atmos-terrain_0.8.16_1776934299656_0.14794113084320704","host":"s3://npm-registry-packages-npm-production"}},"0.8.17":{"name":"@certe/atmos-terrain","description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","version":"0.8.17","repository":{"type":"git","url":"git+https://github.com/certesolutions-cyber/atmos.git","directory":"packages/terrain"},"homepage":"https://github.com/certesolutions-cyber/atmos","license":"GPL-3.0-or-later","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"type":"module","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@certe/atmos-core":"^0.8.17","@certe/atmos-math":"^0.8.17","@certe/atmos-renderer":"^0.8.17"},"scripts":{"test":"vitest run"},"_id":"@certe/atmos-terrain@0.8.17","gitHead":"9deb523a3de7f05de09af17083694ebede041708","bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"_nodeVersion":"20.19.4","_npmVersion":"10.8.2","dist":{"integrity":"sha512-3NqLz0Ot/bAb2B71DQ/+WTHEo8AEhb+aPc+FQj7JcrKSdu6rHCgu2+pWdy+SKcbngZOAv08zViviZeAzawfFKw==","shasum":"9efd637c6ed54541fac6133be1f97e7728878740","tarball":"https://registry.npmjs.org/@certe/atmos-terrain/-/atmos-terrain-0.8.17.tgz","fileCount":59,"unpackedSize":280501,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD7jpJtXn2Gm2EzHRDxJHFQDbFijs0+sJo7GIFi/6d1mgIgIctberXhnttn422c7iZJ+T2WznyCoib68hLdOYCFx4c="}]},"_npmUser":{"name":"certesolutions","email":"certesolutions@gmail.com"},"directories":{},"maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/atmos-terrain_0.8.17_1776942734943_0.5987564302856458"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-26T21:33:56.480Z","modified":"2026-04-23T11:12:15.226Z","0.1.0":"2026-02-26T21:33:56.715Z","0.2.0":"2026-02-26T21:46:52.585Z","0.3.0":"2026-02-26T21:51:58.118Z","0.4.0":"2026-02-26T21:54:28.786Z","0.5.0":"2026-02-26T22:02:14.301Z","0.6.0":"2026-02-26T22:06:17.665Z","0.7.0":"2026-02-27T07:30:49.827Z","0.8.0":"2026-02-27T08:07:02.344Z","0.8.1":"2026-02-27T08:30:49.198Z","0.8.2":"2026-02-27T08:45:07.552Z","0.8.3":"2026-02-27T08:59:32.940Z","0.8.5":"2026-02-27T09:46:58.857Z","0.8.6":"2026-02-27T09:51:09.920Z","0.8.7":"2026-02-27T10:51:39.482Z","0.8.8":"2026-02-27T13:23:34.548Z","0.8.10":"2026-03-04T18:40:37.788Z","0.8.13":"2026-04-20T06:26:29.789Z","0.8.14":"2026-04-20T06:29:56.658Z","0.8.16":"2026-04-23T08:51:39.823Z","0.8.17":"2026-04-23T11:12:15.084Z"},"bugs":{"url":"https://github.com/certesolutions-cyber/atmos/issues"},"license":"GPL-3.0-or-later","homepage":"https://github.com/certesolutions-cyber/atmos","keywords":["terrain","voxel","marching-cubes","game-engine","lod","atmos"],"repository":{"type":"git","url":"git+https://github.com/certesolutions-cyber/atmos.git","directory":"packages/terrain"},"description":"Voxel terrain with marching cubes and LOD streaming for the Atmos Engine","maintainers":[{"name":"certesolutions","email":"certesolutions@gmail.com"}],"readme":"# 🏔️ @certe/atmos-terrain\n\nVoxel-based terrain system for the Atmos Engine. Provides density field primitives, marching cubes surface extraction, multi-level LOD streaming, and optional splat texturing with 3-layer blending.\n\n---\n\n## 🔑 Key Concepts\n\n- **Density Field** — A function `(x, y, z) → number` where negative = solid, positive = air, surface at `isoLevel`\n- **Marching Cubes** — Polygonizes the density field into triangle meshes per chunk\n- **LOD Streaming** — `TerrainWorld` streams chunks around a camera with 3 LOD levels\n- **Splat Texturing** — Blend 3 terrain textures based on surface normal and height\n\n---\n\n## 🚀 Quick Start\n\n```ts\nimport { TerrainWorld, noiseTerrain, registerTerrainBuiltins } from '@certe/atmos-terrain';\nimport { perlinNoise3D } from '@certe/atmos-math';\n\nregisterTerrainBuiltins();\n\nconst terrain = gameObject.addComponent(TerrainWorld);\nterrain.setDensityFn(noiseTerrain(perlinNoise3D, 32, 0));\nterrain.init(device, pipelineResources, scene);\nterrain.cameraTarget = cameraGameObject;\n```\n\n---\n\n## 📖 API Overview\n\n### Density Primitives\n\nBuild terrain shapes with CSG composition:\n\n```ts\nimport { sphereDensity, planeDensity, boxDensity,\n         unionDensity, subtractDensity, noiseTerrain } from '@certe/atmos-terrain';\n\nconst ground = planeDensity(0);\nconst hill = sphereDensity(10, 0, 10, 8);\nconst cave = sphereDensity(10, -2, 10, 4);\n\nconst density = subtractDensity(unionDensity(ground, hill), cave);\n```\n\n| Function | Description |\n|---|---|\n| `sphereDensity(cx, cy, cz, r)` | SDF sphere |\n| `planeDensity(height)` | Half-space below Y |\n| `boxDensity(cx, cy, cz, hx, hy, hz)` | SDF box |\n| `unionDensity(a, b)` | CSG union |\n| `intersectDensity(a, b)` | CSG intersection |\n| `subtractDensity(a, b)` | CSG subtraction |\n| `noiseTerrain(noiseFn, amp, baseY)` | Noise-based heightmap |\n\n### TerrainWorld (Infinite Streaming)\n\nStreams chunks around a focus point with 3 LOD levels:\n\n| Property | Description |\n|---|---|\n| `loadRadius` / `unloadRadius` | Chunk-distance thresholds |\n| `maxBuildsPerFrame` / `buildBudgetMs` | Amortized build limits |\n| `cameraTarget` | GameObject to track for streaming |\n| `config` | `TerrainConfig` (chunkSize, voxelSize, smoothNormals) |\n| `lodConfig` | `LODConfig` with distance thresholds |\n\n| Method | Description |\n|---|---|\n| `setDensityFn(fn)` | Set the terrain density function |\n| `init(device, pipeline, scene)` | Initialize GPU context |\n| `setSplatMaterials(pipeline, textures, weightFn)` | Enable 3-layer splat blending |\n| `edit(op)` | Apply brush edit (sphere/cube) |\n\nLOD levels: **LOD 0** (step=1, near) → **LOD 1** (step=2, medium) → **LOD 2** (step=4, far)\n\n### TerrainVolume (Bounded Grid)\n\nFixed N×M×P chunk grid for smaller terrains:\n\n```ts\nconst volume = gameObject.addComponent(TerrainVolume);\nvolume.chunksX = 4; volume.chunksY = 2; volume.chunksZ = 4;\nvolume.setDensityFn(myDensity);\nvolume.init(device, pipelineResources, scene);\nvolume.build();\n```\n\n### Brush Editing\n\n```ts\nterrain.edit({\n  shape: 'sphere',\n  x: hitPoint[0], y: hitPoint[1], z: hitPoint[2],\n  radius: 3,\n  strength: -0.5,  // negative = add, positive = remove\n  falloff: 1,\n});\n```\n\n### Splat Texturing\n\nBlend 3 textures based on surface normal and world height:\n\n```ts\nterrain.setSplatMaterials(terrainPipeline, [grassTex, rockTex, snowTex],\n  (nx, ny, nz, worldY) => {\n    const slope = 1 - ny;\n    const snow = worldY > 20 ? 1 : 0;\n    return [1 - slope - snow, slope]; // [grass, rock], snow = remainder\n  }\n);\n```\n\n---\n\n## 🧠 Implementation Details\n\n- **Vertex format**: 8 floats (pos+normal+uv) standard, 10 floats (+ weights) for splat\n- **Skirt geometry**: Chunks extend 1 voxel past boundaries to hide LOD seams\n- **Pooled buffers**: Scratch vertex/index/density arrays reused across builds\n- **Deferred removal**: Old chunks kept 1 frame for smooth transitions\n- **Chunk keys**: 30-bit packed coordinates (10 bits per axis)\n\n---\n\n## 📁 Structure\n\n```\npackages/terrain/src/\n  index.ts              # Public API\n  types.ts              # TerrainConfig, DensityFn, ChunkCoord, etc.\n  density-field.ts      # Density primitives + CSG\n  marching-cubes.ts     # Full-resolution surface extraction\n  lod-extract.ts        # LOD-stepped marching cubes\n  terrain-normals.ts    # Gradient + triangle normal computation\n  chunk.ts              # TerrainChunk (density grid + mesh)\n  chunk-key.ts          # Coordinate packing utilities\n  lod-chunk.ts          # buildLODMesh / buildLODSplatMesh\n  terrain-world.ts      # TerrainWorld streaming component\n  terrain-volume.ts     # TerrainVolume bounded grid component\n  terrain-editor.ts     # Brush edit system\n  register-builtins.ts  # Component registry integration\n```\n\n---\n\n## 🔗 Dependencies\n\n- `@certe/atmos-core` — Component, GameObject, Scene\n- `@certe/atmos-math` — Noise functions for terrain generation\n- `@certe/atmos-renderer` — Mesh, Material, terrain pipeline, textures\n","readmeFilename":"README.md"}