@drawcall/lod 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -7
- package/dist/bake.d.ts +36 -0
- package/dist/bake.js +176 -0
- package/dist/bake.js.map +1 -0
- package/dist/baked/codec.d.ts +3 -6
- package/dist/baked/codec.js +48 -154
- package/dist/baked/codec.js.map +1 -1
- package/dist/baked/coverage.d.ts +6 -3
- package/dist/baked/coverage.js +6 -3
- package/dist/baked/coverage.js.map +1 -1
- package/dist/baked/fields.d.ts +9 -0
- package/dist/baked/fields.js +22 -0
- package/dist/baked/fields.js.map +1 -0
- package/dist/baked/index.d.ts +14 -8
- package/dist/baked/index.js +24 -22
- package/dist/baked/index.js.map +1 -1
- package/dist/baked/interior/faces.d.ts +4 -3
- package/dist/baked/interior/faces.js +16 -11
- package/dist/baked/interior/faces.js.map +1 -1
- package/dist/baked/interior/material.d.ts +7 -10
- package/dist/baked/interior/material.js +29 -36
- package/dist/baked/interior/material.js.map +1 -1
- package/dist/baked/interior/rooms.d.ts +1 -1
- package/dist/baked/interior/rooms.js +2 -2
- package/dist/baked/interior/rooms.js.map +1 -1
- package/dist/baked/low.js +5 -4
- package/dist/baked/low.js.map +1 -1
- package/dist/baked/raster.js +6 -6
- package/dist/baked/raster.js.map +1 -1
- package/dist/baked/textures.d.ts +17 -0
- package/dist/baked/textures.js +95 -0
- package/dist/baked/textures.js.map +1 -0
- package/dist/baked/transfer.js +19 -18
- package/dist/baked/transfer.js.map +1 -1
- package/dist/baked/unwrap.js +4 -3
- package/dist/baked/unwrap.js.map +1 -1
- package/dist/baked/xatlas.js.map +1 -1
- package/dist/codec/container.d.ts +8 -0
- package/dist/codec/container.js +63 -0
- package/dist/codec/container.js.map +1 -0
- package/dist/codec/mesh.d.ts +8 -0
- package/dist/{mesh/codec.js → codec/mesh.js} +80 -52
- package/dist/codec/mesh.js.map +1 -0
- package/dist/dispose.d.ts +8 -5
- package/dist/dispose.js +22 -24
- package/dist/dispose.js.map +1 -1
- package/dist/foliage.d.ts +32 -0
- package/dist/foliage.js +137 -0
- package/dist/foliage.js.map +1 -0
- package/dist/impostor/bake/atlas.d.ts +4 -4
- package/dist/impostor/bake/atlas.js +12 -12
- package/dist/impostor/bake/atlas.js.map +1 -1
- package/dist/impostor/bake/fit.d.ts +8 -0
- package/dist/impostor/bake/fit.js +28 -0
- package/dist/impostor/bake/fit.js.map +1 -0
- package/dist/impostor/bake/index.d.ts +22 -14
- package/dist/impostor/bake/index.js +50 -134
- package/dist/impostor/bake/index.js.map +1 -1
- package/dist/impostor/bake/materials.d.ts +3 -3
- package/dist/impostor/bake/materials.js +51 -13
- package/dist/impostor/bake/materials.js.map +1 -1
- package/dist/impostor/bake/sheet.d.ts +8 -0
- package/dist/impostor/bake/sheet.js +90 -0
- package/dist/impostor/bake/sheet.js.map +1 -0
- package/dist/impostor/bake/source.d.ts +3 -2
- package/dist/impostor/bake/source.js +9 -20
- package/dist/impostor/bake/source.js.map +1 -1
- package/dist/impostor/codec.d.ts +4 -5
- package/dist/impostor/codec.js +36 -109
- package/dist/impostor/codec.js.map +1 -1
- package/dist/impostor/impostor.d.ts +31 -7
- package/dist/impostor/impostor.js +21 -6
- package/dist/impostor/impostor.js.map +1 -1
- package/dist/impostor/ktx2/encode.d.ts +26 -0
- package/dist/impostor/ktx2/encode.js +120 -0
- package/dist/impostor/ktx2/encode.js.map +1 -0
- package/dist/impostor/ktx2/transcode.d.ts +3 -0
- package/dist/impostor/ktx2/transcode.js +99 -0
- package/dist/impostor/ktx2/transcode.js.map +1 -0
- package/dist/impostor/ktx2/uastc.d.ts +7 -0
- package/dist/impostor/ktx2/uastc.js +65 -0
- package/dist/impostor/ktx2/uastc.js.map +1 -0
- package/dist/impostor/ktx2/wasm/encoder.d.ts +4 -0
- package/dist/impostor/ktx2/wasm/encoder.js +10 -0
- package/dist/impostor/ktx2/wasm/encoder.js.map +1 -0
- package/dist/impostor/ktx2/wasm/transcoder.d.ts +3 -0
- package/dist/impostor/ktx2/wasm/transcoder.js +9 -0
- package/dist/impostor/ktx2/wasm/transcoder.js.map +1 -0
- package/dist/impostor/ktx2/worker.d.ts +1 -0
- package/dist/impostor/ktx2/worker.js +10 -0
- package/dist/impostor/ktx2/worker.js.map +1 -0
- package/dist/impostor/mesh/card.d.ts +4 -4
- package/dist/impostor/mesh/card.js +7 -7
- package/dist/impostor/mesh/card.js.map +1 -1
- package/dist/impostor/mesh/index.d.ts +7 -6
- package/dist/impostor/mesh/index.js +10 -11
- package/dist/impostor/mesh/index.js.map +1 -1
- package/dist/impostor/mesh/material.d.ts +18 -9
- package/dist/impostor/mesh/material.js +40 -27
- package/dist/impostor/mesh/material.js.map +1 -1
- package/dist/impostor/mesh/surface.d.ts +1 -1
- package/dist/impostor/mesh/surface.js +13 -9
- package/dist/impostor/mesh/surface.js.map +1 -1
- package/dist/impostor/mesh/textures.d.ts +3 -3
- package/dist/impostor/mesh/textures.js +24 -34
- package/dist/impostor/mesh/textures.js.map +1 -1
- package/dist/index.d.ts +13 -11
- package/dist/index.js +12 -10
- package/dist/index.js.map +1 -1
- package/dist/instanced/camera.d.ts +34 -0
- package/dist/instanced/camera.js +45 -0
- package/dist/instanced/camera.js.map +1 -0
- package/dist/instanced/clusters.d.ts +54 -0
- package/dist/instanced/clusters.js +151 -0
- package/dist/instanced/clusters.js.map +1 -0
- package/dist/instanced/cull.d.ts +28 -0
- package/dist/instanced/cull.js +22 -0
- package/dist/instanced/cull.js.map +1 -0
- package/dist/instanced/instances.d.ts +39 -0
- package/dist/instanced/instances.js +104 -0
- package/dist/instanced/instances.js.map +1 -0
- package/dist/instanced/key.d.ts +19 -0
- package/dist/instanced/key.js +45 -0
- package/dist/instanced/key.js.map +1 -0
- package/dist/instanced/levels.d.ts +60 -0
- package/dist/instanced/levels.js +131 -0
- package/dist/instanced/levels.js.map +1 -0
- package/dist/instanced/lists.d.ts +57 -0
- package/dist/instanced/lists.js +114 -0
- package/dist/instanced/lists.js.map +1 -0
- package/dist/instanced/measure.d.ts +28 -0
- package/dist/instanced/measure.js +203 -0
- package/dist/instanced/measure.js.map +1 -0
- package/dist/instanced/meshes.d.ts +44 -51
- package/dist/instanced/meshes.js +167 -179
- package/dist/instanced/meshes.js.map +1 -1
- package/dist/instanced/mirror.d.ts +24 -0
- package/dist/instanced/mirror.js +76 -0
- package/dist/instanced/mirror.js.map +1 -0
- package/dist/instanced/raycast.d.ts +10 -11
- package/dist/instanced/raycast.js +31 -41
- package/dist/instanced/raycast.js.map +1 -1
- package/dist/instanced/rows.d.ts +50 -0
- package/dist/instanced/rows.js +36 -0
- package/dist/instanced/rows.js.map +1 -0
- package/dist/instanced/shape.d.ts +27 -0
- package/dist/instanced/shape.js +54 -0
- package/dist/instanced/shape.js.map +1 -0
- package/dist/instanced/sort.d.ts +61 -0
- package/dist/instanced/sort.js +192 -0
- package/dist/instanced/sort.js.map +1 -0
- package/dist/instanced/update.d.ts +34 -0
- package/dist/instanced/update.js +180 -0
- package/dist/instanced/update.js.map +1 -0
- package/dist/levels/bounds.d.ts +21 -0
- package/dist/levels/bounds.js +42 -0
- package/dist/levels/bounds.js.map +1 -0
- package/dist/levels/cameras.d.ts +48 -0
- package/dist/levels/cameras.js +122 -0
- package/dist/levels/cameras.js.map +1 -0
- package/dist/levels/compile/contexts.d.ts +30 -0
- package/dist/levels/compile/contexts.js +18 -0
- package/dist/levels/compile/contexts.js.map +1 -0
- package/dist/levels/compile/index.d.ts +41 -0
- package/dist/levels/compile/index.js +193 -0
- package/dist/levels/compile/index.js.map +1 -0
- package/dist/levels/compile/pipelines.d.ts +26 -0
- package/dist/levels/compile/pipelines.js +172 -0
- package/dist/levels/compile/pipelines.js.map +1 -0
- package/dist/levels/compiles.d.ts +29 -0
- package/dist/levels/compiles.js +50 -0
- package/dist/levels/compiles.js.map +1 -0
- package/dist/levels/draw.d.ts +102 -0
- package/dist/levels/draw.js +401 -0
- package/dist/levels/draw.js.map +1 -0
- package/dist/levels/fade.d.ts +60 -0
- package/dist/levels/fade.js +129 -0
- package/dist/levels/fade.js.map +1 -0
- package/dist/levels/index.d.ts +99 -0
- package/dist/levels/index.js +155 -0
- package/dist/levels/index.js.map +1 -0
- package/dist/levels/item.d.ts +38 -0
- package/dist/levels/item.js +89 -0
- package/dist/levels/item.js.map +1 -0
- package/dist/levels/load.d.ts +31 -0
- package/dist/levels/load.js +144 -0
- package/dist/levels/load.js.map +1 -0
- package/dist/levels/manager.d.ts +158 -0
- package/dist/levels/manager.js +352 -0
- package/dist/levels/manager.js.map +1 -0
- package/dist/{material.d.ts → levels/material.d.ts} +2 -2
- package/dist/{material.js → levels/material.js} +6 -5
- package/dist/levels/material.js.map +1 -0
- package/dist/levels/renderer.d.ts +32 -0
- package/dist/levels/renderer.js +57 -0
- package/dist/levels/renderer.js.map +1 -0
- package/dist/levels/requests.d.ts +52 -0
- package/dist/levels/requests.js +97 -0
- package/dist/levels/requests.js.map +1 -0
- package/dist/levels/screen.d.ts +14 -0
- package/dist/levels/screen.js +21 -0
- package/dist/levels/screen.js.map +1 -0
- package/dist/loader/build.d.ts +10 -0
- package/dist/loader/build.js +28 -0
- package/dist/loader/build.js.map +1 -0
- package/dist/loader/context.d.ts +44 -0
- package/dist/loader/context.js +96 -0
- package/dist/loader/context.js.map +1 -0
- package/dist/loader/entry.d.ts +4 -0
- package/dist/loader/entry.js +43 -0
- package/dist/loader/entry.js.map +1 -0
- package/dist/loader/index.d.ts +76 -0
- package/dist/loader/index.js +272 -0
- package/dist/loader/index.js.map +1 -0
- package/dist/loader/level.d.ts +41 -0
- package/dist/loader/level.js +140 -0
- package/dist/loader/level.js.map +1 -0
- package/dist/loader/node.d.ts +26 -0
- package/dist/loader/node.js +199 -0
- package/dist/loader/node.js.map +1 -0
- package/dist/loader/request.d.ts +54 -0
- package/dist/loader/request.js +19 -0
- package/dist/loader/request.js.map +1 -0
- package/dist/loader/url.d.ts +10 -6
- package/dist/loader/url.js +22 -14
- package/dist/loader/url.js.map +1 -1
- package/dist/lod.d.ts +144 -43
- package/dist/lod.js +354 -163
- package/dist/lod.js.map +1 -1
- package/dist/meshopt.d.ts +6 -0
- package/dist/meshopt.js +20 -0
- package/dist/meshopt.js.map +1 -0
- package/dist/node-process.d.ts +5 -0
- package/dist/node-process.js +6 -0
- package/dist/node-process.js.map +1 -0
- package/dist/node.d.ts +2 -0
- package/dist/node.js +5 -0
- package/dist/node.js.map +1 -0
- package/dist/simplify/cards.d.ts +14 -0
- package/dist/simplify/cards.js +128 -0
- package/dist/simplify/cards.js.map +1 -0
- package/dist/{simplify.d.ts → simplify/index.d.ts} +8 -5
- package/dist/{simplify.js → simplify/index.js} +45 -27
- package/dist/simplify/index.js.map +1 -0
- package/dist/{bounds.d.ts → source/detail.d.ts} +9 -23
- package/dist/{bounds.js → source/detail.js} +28 -58
- package/dist/source/detail.js.map +1 -0
- package/dist/source/deviation.js +6 -6
- package/dist/source/deviation.js.map +1 -1
- package/dist/source/{shading.d.ts → evaluator.d.ts} +10 -10
- package/dist/source/{shading.js → evaluator.js} +5 -5
- package/dist/source/evaluator.js.map +1 -0
- package/dist/source/{trace.d.ts → raycaster.d.ts} +6 -6
- package/dist/source/{trace.js → raycaster.js} +8 -8
- package/dist/source/raycaster.js.map +1 -0
- package/dist/source/{texels.d.ts → sampler.d.ts} +1 -1
- package/dist/source/{texels.js → sampler.js} +8 -5
- package/dist/source/sampler.js.map +1 -0
- package/dist/source/source.d.ts +1 -1
- package/dist/source/source.js +1 -1
- package/dist/source/source.js.map +1 -1
- package/dist/source/surface.js +1 -1
- package/dist/source/surface.js.map +1 -1
- package/dist/task.d.ts +6 -0
- package/dist/{pause.js → task.js} +5 -5
- package/dist/task.js.map +1 -0
- package/dist/three.d.ts +19 -30
- package/dist/three.js +30 -57
- package/dist/three.js.map +1 -1
- package/dist/tsl.d.ts +8 -12
- package/dist/tsl.js +11 -39
- package/dist/tsl.js.map +1 -1
- package/dist/typegpu.d.ts +37 -0
- package/dist/typegpu.js +37 -0
- package/dist/typegpu.js.map +1 -0
- package/dist/wind/bounds.js +3 -3
- package/dist/wind/bounds.js.map +1 -1
- package/dist/wind/hooks.d.ts +7 -4
- package/dist/wind/hooks.js +5 -2
- package/dist/wind/hooks.js.map +1 -1
- package/dist/wind/index.d.ts +4 -4
- package/dist/wind/index.js +25 -23
- package/dist/wind/index.js.map +1 -1
- package/dist/wind/sway.d.ts +2 -0
- package/dist/wind/sway.js +4 -1
- package/dist/wind/sway.js.map +1 -1
- package/package.json +24 -10
- package/skills/lod/SKILL.md +120 -32
- package/dist/bounds.js.map +0 -1
- package/dist/compile.d.ts +0 -4
- package/dist/compile.js +0 -100
- package/dist/compile.js.map +0 -1
- package/dist/deferred.d.ts +0 -12
- package/dist/deferred.js +0 -27
- package/dist/deferred.js.map +0 -1
- package/dist/fade.d.ts +0 -36
- package/dist/fade.js +0 -112
- package/dist/fade.js.map +0 -1
- package/dist/instanced/args.d.ts +0 -20
- package/dist/instanced/args.js +0 -77
- package/dist/instanced/args.js.map +0 -1
- package/dist/instanced/blocks.d.ts +0 -66
- package/dist/instanced/blocks.js +0 -294
- package/dist/instanced/blocks.js.map +0 -1
- package/dist/instanced/dirty.d.ts +0 -15
- package/dist/instanced/dirty.js +0 -96
- package/dist/instanced/dirty.js.map +0 -1
- package/dist/instanced/index.d.ts +0 -90
- package/dist/instanced/index.js +0 -349
- package/dist/instanced/index.js.map +0 -1
- package/dist/instanced/parts.d.ts +0 -14
- package/dist/instanced/parts.js +0 -79
- package/dist/instanced/parts.js.map +0 -1
- package/dist/instanced/select.d.ts +0 -92
- package/dist/instanced/select.js +0 -315
- package/dist/instanced/select.js.map +0 -1
- package/dist/instanced/store.d.ts +0 -31
- package/dist/instanced/store.js +0 -96
- package/dist/instanced/store.js.map +0 -1
- package/dist/levels.d.ts +0 -95
- package/dist/levels.js +0 -171
- package/dist/levels.js.map +0 -1
- package/dist/loader/bundle.d.ts +0 -25
- package/dist/loader/bundle.js +0 -241
- package/dist/loader/bundle.js.map +0 -1
- package/dist/loader/cache.d.ts +0 -15
- package/dist/loader/cache.js +0 -75
- package/dist/loader/cache.js.map +0 -1
- package/dist/loader/provenance.d.ts +0 -30
- package/dist/loader/provenance.js +0 -105
- package/dist/loader/provenance.js.map +0 -1
- package/dist/loader.d.ts +0 -55
- package/dist/loader.js +0 -239
- package/dist/loader.js.map +0 -1
- package/dist/material.js.map +0 -1
- package/dist/mesh/codec.d.ts +0 -4
- package/dist/mesh/codec.js.map +0 -1
- package/dist/pause.d.ts +0 -6
- package/dist/pause.js.map +0 -1
- package/dist/queue.d.ts +0 -2
- package/dist/queue.js +0 -33
- package/dist/queue.js.map +0 -1
- package/dist/renderer.d.ts +0 -21
- package/dist/renderer.js +0 -83
- package/dist/renderer.js.map +0 -1
- package/dist/residency.d.ts +0 -44
- package/dist/residency.js +0 -205
- package/dist/residency.js.map +0 -1
- package/dist/simplify.js.map +0 -1
- package/dist/source/shading.js.map +0 -1
- package/dist/source/texels.js.map +0 -1
- package/dist/source/trace.js.map +0 -1
- package/dist/view.d.ts +0 -45
- package/dist/view.js +0 -131
- package/dist/view.js.map +0 -1
package/dist/lod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lod.js","sourceRoot":"","sources":["../src/lod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAkD,MAAM,cAAc,CAAC;AAChG,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAuB,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAiC,MAAM,aAAa,CAAC;AAC3J,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAsB,MAAM,WAAW,CAAC;AAC1I,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AAIxB;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,GAAI,SAAQ,QAAwB;IAC/C,kFAAkF;IAClF,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,qEAAqE;IACrE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAU,IAAI,GAAG,IAAI,CAAC;IAEnB,KAAK,GAAG,IAAI,CAAC;IACtB,kEAAkE;IAClE,UAAU,GAAG,IAAI,CAAC;IAClB,2CAA2C;IAC3C,UAAU,GAAkB,IAAI,CAAC;IACxB,MAAM,CAAuB;IAErB,OAAO,GAAY,EAAE,CAAC;IACvC,sCAAsC;IACrB,KAAK,GAAiB,EAAE,CAAC;IAC1C,kFAAkF;IAC1E,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IACtB,YAAY,GAAG,CAAC,CAAC;IACjB,QAAQ,GAAG,KAAK,CAAC;IACR,SAAS,GAAG,IAAI,SAAS,CACxC,IAAI,CAAC,OAAO,EACZ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAChE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAClD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAC9D,CAAC;IAEF,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,CAAC;IACD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,YAAY,SAA8B,EAAE;QAC1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,MAA2B;QACvC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,IAAI,GAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YACpF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,QAAQ,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,kHAAkH;IAC1G,IAAI,CAAC,IAAc,EAAE,IAAgB,EAAE,MAAe,EAAE,KAAe;QAC7E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACpB,yCAAyC;gBACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtJ,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED,CAAC,WAAW,CAAC,CAAC,OAAe;QAC3B,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC;IAC/B,CAAC;IAED,iGAAiG;IACjG,MAAM,CAAC,MAAc;QACnB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAChC,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC;YAAE,OAAO;QACxE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9E,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;QACxE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,MAAM,CACnB,MAAM,EACN,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAC9H,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACjD,IAAI,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACzC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC5C,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtH,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;QAC9E,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,KAAY,EAAE,QAAkB,EAAE,OAAsB;QAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,GAAG;YAAE,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/D,uFAAuF;QACvF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpB,aAAa,CAAC,MAAM,CAAC,CAAC;YACtB,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpB,aAAa,CAAC,MAAM,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,IAAI,SAAS,CAAC,MAAM,CAAC;YAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEQ,OAAO,CAAC,SAAoB,EAAE,UAA0B;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,MAAM,EAAE,MAAM;YAAE,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAC/E,4DAA4D;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACM,IAAI,CAAC,MAAW;QACvB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iIAAiI;IACjI,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;YAC1B,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,MAAM;oBAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC;;AAGH,0IAA0I;AAC1I,SAAS,SAAS,CAAC,KAAe;IAChC,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ;QAChC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"lod.js","sourceRoot":"","sources":["../src/lod.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { MeshoptDecoder } from "three/addons/libs/meshopt_decoder.module.js";
|
|
2
|
+
/**
|
|
3
|
+
* three's meshopt decoder, which decodes in two workers from the first use on: sources' glTF buffers and mesh caches.
|
|
4
|
+
* In Node it decodes on the calling thread. Process-wide, as three's own decoder is.
|
|
5
|
+
*/
|
|
6
|
+
export declare function meshoptDecoder(): typeof MeshoptDecoder;
|
package/dist/meshopt.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MeshoptDecoder } from "three/addons/libs/meshopt_decoder.module.js";
|
|
2
|
+
import { inNode } from "./node-process.js";
|
|
3
|
+
/**
|
|
4
|
+
* Whether the decoder's workers were started. useWorkers starts no second set, but each call rebuilds the workers'
|
|
5
|
+
* source (the whole decoder WASM as text) into a new Blob; decodes ask for the decoder often (codec/mesh.ts), so it
|
|
6
|
+
* is started once.
|
|
7
|
+
*/
|
|
8
|
+
let workers = false;
|
|
9
|
+
/**
|
|
10
|
+
* three's meshopt decoder, which decodes in two workers from the first use on: sources' glTF buffers and mesh caches.
|
|
11
|
+
* In Node it decodes on the calling thread. Process-wide, as three's own decoder is.
|
|
12
|
+
*/
|
|
13
|
+
export function meshoptDecoder() {
|
|
14
|
+
if (!workers && !inNode && MeshoptDecoder.supported && typeof Worker !== "undefined") {
|
|
15
|
+
MeshoptDecoder.useWorkers(2);
|
|
16
|
+
workers = true;
|
|
17
|
+
}
|
|
18
|
+
return MeshoptDecoder;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=meshopt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meshopt.js","sourceRoot":"","sources":["../src/meshopt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;;;GAIG;AACH,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,SAAS,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACrF,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether this runs in Node, as the vitecache plugin builds levels there. Work there stays on the calling thread: the
|
|
3
|
+
* Worker @drawcall/webgpu installs runs no module workers and ends with its canvas, which a later load outlives.
|
|
4
|
+
*/
|
|
5
|
+
export declare const inNode: boolean;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether this runs in Node, as the vitecache plugin builds levels there. Work there stays on the calling thread: the
|
|
3
|
+
* Worker @drawcall/webgpu installs runs no module workers and ends with its canvas, which a later load outlives.
|
|
4
|
+
*/
|
|
5
|
+
export const inNode = typeof process !== "undefined" && process.versions?.node !== undefined;
|
|
6
|
+
//# sourceMappingURL=node-process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-process.js","sourceRoot":"","sources":["../src/node-process.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC"}
|
package/dist/node.d.ts
ADDED
package/dist/node.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// The Node.js entry, which the `node` export condition selects: the browser entry's exports, with the CachedLodLoader
|
|
2
|
+
// that builds levels in Node, as the vitecache plugin runs it.
|
|
3
|
+
export * from "./index.js";
|
|
4
|
+
export { CachedLodLoader } from "./loader/node.js";
|
|
5
|
+
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,sHAAsH;AACtH,+DAA+D;AAC/D,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Mesh } from "three/webgpu";
|
|
2
|
+
/** Per material of `mesh`, whether it alpha-tests a texture, so draws cards. */
|
|
3
|
+
export declare function cardMaterials(mesh: Mesh): boolean[];
|
|
4
|
+
/**
|
|
5
|
+
* About `ratio` of the cards (connected parts, touching where vertices share a position)
|
|
6
|
+
* of the triangles `indices`, spread evenly over them by meshopt's point simplifier on the
|
|
7
|
+
* cards' centres. Each picked card is enlarged about its centre, in `positions`, so the picked
|
|
8
|
+
* cards cover as much area as all did; a card larger than most grows only as far as a
|
|
9
|
+
* card of the median size does, or a long spray would reach far out of the crown, and no
|
|
10
|
+
* card grows past the bounds of all, which a level must stay inside.
|
|
11
|
+
* Edge collapse would instead shrink and warp each card, and so cut most of an
|
|
12
|
+
* alpha-tested texture (needles, leaves) away.
|
|
13
|
+
*/
|
|
14
|
+
export declare function decimateCards(indices: Uint32Array, positions: Float32Array, ratio: number): Uint32Array;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Box3, Vector3 } from "three/webgpu";
|
|
2
|
+
import { MeshoptSimplifier } from "meshoptimizer";
|
|
3
|
+
import { at } from "../at.js";
|
|
4
|
+
import { triangleArea } from "../source/surface.js";
|
|
5
|
+
import { isTexture } from "../three.js";
|
|
6
|
+
// Simplifying cards: the alpha-tested quads foliage draws (needles, leaves), which simplify decimates card by card rather
|
|
7
|
+
// than collapsing their edges.
|
|
8
|
+
/** Per material of `mesh`, whether it alpha-tests a texture, so draws cards. */
|
|
9
|
+
export function cardMaterials(mesh) {
|
|
10
|
+
const materials = Array.isArray(mesh.material) ? mesh.material : [mesh.material];
|
|
11
|
+
return materials.map((m) => m.alphaTest > 0 && ["map" in m && m.map, "alphaMap" in m && m.alphaMap].some(isTexture));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* About `ratio` of the cards (connected parts, touching where vertices share a position)
|
|
15
|
+
* of the triangles `indices`, spread evenly over them by meshopt's point simplifier on the
|
|
16
|
+
* cards' centres. Each picked card is enlarged about its centre, in `positions`, so the picked
|
|
17
|
+
* cards cover as much area as all did; a card larger than most grows only as far as a
|
|
18
|
+
* card of the median size does, or a long spray would reach far out of the crown, and no
|
|
19
|
+
* card grows past the bounds of all, which a level must stay inside.
|
|
20
|
+
* Edge collapse would instead shrink and warp each card, and so cut most of an
|
|
21
|
+
* alpha-tested texture (needles, leaves) away.
|
|
22
|
+
*/
|
|
23
|
+
export function decimateCards(indices, positions, ratio) {
|
|
24
|
+
const { card, count } = cards(indices, positions);
|
|
25
|
+
const corner = (t, k) => indices[t * 3 + k] ?? 0;
|
|
26
|
+
const point = new Vector3();
|
|
27
|
+
const area = new Float64Array(count);
|
|
28
|
+
const centre = Array.from({ length: count }, () => new Vector3());
|
|
29
|
+
const corners = new Uint32Array(count);
|
|
30
|
+
card.forEach((c, t) => {
|
|
31
|
+
area[c] = (area[c] ?? 0) + triangleArea(positions, 3, indices, t * 3);
|
|
32
|
+
for (let k = 0; k < 3; k++)
|
|
33
|
+
at(centre, c).add(point.fromArray(positions, corner(t, k) * 3));
|
|
34
|
+
corners[c] = (corners[c] ?? 0) + 3;
|
|
35
|
+
});
|
|
36
|
+
centre.forEach((p, c) => p.divideScalar(corners[c] ?? 1));
|
|
37
|
+
const radius = new Float64Array(count);
|
|
38
|
+
const box = Array.from({ length: count }, () => new Box3());
|
|
39
|
+
const bounds = new Box3();
|
|
40
|
+
card.forEach((c, t) => {
|
|
41
|
+
for (let k = 0; k < 3; k++) {
|
|
42
|
+
point.fromArray(positions, corner(t, k) * 3);
|
|
43
|
+
radius[c] = Math.max(radius[c] ?? 0, point.distanceTo(at(centre, c)));
|
|
44
|
+
at(box, c).expandByPoint(point);
|
|
45
|
+
bounds.expandByPoint(point);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
const median = Float64Array.from(radius).sort()[count >> 1] ?? 0;
|
|
49
|
+
// The most each card can grow about its centre and stay inside `bounds`.
|
|
50
|
+
const fit = centre.map((p, c) => {
|
|
51
|
+
const { min, max } = at(box, c);
|
|
52
|
+
let most = Infinity;
|
|
53
|
+
for (const axis of ["x", "y", "z"]) {
|
|
54
|
+
if (max[axis] > p[axis])
|
|
55
|
+
most = Math.min(most, (bounds.max[axis] - p[axis]) / (max[axis] - p[axis]));
|
|
56
|
+
if (min[axis] < p[axis])
|
|
57
|
+
most = Math.min(most, (p[axis] - bounds.min[axis]) / (p[axis] - min[axis]));
|
|
58
|
+
}
|
|
59
|
+
return Math.max(1, most);
|
|
60
|
+
});
|
|
61
|
+
const picked = new Uint8Array(count);
|
|
62
|
+
const target = Math.max(1, Math.round(count * ratio));
|
|
63
|
+
const points = Float32Array.from(centre.flatMap((p) => p.toArray()));
|
|
64
|
+
for (const c of target < count ? MeshoptSimplifier.simplifyPoints(points, 3, target) : picked.keys())
|
|
65
|
+
picked[c] = 1;
|
|
66
|
+
// `scale` enlarges a median card; bisect for the one at which the picked cards cover what all did.
|
|
67
|
+
const grow = (c, scale) => Math.min(scale, fit[c] ?? 1, Math.max(1, (scale * median) / Math.max(radius[c] ?? 0, 1e-30)));
|
|
68
|
+
const covered = (scale) => area.reduce((sum, a, c) => sum + (picked[c] ? a * grow(c, scale) ** 2 : 0), 0);
|
|
69
|
+
const total = area.reduce((sum, a) => sum + a, 0);
|
|
70
|
+
let [low, high] = [1, 1];
|
|
71
|
+
while (covered(high) < total && high < 1e6)
|
|
72
|
+
high *= 2;
|
|
73
|
+
for (let i = 0; i < 40; i++) {
|
|
74
|
+
const mid = (low + high) / 2;
|
|
75
|
+
if (covered(mid) < total)
|
|
76
|
+
low = mid;
|
|
77
|
+
else
|
|
78
|
+
high = mid;
|
|
79
|
+
}
|
|
80
|
+
const out = [];
|
|
81
|
+
const moved = new Uint8Array(positions.length / 3);
|
|
82
|
+
card.forEach((c, t) => {
|
|
83
|
+
if (!picked[c])
|
|
84
|
+
return;
|
|
85
|
+
const p = at(centre, c);
|
|
86
|
+
for (let k = 0; k < 3; k++) {
|
|
87
|
+
const v = corner(t, k);
|
|
88
|
+
out.push(v);
|
|
89
|
+
if (moved[v])
|
|
90
|
+
continue;
|
|
91
|
+
moved[v] = 1;
|
|
92
|
+
point
|
|
93
|
+
.fromArray(positions, v * 3)
|
|
94
|
+
.sub(p)
|
|
95
|
+
.multiplyScalar(grow(c, high))
|
|
96
|
+
.add(p)
|
|
97
|
+
.toArray(positions, v * 3);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return Uint32Array.from(out);
|
|
101
|
+
}
|
|
102
|
+
/** The card of each triangle, numbered 0..count-1. */
|
|
103
|
+
function cards(indices, positions) {
|
|
104
|
+
const remap = MeshoptSimplifier.generatePositionRemap(positions, 3);
|
|
105
|
+
const parent = Uint32Array.from(remap.keys());
|
|
106
|
+
const root = (vertex) => {
|
|
107
|
+
let v = remap[vertex] ?? vertex;
|
|
108
|
+
while (parent[v] !== v)
|
|
109
|
+
v = parent[v] = parent[parent[v] ?? v] ?? v;
|
|
110
|
+
return v;
|
|
111
|
+
};
|
|
112
|
+
for (let i = 0; i < indices.length; i += 3) {
|
|
113
|
+
const a = root(indices[i] ?? 0);
|
|
114
|
+
parent[root(indices[i + 1] ?? 0)] = a;
|
|
115
|
+
parent[root(indices[i + 2] ?? 0)] = a;
|
|
116
|
+
}
|
|
117
|
+
const number = new Map();
|
|
118
|
+
const card = new Uint32Array(indices.length / 3);
|
|
119
|
+
for (let t = 0; t < card.length; t++) {
|
|
120
|
+
const r = root(indices[t * 3] ?? 0);
|
|
121
|
+
let c = number.get(r);
|
|
122
|
+
if (c === undefined)
|
|
123
|
+
number.set(r, (c = number.size));
|
|
124
|
+
card[t] = c;
|
|
125
|
+
}
|
|
126
|
+
return { card, count: number.size };
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=cards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cards.js","sourceRoot":"","sources":["../../src/simplify/cards.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import { type Object3D } from "three/webgpu";
|
|
2
2
|
export interface SimplifyOptions {
|
|
3
|
-
/** share of each mesh's triangles
|
|
3
|
+
/** share of each mesh's triangles that remains, in (0, 1]; default 0.5 */
|
|
4
4
|
ratio?: number;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
7
|
* A copy of `object` with the geometry of every mesh drawn at full detail decimated by
|
|
8
8
|
* meshoptimizer to about `ratio` of its triangles: of a nested LOD only level 0 (its other
|
|
9
|
-
* levels are
|
|
9
|
+
* levels stay as they are), of an InstancedMesh the geometry its instances share. Materials (and
|
|
10
10
|
* so textures) are the originals, shared with `object`. Meshes that share a geometry
|
|
11
11
|
* share the simplified one. Morph targets are dropped. ImpostorMeshes and hidden meshes
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* stay as they are. Skinned meshes and Lods are refused: simplify a Lod's source and
|
|
13
|
+
* build a new Lod of it.
|
|
14
14
|
*
|
|
15
|
-
* Per material group it
|
|
15
|
+
* Per material group it preserves UV and normal seams; if that cannot reach the target it
|
|
16
16
|
* lets seams collapse, and as a last resort ignores topology (meshopt's sloppy mode).
|
|
17
|
+
* A group drawn with an alpha-tested texture (foliage cards) is decimated card by card
|
|
18
|
+
* instead: about `ratio` of its cards remain, whole, spread evenly and enlarged to cover
|
|
19
|
+
* what all covered (see `decimateCards`).
|
|
17
20
|
*
|
|
18
21
|
* How far the copy's surface is from `object`'s (the 99.9th percentile of the distance
|
|
19
22
|
* between the two, by area, over the parts seen from outside; ImpostorMeshes left out)
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import { BufferAttribute, BufferGeometry } from "three/webgpu";
|
|
2
2
|
import { mergeVertices } from "three/addons/utils/BufferGeometryUtils.js";
|
|
3
3
|
import { MeshoptSimplifier } from "meshoptimizer";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
4
|
+
import { recordDeviation } from "../levels/index.js";
|
|
5
|
+
import { detailed } from "../source/detail.js";
|
|
6
|
+
import { measureDeviation } from "../source/deviation.js";
|
|
7
|
+
import { readSource } from "../source/source.js";
|
|
8
|
+
import { merge } from "../source/surface.js";
|
|
9
|
+
import { isImpostorMesh, isLod, isMesh, isSkinnedMesh } from "../three.js";
|
|
10
|
+
import { cardMaterials, decimateCards } from "./cards.js";
|
|
11
11
|
/**
|
|
12
12
|
* A copy of `object` with the geometry of every mesh drawn at full detail decimated by
|
|
13
13
|
* meshoptimizer to about `ratio` of its triangles: of a nested LOD only level 0 (its other
|
|
14
|
-
* levels are
|
|
14
|
+
* levels stay as they are), of an InstancedMesh the geometry its instances share. Materials (and
|
|
15
15
|
* so textures) are the originals, shared with `object`. Meshes that share a geometry
|
|
16
16
|
* share the simplified one. Morph targets are dropped. ImpostorMeshes and hidden meshes
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* stay as they are. Skinned meshes and Lods are refused: simplify a Lod's source and
|
|
18
|
+
* build a new Lod of it.
|
|
19
19
|
*
|
|
20
|
-
* Per material group it
|
|
20
|
+
* Per material group it preserves UV and normal seams; if that cannot reach the target it
|
|
21
21
|
* lets seams collapse, and as a last resort ignores topology (meshopt's sloppy mode).
|
|
22
|
+
* A group drawn with an alpha-tested texture (foliage cards) is decimated card by card
|
|
23
|
+
* instead: about `ratio` of its cards remain, whole, spread evenly and enlarged to cover
|
|
24
|
+
* what all covered (see `decimateCards`).
|
|
22
25
|
*
|
|
23
26
|
* How far the copy's surface is from `object`'s (the 99.9th percentile of the distance
|
|
24
27
|
* between the two, by area, over the parts seen from outside; ImpostorMeshes left out)
|
|
@@ -34,31 +37,35 @@ export async function decimate(object, ratio) {
|
|
|
34
37
|
if (!(ratio > 0 && ratio <= 1))
|
|
35
38
|
throw new Error(`simplify: ratio must be in (0, 1], got ${ratio}`);
|
|
36
39
|
await MeshoptSimplifier.ready;
|
|
37
|
-
// clone() also visits hidden children, whose
|
|
38
|
-
//
|
|
40
|
+
// clone() also visits hidden children, whose Lod copies must never be made just to
|
|
41
|
+
// reject them (or skipped by the visible-detail walk below).
|
|
39
42
|
object.traverse((node) => {
|
|
40
|
-
if (
|
|
41
|
-
throw new Error(`simplify: cannot simplify
|
|
43
|
+
if (isLod(node))
|
|
44
|
+
throw new Error(`simplify: cannot simplify a Lod ("${node.name}"); simplify its source and build a new one`);
|
|
42
45
|
if (isSkinnedMesh(node))
|
|
43
46
|
throw new Error(`simplify: skinned meshes are not supported ("${node.name}")`);
|
|
44
47
|
});
|
|
45
48
|
const copy = object.clone(true);
|
|
46
49
|
decimateTree(copy, ratio, new Map());
|
|
47
|
-
borrowMaterials(copy);
|
|
48
50
|
return copy;
|
|
49
51
|
}
|
|
50
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Decimate the meshes of `node` drawn at full detail; `done` maps each geometry, with
|
|
54
|
+
* which of its material indices are cards, to its simplified one.
|
|
55
|
+
*/
|
|
51
56
|
function decimateTree(node, ratio, done) {
|
|
52
57
|
if (isMesh(node) && !isImpostorMesh(node)) {
|
|
53
|
-
|
|
58
|
+
const cards = cardMaterials(node);
|
|
59
|
+
const key = `${node.geometry.uuid} ${cards.join()}`;
|
|
60
|
+
let geometry = done.get(key);
|
|
54
61
|
if (!geometry)
|
|
55
|
-
done.set(
|
|
62
|
+
done.set(key, (geometry = simplifyGeometry(node.geometry, ratio, cards)));
|
|
56
63
|
node.geometry = geometry;
|
|
57
64
|
}
|
|
58
65
|
for (const child of detailed(node))
|
|
59
66
|
decimateTree(child, ratio, done);
|
|
60
67
|
}
|
|
61
|
-
function simplifyGeometry(source, ratio) {
|
|
68
|
+
function simplifyGeometry(source, ratio, cards) {
|
|
62
69
|
const geometry = source.index ? source : mergeVertices(source);
|
|
63
70
|
const index = geometry.index;
|
|
64
71
|
if (!index)
|
|
@@ -67,12 +74,20 @@ function simplifyGeometry(source, ratio) {
|
|
|
67
74
|
const { attributes, stride, weights } = simplifierAttributes(geometry);
|
|
68
75
|
const groups = geometry.groups.length > 0 ? geometry.groups : [{ start: 0, count: index.count, materialIndex: 0 }];
|
|
69
76
|
const parts = [];
|
|
77
|
+
let decimatedCards = false;
|
|
70
78
|
for (const group of groups) {
|
|
71
79
|
const indices = new Uint32Array(Math.min(group.count, index.count - group.start));
|
|
72
80
|
for (let i = 0; i < indices.length; i++)
|
|
73
81
|
indices[i] = index.getX(group.start + i);
|
|
74
|
-
const
|
|
75
|
-
|
|
82
|
+
const materialIndex = group.materialIndex ?? 0;
|
|
83
|
+
// A single material draws every group.
|
|
84
|
+
const card = (cards.length === 1 ? cards[0] : cards[materialIndex]) ?? false;
|
|
85
|
+
if (card)
|
|
86
|
+
decimatedCards = true;
|
|
87
|
+
const simplified = card
|
|
88
|
+
? decimateCards(indices, positions, ratio)
|
|
89
|
+
: simplifyIndices(indices, positions, attributes, stride, weights, Math.floor((indices.length / 3) * ratio) * 3)[0];
|
|
90
|
+
parts.push({ indices: simplified, materialIndex });
|
|
76
91
|
}
|
|
77
92
|
const all = new Uint32Array(parts.reduce((n, p) => n + p.indices.length, 0));
|
|
78
93
|
const out = new BufferGeometry();
|
|
@@ -84,8 +99,11 @@ function simplifyGeometry(source, ratio) {
|
|
|
84
99
|
offset += part.indices.length;
|
|
85
100
|
}
|
|
86
101
|
const [remap, unique] = MeshoptSimplifier.compactMesh(all); // rewrites `all` in place
|
|
87
|
-
for (const [name, attribute] of Object.entries(geometry.attributes))
|
|
88
|
-
|
|
102
|
+
for (const [name, attribute] of Object.entries(geometry.attributes)) {
|
|
103
|
+
// decimateCards moved the remaining cards' vertices, past the range a quantized position may hold.
|
|
104
|
+
const from = name === "position" && decimatedCards ? new BufferAttribute(positions, 3) : attribute;
|
|
105
|
+
out.setAttribute(name, compactAttribute(from, remap, unique));
|
|
106
|
+
}
|
|
89
107
|
out.setIndex(new BufferAttribute(all, 1));
|
|
90
108
|
out.computeBoundingBox();
|
|
91
109
|
out.computeBoundingSphere();
|
|
@@ -100,7 +118,7 @@ function simplifyIndices(indices, positions, attributes, stride, weights, target
|
|
|
100
118
|
if (reached(permissive[0]))
|
|
101
119
|
return permissive;
|
|
102
120
|
const sloppy = MeshoptSimplifier.simplifySloppy(indices, positions, 3, null, target, 1);
|
|
103
|
-
// Sloppy can collapse a tiny target to nothing; then
|
|
121
|
+
// Sloppy can collapse a tiny target to nothing; then use the permissive result.
|
|
104
122
|
return sloppy[0].length > 0 ? sloppy : permissive;
|
|
105
123
|
}
|
|
106
124
|
/** Normal (weight 0.5) and UV (weight 1) packed per vertex for simplifyWithAttributes. */
|
|
@@ -126,7 +144,7 @@ function simplifierAttributes(geometry) {
|
|
|
126
144
|
}
|
|
127
145
|
function compactAttribute(attribute, remap, unique) {
|
|
128
146
|
const size = attribute.itemSize;
|
|
129
|
-
// A slice
|
|
147
|
+
// A slice has the array's type, so normalized and integer attributes hold their encoding;
|
|
130
148
|
// every element is written below (unique <= count, so it is long enough).
|
|
131
149
|
const out = new BufferAttribute(attribute.array.slice(0, unique * size), size, attribute.normalized);
|
|
132
150
|
for (let i = 0; i < remap.length; i++) {
|
|
@@ -147,4 +165,4 @@ function toFloat32(attribute) {
|
|
|
147
165
|
}
|
|
148
166
|
return out;
|
|
149
167
|
}
|
|
150
|
-
//# sourceMappingURL=
|
|
168
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/simplify/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { Box3, Matrix4,
|
|
1
|
+
import { Box3, Matrix4, Vector3, type Mesh, type Object3D } from "three/webgpu";
|
|
2
|
+
import type { Lod } from "../lod.js";
|
|
2
3
|
/**
|
|
3
4
|
* Call `visit` with every mesh of `root` drawn at full detail, and the matrix that places
|
|
4
5
|
* it in `root`'s own space (`root`'s own transform not applied): `root` itself and its
|
|
5
6
|
* visible descendants; of a nested LOD only its level 0, whatever it shows; and once per
|
|
6
|
-
* instance, the meshes of an InstancedMesh or ImpostorMesh and of
|
|
7
|
-
* level 0. `placement` is only valid during the call. Local matrices are
|
|
7
|
+
* instance, the meshes of an InstancedMesh or ImpostorMesh and of a Lod's level 0. `placement` is only valid during the call. Local matrices are
|
|
8
8
|
* brought up to date on the way.
|
|
9
9
|
*/
|
|
10
10
|
export declare function forEachMesh(root: Object3D, visit: (mesh: Mesh, placement: Matrix4) => void): void;
|
|
11
11
|
/** The children of `node` drawn at full detail: of a LOD its level 0, whatever it shows, else the visible ones. */
|
|
12
12
|
export declare function detailed(node: Object3D): Object3D[];
|
|
13
|
+
/** `node`'s matrix in its parent's space, up to date. */
|
|
14
|
+
export declare function local(node: Object3D): Matrix4;
|
|
13
15
|
/** Show level 0 of every LOD under `root` and stop them switching: a bake sees full detail. */
|
|
14
16
|
export declare function showDetail(root: Object3D): void;
|
|
15
17
|
/**
|
|
@@ -18,26 +20,10 @@ export declare function showDetail(root: Object3D): void;
|
|
|
18
20
|
* an ImpostorMesh. `visit` gets one reused vector.
|
|
19
21
|
*/
|
|
20
22
|
export declare function forEachVertex(root: Object3D, visit: (p: Vector3) => void): void;
|
|
21
|
-
/** Conservative full-detail bounds from cached geometry boxes and deferred metadata, in the root's space. */
|
|
23
|
+
/** Conservative full-detail bounds from cached geometry boxes and deferred metadata, in the root's space: what a bake measures. */
|
|
22
24
|
export declare function boundingBox(root: Object3D): Box3;
|
|
23
|
-
/** The centre and half diagonal of `boundingBox(root)`: an impostor baked from `root` has the same box. */
|
|
24
|
-
export declare function boundingSphere(root: Object3D): Sphere;
|
|
25
25
|
/**
|
|
26
|
-
* The
|
|
27
|
-
*
|
|
28
|
-
* own space, `placed` in its parent's (the Lod's). `who` names the caller in the error.
|
|
26
|
+
* The indices of the instances `lod` draws: of its first `count`, those in its clusters, if it has any. A storage
|
|
27
|
+
* instanceMatrix's live on the GPU, where the CPU cannot visit them.
|
|
29
28
|
*/
|
|
30
|
-
export declare function
|
|
31
|
-
object?: Object3D;
|
|
32
|
-
box?: Box3;
|
|
33
|
-
}[], who: string): {
|
|
34
|
-
own: Sphere;
|
|
35
|
-
placed: Sphere;
|
|
36
|
-
};
|
|
37
|
-
/** A level's bounds in its owner's space, including an eager object's transform. */
|
|
38
|
-
export declare function levelBox(level: {
|
|
39
|
-
object?: Object3D;
|
|
40
|
-
box?: Box3;
|
|
41
|
-
}): Box3;
|
|
42
|
-
/** Fill absent mesh bounds conservatively from a deferred level's declared box, without reading vertices. */
|
|
43
|
-
export declare function prepareBounds(root: Object3D, box: Box3): void;
|
|
29
|
+
export declare function instancesOf(lod: Lod): Generator<number>;
|