@drawcall/lod 0.1.0 → 0.2.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 +10 -69
- package/dist/at.d.ts +2 -0
- package/dist/at.js +8 -0
- package/dist/at.js.map +1 -0
- package/dist/baked/codec.d.ts +6 -3
- package/dist/baked/codec.js +22 -16
- package/dist/baked/codec.js.map +1 -1
- package/dist/baked/coverage.d.ts +3 -0
- package/dist/baked/coverage.js +45 -0
- package/dist/baked/coverage.js.map +1 -0
- package/dist/baked/index.d.ts +4 -0
- package/dist/baked/index.js +3 -35
- package/dist/baked/index.js.map +1 -1
- package/dist/baked/low.d.ts +2 -2
- package/dist/baked/low.js +4 -4
- package/dist/baked/low.js.map +1 -1
- package/dist/bounds.d.ts +12 -2
- package/dist/bounds.js +72 -10
- package/dist/bounds.js.map +1 -1
- package/dist/compile.d.ts +4 -0
- package/dist/compile.js +100 -0
- package/dist/compile.js.map +1 -0
- package/dist/deferred.d.ts +12 -0
- package/dist/deferred.js +27 -0
- package/dist/deferred.js.map +1 -0
- package/dist/dispose.d.ts +7 -3
- package/dist/dispose.js +33 -4
- package/dist/dispose.js.map +1 -1
- package/dist/fade.d.ts +5 -13
- package/dist/fade.js +62 -28
- package/dist/fade.js.map +1 -1
- package/dist/impostor/bake/index.d.ts +1 -0
- package/dist/impostor/bake/index.js +1 -0
- package/dist/impostor/bake/index.js.map +1 -1
- package/dist/impostor/bake/materials.js +11 -1
- package/dist/impostor/bake/materials.js.map +1 -1
- package/dist/impostor/codec.d.ts +2 -7
- package/dist/impostor/codec.js +16 -27
- package/dist/impostor/codec.js.map +1 -1
- package/dist/impostor/mesh/card.js +4 -1
- package/dist/impostor/mesh/card.js.map +1 -1
- package/dist/impostor/mesh/index.d.ts +6 -4
- package/dist/impostor/mesh/index.js +8 -10
- package/dist/impostor/mesh/index.js.map +1 -1
- package/dist/impostor/mesh/material.d.ts +7 -5
- package/dist/impostor/mesh/material.js +29 -26
- package/dist/impostor/mesh/material.js.map +1 -1
- package/dist/impostor/mesh/surface.d.ts +20 -16
- package/dist/impostor/mesh/surface.js +74 -55
- package/dist/impostor/mesh/surface.js.map +1 -1
- package/dist/impostor/octahedral.d.ts +1 -8
- package/dist/impostor/octahedral.js +3 -18
- package/dist/impostor/octahedral.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/instanced/args.js +2 -2
- package/dist/instanced/args.js.map +1 -1
- package/dist/instanced/{bounds.d.ts → blocks.d.ts} +25 -9
- package/dist/instanced/{bounds.js → blocks.js} +76 -53
- package/dist/instanced/blocks.js.map +1 -0
- package/dist/instanced/dirty.d.ts +3 -0
- package/dist/instanced/dirty.js +40 -5
- package/dist/instanced/dirty.js.map +1 -1
- package/dist/instanced/index.d.ts +25 -51
- package/dist/instanced/index.js +189 -413
- package/dist/instanced/index.js.map +1 -1
- package/dist/instanced/meshes.d.ts +54 -13
- package/dist/instanced/meshes.js +178 -41
- package/dist/instanced/meshes.js.map +1 -1
- package/dist/instanced/parts.d.ts +14 -0
- package/dist/instanced/parts.js +79 -0
- package/dist/instanced/parts.js.map +1 -0
- package/dist/instanced/raycast.d.ts +13 -0
- package/dist/instanced/raycast.js +53 -0
- package/dist/instanced/raycast.js.map +1 -0
- package/dist/instanced/select.d.ts +17 -9
- package/dist/instanced/select.js +114 -63
- package/dist/instanced/select.js.map +1 -1
- package/dist/instanced/store.d.ts +31 -0
- package/dist/instanced/store.js +96 -0
- package/dist/instanced/store.js.map +1 -0
- package/dist/levels.d.ts +71 -48
- package/dist/levels.js +99 -74
- package/dist/levels.js.map +1 -1
- package/dist/loader/bundle.d.ts +25 -0
- package/dist/loader/bundle.js +241 -0
- package/dist/loader/bundle.js.map +1 -0
- package/dist/loader/cache.d.ts +15 -15
- package/dist/loader/cache.js +71 -33
- package/dist/loader/cache.js.map +1 -1
- package/dist/loader/provenance.d.ts +30 -0
- package/dist/loader/provenance.js +105 -0
- package/dist/loader/provenance.js.map +1 -0
- package/dist/loader/url.d.ts +13 -0
- package/dist/loader/url.js +31 -0
- package/dist/loader/url.js.map +1 -0
- package/dist/loader.d.ts +30 -74
- package/dist/loader.js +191 -186
- package/dist/loader.js.map +1 -1
- package/dist/lod.d.ts +20 -31
- package/dist/lod.js +105 -96
- package/dist/lod.js.map +1 -1
- package/dist/material.js +9 -4
- package/dist/material.js.map +1 -1
- package/dist/mesh/codec.d.ts +4 -0
- package/dist/mesh/codec.js +192 -0
- package/dist/mesh/codec.js.map +1 -0
- package/dist/queue.d.ts +2 -0
- package/dist/queue.js +33 -0
- package/dist/queue.js.map +1 -0
- package/dist/residency.d.ts +44 -0
- package/dist/residency.js +205 -0
- package/dist/residency.js.map +1 -0
- package/dist/simplify.js +5 -3
- package/dist/simplify.js.map +1 -1
- package/dist/source/{error.d.ts → deviation.d.ts} +3 -3
- package/dist/source/{error.js → deviation.js} +6 -6
- package/dist/source/deviation.js.map +1 -0
- package/dist/source/source.d.ts +1 -1
- package/dist/source/source.js +1 -1
- package/dist/three.d.ts +17 -5
- package/dist/three.js +24 -3
- package/dist/three.js.map +1 -1
- package/dist/tsl.d.ts +5 -5
- package/dist/tsl.js +12 -19
- package/dist/tsl.js.map +1 -1
- package/dist/view.d.ts +16 -1
- package/dist/view.js +57 -1
- package/dist/view.js.map +1 -1
- package/dist/wind/index.d.ts +2 -2
- package/dist/wind/index.js +31 -28
- package/dist/wind/index.js.map +1 -1
- package/dist/wind/sway.d.ts +2 -1
- package/package.json +9 -3
- package/skills/lod/SKILL.md +71 -109
- package/dist/impostor/cache.d.ts +0 -15
- package/dist/impostor/cache.js +0 -44
- package/dist/impostor/cache.js.map +0 -1
- package/dist/instanced/bounds.js.map +0 -1
- package/dist/lazy.d.ts +0 -64
- package/dist/lazy.js +0 -187
- package/dist/lazy.js.map +0 -1
- package/dist/loader/dispose.d.ts +0 -3
- package/dist/loader/dispose.js +0 -25
- package/dist/loader/dispose.js.map +0 -1
- package/dist/source/error.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,84 +1,25 @@
|
|
|
1
1
|
# @drawcall/lod
|
|
2
2
|
|
|
3
|
-
Level of detail for
|
|
4
|
-
octahedral impostor, a simplified mesh, a baked low-poly mesh — and switch between them
|
|
5
|
-
by on-screen size, with a dithered fade so the switch does not pop.
|
|
3
|
+
Level of detail for Three.js. Build simplified meshes, baked low-poly meshes, and impostors, then switch between them by on-screen size with smooth dithered fades. Supports individual objects and instanced scenes.
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
`InstancedLod` selects its instances' levels on the GPU.
|
|
5
|
+
Requires Three.js `WebGPURenderer` (`three/webgpu`).
|
|
9
6
|
|
|
10
7
|
```sh
|
|
11
8
|
npm install @drawcall/lod three
|
|
12
9
|
```
|
|
13
10
|
|
|
14
|
-
|
|
11
|
+
Load a model into an existing Three.js scene. With a warm cache, the coarse level draws first and finer levels load as the camera approaches:
|
|
15
12
|
|
|
16
13
|
```ts
|
|
17
|
-
import { LodLoader } from "@drawcall/lod";
|
|
14
|
+
import { Lod, LodLoader } from "@drawcall/lod";
|
|
18
15
|
|
|
19
|
-
const loader = new LodLoader(
|
|
20
|
-
const
|
|
21
|
-
scene.add(
|
|
22
|
-
|
|
23
|
-
const rock = await loader.loadAsync({ url: "/models/rock.glb", levels: [{ type: "simplified" }, { type: "impostor" }] });
|
|
24
|
-
const house = await loader.loadAsync({
|
|
25
|
-
url: "/models/house.glb",
|
|
26
|
-
levels: [
|
|
27
|
-
{ type: "baked", low: "/models/house-low.glb" },
|
|
28
|
-
{ type: "impostor", layout: "hemi" },
|
|
29
|
-
],
|
|
30
|
-
});
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### Which levels for which asset
|
|
34
|
-
|
|
35
|
-
| Asset | Levels |
|
|
36
|
-
| --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
37
|
-
| Foliage: trees, bushes, grass, plants — anything of alpha-tested leaf cards | the default: straight to an `impostor` (`layout: "hemi"` if it stands upright). Never a `simplified` level: decimation tears leaf cards apart |
|
|
38
|
-
| Closed hard-surface meshes: props, rocks, vehicles | `simplified`, then `impostor` |
|
|
39
|
-
| Buildings and large hard surfaces | `baked` onto an authored or generated low mesh, then `impostor`; with `interior: "/models/house-rooms.glts"` its windows show the rooms behind them |
|
|
40
|
-
| Low-poly props | `simplified`, or none: an impostor costs more than the mesh |
|
|
41
|
-
|
|
42
|
-
A `"baked"` level (experimental) is one low-poly mesh with the source's colour, normals
|
|
43
|
-
and material values baked into its own textures. Its low mesh has to keep the silhouette
|
|
44
|
-
(eaves, chimneys): only surface detail moves into its textures.
|
|
45
|
-
|
|
46
|
-
`.glb`/`.gltf` load through the manager's handler when one is registered (a GLTFLoader
|
|
47
|
-
with Draco), `.glts` through a registered `GLTSLoader` from `@drawcall/glts`. Levels are
|
|
48
|
-
built at load time.
|
|
49
|
-
|
|
50
|
-
For many copies, `loader.loadInstancesAsync(url, count)` gives an `InstancedLod`: one
|
|
51
|
-
draw per level and mesh, each instance switching by its own size on screen; place them
|
|
52
|
-
with `setMatrixAt`.
|
|
53
|
-
|
|
54
|
-
For vegetation, apply one shared breeze after building the levels:
|
|
55
|
-
|
|
56
|
-
```ts
|
|
57
|
-
import { Wind } from "@drawcall/lod";
|
|
58
|
-
|
|
59
|
-
const wind = new Wind({ direction: [1, 0.3], speed: 0.25 });
|
|
60
|
-
wind.apply(tree, { amplitude: 0.2 }); // source, cheaper levels and shadows sway together
|
|
61
|
-
// Before rendering each frame:
|
|
62
|
-
wind.time = elapsedSeconds;
|
|
16
|
+
const loader = new LodLoader();
|
|
17
|
+
const levels = await loader.loadAsync("/models/tree.glb");
|
|
18
|
+
scene.add(new Lod(levels));
|
|
63
19
|
```
|
|
64
20
|
|
|
65
|
-
|
|
66
|
-
keep their static rendering path.
|
|
67
|
-
|
|
68
|
-
Bring your own levels with `new Lod([source, ...levels])` or
|
|
69
|
-
`new InstancedLod([source, ...levels], count)`: any `Object3D`, including another `Lod`
|
|
70
|
-
(but not inside an `InstancedLod`). `Lod.quality` trades detail for speed globally,
|
|
71
|
-
`Lod.debug` tints each level, `lod.forceLevel` pins one.
|
|
72
|
-
|
|
73
|
-
### Building blocks
|
|
74
|
-
|
|
75
|
-
The pieces behind the loader are exported too: `simplify` (meshoptimizer), `bakeMesh`
|
|
76
|
-
(the baked level), `bakeImpostor` and `ImpostorMesh` (one draw for thousands of
|
|
77
|
-
impostors, placed like an `InstancedMesh`'s instances), and `encodeImpostor`/`decodeImpostor` to save
|
|
78
|
-
impostors as KTX2.
|
|
21
|
+
Add the [vitecache](https://github.com/drawcall-ai/vitecache) Vite plugin to the host. Loading each asset in the dev server writes its levels as cache files; `vite build` does not generate them, so deploy the cache directory with the app. For procedural assets, register a GLTSLoader on the loading manager and pass a `.glts` URL; the LOD skill below covers caching their expensive generation.
|
|
79
22
|
|
|
80
|
-
|
|
23
|
+
Choose derived levels to suit your assets. The [LOD skill](https://github.com/drawcall-ai/lod/blob/main/packages/lod/skills/lod/SKILL.md) covers asset choices, caching, lazy loading, wind, and scene integration. It also ships with the package at `skills/lod/SKILL.md`.
|
|
81
24
|
|
|
82
|
-
The
|
|
83
|
-
kilometres up down to a ladybird on a corn leaf, every kind of content on the levels
|
|
84
|
-
that suit it.
|
|
25
|
+
The [city example](https://github.com/drawcall-ai/lod/tree/main/examples/city) demonstrates a large scene with buildings, vegetation, and small props.
|
package/dist/at.d.ts
ADDED
package/dist/at.js
ADDED
package/dist/at.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"at.js","sourceRoot":"","sources":["../src/at.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,UAAU,EAAE,CAAI,MAAoB,EAAE,KAAa;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,eAAe,CAAC,CAAC;IACxE,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/baked/codec.d.ts
CHANGED
|
@@ -2,9 +2,12 @@ import { Mesh } from "three/webgpu";
|
|
|
2
2
|
/**
|
|
3
3
|
* Encode an unmodified `bakeMesh` result, before adding it to a Lod or changing its
|
|
4
4
|
* materials. This is a baked-result format, not an Object3D/NodeMaterial serializer.
|
|
5
|
-
* Geometry, map bytes (including cutout mips), rooms, placement and LOD
|
|
5
|
+
* Geometry, map bytes (including cutout mips), rooms, placement and LOD deviation survive
|
|
6
6
|
* exactly. Decoding owns fresh resources; the input mesh remains owned by its caller.
|
|
7
7
|
*/
|
|
8
8
|
export declare function encodeBakedMesh(mesh: Mesh): Uint8Array;
|
|
9
|
-
/**
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Decode `encodeBakedMesh` bytes into an independently owned mesh, ready for a Lod. Large
|
|
11
|
+
* entries inflate in fflate workers.
|
|
12
|
+
*/
|
|
13
|
+
export declare function decodeBakedMeshAsync(bytes: Uint8Array): Promise<Mesh>;
|
package/dist/baked/codec.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { strFromU8, strToU8,
|
|
1
|
+
import { strFromU8, strToU8, unzip, zipSync } from "fflate";
|
|
2
2
|
import { Box3, BufferAttribute, BufferGeometry, ClampToEdgeWrapping, DataArrayTexture, DataTexture, DoubleSide, FrontSide, LinearFilter, LinearMipmapLinearFilter, Mesh, MeshStandardNodeMaterial, NoColorSpace, RGBAFormat, RGFormat, SRGBColorSpace, UnsignedByteType, UVMapping, Vector3, } from "three/webgpu";
|
|
3
|
-
import {
|
|
3
|
+
import { deviationOf, recordDeviation } from "../levels.js";
|
|
4
4
|
import { InteriorMaterial } from "./interior/material.js";
|
|
5
5
|
function fail(why) {
|
|
6
6
|
throw new Error(`Invalid baked mesh: ${why}`);
|
|
@@ -25,14 +25,14 @@ const file = (files, name) => files[name] ?? fail(`missing ${name}`);
|
|
|
25
25
|
/**
|
|
26
26
|
* Encode an unmodified `bakeMesh` result, before adding it to a Lod or changing its
|
|
27
27
|
* materials. This is a baked-result format, not an Object3D/NodeMaterial serializer.
|
|
28
|
-
* Geometry, map bytes (including cutout mips), rooms, placement and LOD
|
|
28
|
+
* Geometry, map bytes (including cutout mips), rooms, placement and LOD deviation survive
|
|
29
29
|
* exactly. Decoding owns fresh resources; the input mesh remains owned by its caller.
|
|
30
30
|
*/
|
|
31
31
|
export function encodeBakedMesh(mesh) {
|
|
32
|
-
const
|
|
32
|
+
const deviation = deviationOf(mesh);
|
|
33
33
|
const { geometry, material } = mesh;
|
|
34
|
-
if (
|
|
35
|
-
fail("expected a bakeMesh result with its LOD
|
|
34
|
+
if (deviation === undefined || !(deviation >= 0) || !Number.isFinite(deviation))
|
|
35
|
+
fail("expected a bakeMesh result with its LOD deviation");
|
|
36
36
|
if (mesh.children.length ||
|
|
37
37
|
!mesh.matrixAutoUpdate ||
|
|
38
38
|
!mesh.visible ||
|
|
@@ -101,9 +101,9 @@ export function encodeBakedMesh(mesh) {
|
|
|
101
101
|
files.index = new Uint8Array(index.array.buffer, index.array.byteOffset, index.array.byteLength);
|
|
102
102
|
const rooms = material instanceof InteriorMaterial ? (material.rooms ?? fail("unfurnished interior")) : null;
|
|
103
103
|
const meta = {
|
|
104
|
-
version:
|
|
104
|
+
version: 2,
|
|
105
105
|
name: mesh.name,
|
|
106
|
-
|
|
106
|
+
deviation,
|
|
107
107
|
position: mesh.position.toArray(),
|
|
108
108
|
quaternion: mesh.quaternion.toArray(),
|
|
109
109
|
scale: mesh.scale.toArray(),
|
|
@@ -125,18 +125,24 @@ export function encodeBakedMesh(mesh) {
|
|
|
125
125
|
files.meta = strToU8(JSON.stringify(meta));
|
|
126
126
|
return zipSync(files, { level: 6 });
|
|
127
127
|
}
|
|
128
|
-
/**
|
|
129
|
-
|
|
130
|
-
|
|
128
|
+
/**
|
|
129
|
+
* Decode `encodeBakedMesh` bytes into an independently owned mesh, ready for a Lod. Large
|
|
130
|
+
* entries inflate in fflate workers.
|
|
131
|
+
*/
|
|
132
|
+
export async function decodeBakedMeshAsync(bytes) {
|
|
133
|
+
const files = await new Promise((resolve, reject) => unzip(bytes, (error, files) => (error ? reject(error) : resolve(files))));
|
|
134
|
+
return fromFiles(files);
|
|
135
|
+
}
|
|
136
|
+
function fromFiles(files) {
|
|
131
137
|
const parsed = JSON.parse(strFromU8(file(files, "meta")));
|
|
132
138
|
const meta = object(parsed);
|
|
133
|
-
if (meta.version !==
|
|
139
|
+
if (meta.version !== 2)
|
|
134
140
|
fail("unsupported version");
|
|
135
141
|
if (typeof meta.name !== "string")
|
|
136
142
|
fail("missing name");
|
|
137
|
-
const
|
|
138
|
-
if (
|
|
139
|
-
fail("negative LOD
|
|
143
|
+
const deviation = number(meta.deviation);
|
|
144
|
+
if (deviation < 0)
|
|
145
|
+
fail("negative LOD deviation");
|
|
140
146
|
const position = floats(file(files, "position"));
|
|
141
147
|
const normal = floats(file(files, "normal"));
|
|
142
148
|
const uv = floats(file(files, "uv"));
|
|
@@ -188,7 +194,7 @@ export function decodeBakedMesh(input) {
|
|
|
188
194
|
mesh.scale.fromArray(numbers(meta.scale, 3));
|
|
189
195
|
mesh.castShadow = boolean(meta.castShadow);
|
|
190
196
|
mesh.receiveShadow = boolean(meta.receiveShadow);
|
|
191
|
-
|
|
197
|
+
recordDeviation(mesh, deviation);
|
|
192
198
|
return mesh;
|
|
193
199
|
}
|
|
194
200
|
function floats(bytes) {
|
package/dist/baked/codec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/baked/codec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/baked/codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** Keep the base mip's cut-out coverage, with room for filtering around the alpha test. */
|
|
2
|
+
export function keepCoverage(mips) {
|
|
3
|
+
const [base] = mips;
|
|
4
|
+
if (!base)
|
|
5
|
+
return mips;
|
|
6
|
+
const target = passing(base, 1);
|
|
7
|
+
if (target === 0 || target === 1)
|
|
8
|
+
return mips;
|
|
9
|
+
for (const mip of mips.slice(1)) {
|
|
10
|
+
let low = 0;
|
|
11
|
+
let high = 8;
|
|
12
|
+
for (let i = 0; i < 16; i++) {
|
|
13
|
+
const scale = (low + high) / 2;
|
|
14
|
+
if (passing(mip, scale) < target)
|
|
15
|
+
low = scale;
|
|
16
|
+
else
|
|
17
|
+
high = scale;
|
|
18
|
+
}
|
|
19
|
+
let inside = Infinity;
|
|
20
|
+
let outside = -Infinity;
|
|
21
|
+
for (let i = 3; i < mip.data.length; i += 4) {
|
|
22
|
+
const alpha = mip.data[i] ?? 0;
|
|
23
|
+
if (alpha * high >= 127.5)
|
|
24
|
+
inside = Math.min(inside, alpha);
|
|
25
|
+
else
|
|
26
|
+
outside = Math.max(outside, alpha);
|
|
27
|
+
}
|
|
28
|
+
// The smallest scale puts a retained texel at alpha 128: bilinear filtering
|
|
29
|
+
// then cuts almost all of its area away. Centre the gap without changing which
|
|
30
|
+
// texels pass. A uniform coarse mip has no gap; keep its original correction.
|
|
31
|
+
if (Number.isFinite(inside) && Number.isFinite(outside))
|
|
32
|
+
high = 255 / (inside + outside);
|
|
33
|
+
for (let i = 3; i < mip.data.length; i += 4)
|
|
34
|
+
mip.data[i] = (mip.data[i] ?? 0) * high;
|
|
35
|
+
}
|
|
36
|
+
return mips;
|
|
37
|
+
}
|
|
38
|
+
function passing({ data }, scale) {
|
|
39
|
+
let count = 0;
|
|
40
|
+
for (let i = 3; i < data.length; i += 4)
|
|
41
|
+
if ((data[i] ?? 0) * scale >= 127.5)
|
|
42
|
+
count++;
|
|
43
|
+
return count / (data.length / 4);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../src/baked/coverage.ts"],"names":[],"mappings":"AAEA,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,IAAW;IACtC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChC,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM;gBAAE,GAAG,GAAG,KAAK,CAAC;;gBACzC,IAAI,GAAG,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,MAAM,GAAG,QAAQ,CAAC;QACtB,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK;gBAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;;gBACvD,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QACD,4EAA4E;QAC5E,+EAA+E;QAC/E,8EAA8E;QAC9E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;QACzF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACvF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAC,EAAE,IAAI,EAAO,EAAE,KAAa;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK;YAAE,KAAK,EAAE,CAAC;IACtF,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/baked/index.d.ts
CHANGED
|
@@ -11,6 +11,10 @@ export type BakeMeshOptions = {
|
|
|
11
11
|
* transmissive (texture alpha is not read). Each room is captured from its box's centre
|
|
12
12
|
* as its colours and its glow; the baked material lights the colours by the indirect
|
|
13
13
|
* light reaching each window.
|
|
14
|
+
* Rooms must not overlap except at their walls. Put inward-facing walls, floors and
|
|
15
|
+
* ceilings on the box faces, with the box beginning just behind its windows. Furniture
|
|
16
|
+
* away from those faces appears flattened onto them. Glass with no nearby room stays
|
|
17
|
+
* plain; the bake fails if none of the source's glass looks into a room.
|
|
14
18
|
*/
|
|
15
19
|
interior?: Object3D;
|
|
16
20
|
} & ({
|
package/dist/baked/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BufferAttribute, BufferGeometry, DataTexture, DoubleSide, FrontSide, LinearFilter, LinearMipmapLinearFilter, Mesh, MeshStandardNodeMaterial, Matrix4, NoColorSpace, RGFormat, RGBAFormat, SRGBColorSpace, UnsignedByteType, Vector3, } from "three/webgpu";
|
|
2
2
|
import { boundingBox, forEachMesh } from "../bounds.js";
|
|
3
|
-
import {
|
|
3
|
+
import { recordDeviation } from "../levels.js";
|
|
4
4
|
import { sharedRenderer } from "../renderer.js";
|
|
5
5
|
import { readSource } from "../source/source.js";
|
|
6
6
|
import { area } from "../source/surface.js";
|
|
@@ -11,6 +11,7 @@ import { InteriorMaterial } from "./interior/material.js";
|
|
|
11
11
|
import { readBoxes } from "./interior/rooms.js";
|
|
12
12
|
import { layOut, simplified } from "./low.js";
|
|
13
13
|
import { transfer } from "./transfer.js";
|
|
14
|
+
import { keepCoverage } from "./coverage.js";
|
|
14
15
|
/**
|
|
15
16
|
* Bake `source` (in its own space, ignoring its own transform) onto one low-poly mesh with
|
|
16
17
|
* its own textures: base colour (alpha: cut out or not), tangent-space normal and
|
|
@@ -101,7 +102,7 @@ async function bake(source, options, interior) {
|
|
|
101
102
|
const mesh = new Mesh(geometry, material);
|
|
102
103
|
mesh.name = `${source.name || "object"} baked`;
|
|
103
104
|
placeLike(mesh, source);
|
|
104
|
-
|
|
105
|
+
recordDeviation(mesh, Math.max(texelSize, low.deviation));
|
|
105
106
|
return mesh;
|
|
106
107
|
}
|
|
107
108
|
/**
|
|
@@ -147,37 +148,4 @@ function bakedTexture(base, colorSpace, mips) {
|
|
|
147
148
|
texture.needsUpdate = true;
|
|
148
149
|
return texture;
|
|
149
150
|
}
|
|
150
|
-
/**
|
|
151
|
-
* `mips` with each one's alpha scaled so that the share of texels passing an alpha test
|
|
152
|
-
* at 0.5 stays the base mip's: plain averaging thins cut-outs (leaves, grass) into
|
|
153
|
-
* nothing in the distance.
|
|
154
|
-
*/
|
|
155
|
-
function keepCoverage(mips) {
|
|
156
|
-
const [base] = mips;
|
|
157
|
-
if (!base)
|
|
158
|
-
return mips;
|
|
159
|
-
const target = passing(base, 1);
|
|
160
|
-
for (const mip of mips.slice(1)) {
|
|
161
|
-
let low = 0;
|
|
162
|
-
let high = 8;
|
|
163
|
-
for (let i = 0; i < 16; i++) {
|
|
164
|
-
const scale = (low + high) / 2;
|
|
165
|
-
if (passing(mip, scale) < target)
|
|
166
|
-
low = scale;
|
|
167
|
-
else
|
|
168
|
-
high = scale;
|
|
169
|
-
}
|
|
170
|
-
for (let i = 3; i < mip.data.length; i += 4)
|
|
171
|
-
mip.data[i] = (mip.data[i] ?? 0) * high;
|
|
172
|
-
}
|
|
173
|
-
return mips;
|
|
174
|
-
}
|
|
175
|
-
/** Share of `mip`'s texels whose alpha × `scale` passes 0.5. */
|
|
176
|
-
function passing({ data }, scale) {
|
|
177
|
-
let count = 0;
|
|
178
|
-
for (let i = 3; i < data.length; i += 4)
|
|
179
|
-
if ((data[i] ?? 0) * scale >= 127.5)
|
|
180
|
-
count++;
|
|
181
|
-
return count / (data.length / 4);
|
|
182
|
-
}
|
|
183
151
|
//# sourceMappingURL=index.js.map
|
package/dist/baked/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/baked/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,WAAW,EACX,UAAU,EACV,SAAS,EACT,YAAY,EACZ,wBAAwB,EACxB,IAAI,EACJ,wBAAwB,EACxB,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,OAAO,GAIR,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/baked/index.ts"],"names":[],"mappings":"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"}
|
package/dist/baked/low.d.ts
CHANGED
|
@@ -6,8 +6,8 @@ import { type Raster } from "./raster.js";
|
|
|
6
6
|
export interface Low extends Surface {
|
|
7
7
|
uvs: Float32Array;
|
|
8
8
|
raster: Raster;
|
|
9
|
-
/** How far the low surface is from the source's, in the source's units: see `
|
|
10
|
-
|
|
9
|
+
/** How far the low surface is from the source's, in the source's units: see `measureDeviation`. */
|
|
10
|
+
deviation: number;
|
|
11
11
|
widest: number;
|
|
12
12
|
}
|
|
13
13
|
/** The source simplified to `ratio` of its triangles, welded first: seams and materials do not matter to a bake. */
|
package/dist/baked/low.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BufferAttribute, BufferGeometry, Mesh } from "three/webgpu";
|
|
2
2
|
import { mergeVertices } from "three/addons/utils/BufferGeometryUtils.js";
|
|
3
3
|
import { decimate } from "../simplify.js";
|
|
4
|
-
import {
|
|
4
|
+
import { measureDeviation } from "../source/deviation.js";
|
|
5
5
|
import { merge } from "../source/surface.js";
|
|
6
6
|
import { rasterize } from "./raster.js";
|
|
7
7
|
import { unwrap } from "./unwrap.js";
|
|
@@ -19,15 +19,15 @@ export function simplified(source, ratio) {
|
|
|
19
19
|
*/
|
|
20
20
|
export async function layOut(object, source, size) {
|
|
21
21
|
const surface = merge(object, "bakeMesh");
|
|
22
|
-
const {
|
|
22
|
+
const { deviation, widest } = measureDeviation(source, surface);
|
|
23
23
|
const { uvs, index } = surface;
|
|
24
24
|
if (surface.hasUvs && uvs.every((x) => x >= 0 && x <= 1)) {
|
|
25
25
|
const raster = rasterize(uvs, index, size);
|
|
26
26
|
if (raster.overlaps === 0 && raster.covered > 0 && separated(raster, charts(uvs, index)))
|
|
27
|
-
return { ...surface, raster,
|
|
27
|
+
return { ...surface, raster, deviation, widest };
|
|
28
28
|
}
|
|
29
29
|
const atlas = await unwrap(surface, size);
|
|
30
|
-
return { ...atlas, raster: rasterize(atlas.uvs, atlas.index, size),
|
|
30
|
+
return { ...atlas, raster: rasterize(atlas.uvs, atlas.index, size), deviation, widest };
|
|
31
31
|
}
|
|
32
32
|
/** Per triangle, its chart: triangles that share a UV point are in one. */
|
|
33
33
|
function charts(uvs, index) {
|
package/dist/baked/low.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"low.js","sourceRoot":"","sources":["../../src/baked/low.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,IAAI,EAAiB,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"low.js","sourceRoot":"","sources":["../../src/baked/low.ts"],"names":[],"mappings":"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"}
|
package/dist/bounds.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export declare function showDetail(root: Object3D): void;
|
|
|
18
18
|
* an ImpostorMesh. `visit` gets one reused vector.
|
|
19
19
|
*/
|
|
20
20
|
export declare function forEachVertex(root: Object3D, visit: (p: Vector3) => void): void;
|
|
21
|
-
/**
|
|
21
|
+
/** Conservative full-detail bounds from cached geometry boxes and deferred metadata, in the root's space. */
|
|
22
22
|
export declare function boundingBox(root: Object3D): Box3;
|
|
23
23
|
/** The centre and half diagonal of `boundingBox(root)`: an impostor baked from `root` has the same box. */
|
|
24
24
|
export declare function boundingSphere(root: Object3D): Sphere;
|
|
@@ -27,7 +27,17 @@ export declare function boundingSphere(root: Object3D): Sphere;
|
|
|
27
27
|
* first level's that draws anything when level 0 draws nothing; `own` in that level's
|
|
28
28
|
* own space, `placed` in its parent's (the Lod's). `who` names the caller in the error.
|
|
29
29
|
*/
|
|
30
|
-
export declare function measureLevels(levels: readonly
|
|
30
|
+
export declare function measureLevels(levels: readonly {
|
|
31
|
+
object?: Object3D;
|
|
32
|
+
box?: Box3;
|
|
33
|
+
}[], who: string): {
|
|
31
34
|
own: Sphere;
|
|
32
35
|
placed: Sphere;
|
|
33
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;
|