@drawcall/lod 0.3.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 +5 -8
- package/dist/bake.d.ts +16 -2
- package/dist/bake.js +92 -4
- package/dist/bake.js.map +1 -1
- package/dist/baked/index.d.ts +2 -2
- package/dist/baked/index.js +2 -2
- package/dist/baked/interior/faces.js +4 -2
- package/dist/baked/interior/faces.js.map +1 -1
- package/dist/baked/interior/material.js +1 -1
- package/dist/baked/interior/material.js.map +1 -1
- package/dist/baked/interior/rooms.d.ts +1 -1
- package/dist/baked/interior/rooms.js +1 -1
- package/dist/dispose.d.ts +3 -3
- package/dist/dispose.js +6 -6
- 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/index.d.ts +3 -3
- package/dist/impostor/bake/index.js +12 -3
- package/dist/impostor/bake/index.js.map +1 -1
- package/dist/impostor/bake/source.d.ts +2 -1
- package/dist/impostor/bake/source.js +2 -2
- package/dist/impostor/bake/source.js.map +1 -1
- package/dist/impostor/impostor.d.ts +1 -1
- package/dist/impostor/impostor.js +1 -1
- package/dist/impostor/ktx2/encode.js +5 -2
- package/dist/impostor/ktx2/encode.js.map +1 -1
- package/dist/impostor/ktx2/uastc.js +3 -2
- package/dist/impostor/ktx2/uastc.js.map +1 -1
- package/dist/impostor/ktx2/worker.js +0 -2
- package/dist/impostor/ktx2/worker.js.map +1 -1
- package/dist/impostor/mesh/card.d.ts +1 -1
- package/dist/impostor/mesh/index.d.ts +2 -2
- package/dist/impostor/mesh/index.js +3 -3
- package/dist/impostor/mesh/index.js.map +1 -1
- package/dist/index.d.ts +3 -6
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/instanced/camera.d.ts +13 -25
- package/dist/instanced/camera.js +17 -42
- package/dist/instanced/camera.js.map +1 -1
- 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 +3 -3
- package/dist/instanced/cull.js +2 -2
- package/dist/instanced/cull.js.map +1 -1
- 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 +1 -1
- package/dist/instanced/key.js +1 -1
- package/dist/instanced/key.js.map +1 -1
- package/dist/instanced/levels.d.ts +9 -9
- package/dist/instanced/levels.js +7 -6
- package/dist/instanced/levels.js.map +1 -1
- package/dist/instanced/lists.d.ts +26 -39
- package/dist/instanced/lists.js +42 -61
- package/dist/instanced/lists.js.map +1 -1
- package/dist/instanced/measure.d.ts +2 -2
- package/dist/instanced/measure.js +2 -2
- package/dist/instanced/meshes.d.ts +11 -9
- package/dist/instanced/meshes.js +26 -16
- package/dist/instanced/meshes.js.map +1 -1
- package/dist/instanced/mirror.d.ts +16 -12
- package/dist/instanced/mirror.js +51 -12
- package/dist/instanced/mirror.js.map +1 -1
- package/dist/instanced/raycast.d.ts +6 -9
- package/dist/instanced/raycast.js +15 -18
- package/dist/instanced/raycast.js.map +1 -1
- package/dist/instanced/rows.d.ts +15 -73
- package/dist/instanced/rows.js +16 -189
- package/dist/instanced/rows.js.map +1 -1
- package/dist/instanced/shape.d.ts +3 -1
- package/dist/instanced/shape.js +6 -3
- package/dist/instanced/shape.js.map +1 -1
- package/dist/instanced/sort.d.ts +32 -34
- package/dist/instanced/sort.js +162 -132
- package/dist/instanced/sort.js.map +1 -1
- package/dist/instanced/update.d.ts +16 -12
- package/dist/instanced/update.js +57 -84
- package/dist/instanced/update.js.map +1 -1
- package/dist/levels/compile/index.d.ts +4 -2
- package/dist/levels/compile/index.js +10 -2
- package/dist/levels/compile/index.js.map +1 -1
- package/dist/levels/compile/pipelines.d.ts +1 -1
- package/dist/levels/compile/pipelines.js +1 -6
- package/dist/levels/compile/pipelines.js.map +1 -1
- package/dist/levels/draw.d.ts +1 -1
- package/dist/levels/draw.js +3 -3
- package/dist/levels/fade.d.ts +13 -22
- package/dist/levels/fade.js +17 -38
- package/dist/levels/fade.js.map +1 -1
- package/dist/levels/index.d.ts +7 -7
- package/dist/levels/index.js +1 -1
- package/dist/levels/item.d.ts +10 -10
- package/dist/levels/item.js +15 -23
- package/dist/levels/item.js.map +1 -1
- package/dist/levels/load.d.ts +1 -1
- package/dist/levels/load.js +5 -3
- package/dist/levels/load.js.map +1 -1
- package/dist/levels/manager.d.ts +30 -31
- package/dist/levels/manager.js +75 -62
- package/dist/levels/manager.js.map +1 -1
- package/dist/levels/material.d.ts +2 -2
- package/dist/levels/material.js +2 -2
- package/dist/levels/renderer.d.ts +8 -5
- package/dist/levels/renderer.js +20 -4
- package/dist/levels/renderer.js.map +1 -1
- package/dist/levels/requests.d.ts +4 -1
- package/dist/levels/requests.js +3 -1
- package/dist/levels/requests.js.map +1 -1
- package/dist/loader/context.d.ts +9 -11
- package/dist/loader/context.js +12 -7
- package/dist/loader/context.js.map +1 -1
- 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 +49 -35
- package/dist/loader/index.js +123 -135
- package/dist/loader/index.js.map +1 -1
- package/dist/loader/level.js +5 -5
- package/dist/loader/level.js.map +1 -1
- 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 +11 -44
- package/dist/loader/request.js +7 -47
- package/dist/loader/request.js.map +1 -1
- package/dist/loader/url.d.ts +10 -9
- package/dist/loader/url.js +21 -17
- package/dist/loader/url.js.map +1 -1
- package/dist/lod.d.ts +122 -62
- package/dist/lod.js +331 -187
- package/dist/lod.js.map +1 -1
- package/dist/meshopt.d.ts +1 -1
- package/dist/meshopt.js +3 -2
- package/dist/meshopt.js.map +1 -1
- 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/index.d.ts +2 -2
- package/dist/simplify/index.js +7 -7
- package/dist/simplify/index.js.map +1 -1
- package/dist/source/detail.d.ts +7 -2
- package/dist/source/detail.js +24 -22
- package/dist/source/detail.js.map +1 -1
- package/dist/source/sampler.js +5 -2
- package/dist/source/sampler.js.map +1 -1
- package/dist/three.d.ts +7 -7
- package/dist/three.js +4 -4
- package/dist/three.js.map +1 -1
- package/dist/wind/bounds.js +1 -1
- package/dist/wind/bounds.js.map +1 -1
- package/dist/wind/hooks.d.ts +1 -1
- package/dist/wind/hooks.js +1 -1
- package/dist/wind/index.d.ts +3 -3
- package/dist/wind/index.js +11 -9
- package/dist/wind/index.js.map +1 -1
- package/package.json +10 -6
- package/skills/lod/SKILL.md +65 -54
- package/dist/gpu.d.ts +0 -39
- package/dist/gpu.js +0 -41
- package/dist/gpu.js.map +0 -1
- package/dist/instanced/chunk.d.ts +0 -97
- package/dist/instanced/chunk.js +0 -156
- package/dist/instanced/chunk.js.map +0 -1
- package/dist/instanced/chunks.d.ts +0 -60
- package/dist/instanced/chunks.js +0 -208
- package/dist/instanced/chunks.js.map +0 -1
- package/dist/instanced/index.d.ts +0 -120
- package/dist/instanced/index.js +0 -290
- package/dist/instanced/index.js.map +0 -1
- package/dist/instanced/pages/buffers.d.ts +0 -37
- package/dist/instanced/pages/buffers.js +0 -15
- package/dist/instanced/pages/buffers.js.map +0 -1
- package/dist/instanced/pages/chunk.d.ts +0 -51
- package/dist/instanced/pages/chunk.js +0 -81
- package/dist/instanced/pages/chunk.js.map +0 -1
- package/dist/instanced/pages/index.d.ts +0 -74
- package/dist/instanced/pages/index.js +0 -269
- package/dist/instanced/pages/index.js.map +0 -1
- package/dist/instanced/pages/passes.d.ts +0 -21
- package/dist/instanced/pages/passes.js +0 -52
- package/dist/instanced/pages/passes.js.map +0 -1
- package/dist/instanced/pages/slots.d.ts +0 -11
- package/dist/instanced/pages/slots.js +0 -90
- package/dist/instanced/pages/slots.js.map +0 -1
- package/dist/instanced/pages/workgroup.d.ts +0 -14
- package/dist/instanced/pages/workgroup.js +0 -38
- package/dist/instanced/pages/workgroup.js.map +0 -1
- package/dist/levels/wait.d.ts +0 -27
- package/dist/levels/wait.js +0 -61
- package/dist/levels/wait.js.map +0 -1
- package/dist/loader/cache.d.ts +0 -12
- package/dist/loader/cache.js +0 -68
- package/dist/loader/cache.js.map +0 -1
- package/dist/loader/dependencies.d.ts +0 -32
- package/dist/loader/dependencies.js +0 -113
- package/dist/loader/dependencies.js.map +0 -1
package/dist/levels/manager.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { nextTask } from "../task.js";
|
|
2
2
|
import { isObject3D, isScene, rootOf } from "../three.js";
|
|
3
|
+
import { compilerOf } from "./compile/index.js";
|
|
3
4
|
import { CameraRenders } from "./cameras.js";
|
|
4
5
|
import { has } from "./draw.js";
|
|
5
6
|
import { LoadingItem } from "./item.js";
|
|
6
7
|
import { CameraRequests } from "./requests.js";
|
|
7
|
-
import { ChunkWait } from "./wait.js";
|
|
8
8
|
import { ContextCompiles } from "./compiles.js";
|
|
9
|
+
import { checkRenderer } from "./renderer.js";
|
|
9
10
|
/** How long an arriving level fades in for, over what drew in its place. */
|
|
10
11
|
export const ARRIVAL_MS = 200;
|
|
11
12
|
/**
|
|
12
|
-
* Loads a Lod's
|
|
13
|
+
* Loads a Lod's levels as its cameras request them, never blocking a render. The coarsest level that
|
|
13
14
|
* draws something loads first, as nothing draws before it has (see levelsToDraw); the other levels a camera wants
|
|
14
15
|
* start loading once it has loaded. Each level's load runs once; once the render that asked for it has ended, the Lod
|
|
15
16
|
* prepares it (`prepare`), it compiles for the render context of every camera rendering the Lod and joins the loaded
|
|
@@ -19,12 +20,12 @@ export const ARRIVAL_MS = 200;
|
|
|
19
20
|
* still building, in any context that shares it, so a level a camera may draw now builds as it first draws instead.
|
|
20
21
|
* Nothing is evicted: a level stays loaded until the Lod is disposed.
|
|
21
22
|
*
|
|
22
|
-
* A Lod draws with
|
|
23
|
-
*
|
|
23
|
+
* A Lod draws with the first renderer that draws one of its meshes (see `see`), whose renders it learns its cameras
|
|
24
|
+
* from. Once one has, it holds an item on its LoadingManager while anything a camera wants is missing, compiling or
|
|
25
|
+
* arriving.
|
|
24
26
|
*/
|
|
25
27
|
export class LodLevelLoadManager {
|
|
26
28
|
lod;
|
|
27
|
-
gpu;
|
|
28
29
|
name;
|
|
29
30
|
levels;
|
|
30
31
|
prepare;
|
|
@@ -35,12 +36,10 @@ export class LodLevelLoadManager {
|
|
|
35
36
|
before = 0;
|
|
36
37
|
/** The first failure; it stops further loading. */
|
|
37
38
|
error;
|
|
38
|
-
/** Whether a
|
|
39
|
+
/** Whether a renderer has drawn the Lod: its shaders are being or have been built. */
|
|
39
40
|
started = false;
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
/** The cameras rendering the Lod, and what they asked for. */
|
|
43
|
-
requests;
|
|
41
|
+
/** Whether a camera has asked for levels since the Lod was bound: until then it is pending. */
|
|
42
|
+
requested = false;
|
|
44
43
|
/** Its item on a LoadingManager. */
|
|
45
44
|
item;
|
|
46
45
|
/**
|
|
@@ -65,9 +64,9 @@ export class LodLevelLoadManager {
|
|
|
65
64
|
disposed = false;
|
|
66
65
|
/** What `LodLevel.hold` answered, each called once the Lod is disposed. */
|
|
67
66
|
releases;
|
|
68
|
-
/**
|
|
69
|
-
|
|
70
|
-
constructor(lod,
|
|
67
|
+
/** The renderer drawing the Lod and what the cameras rendering it there asked for, once one drew it (see `see`). */
|
|
68
|
+
bound = null;
|
|
69
|
+
constructor(lod,
|
|
71
70
|
/** The LoadingManager item's name, which errors name too: the kind of Lod and its uuid. */
|
|
72
71
|
name,
|
|
73
72
|
/** The levels as the Lod was given them: it holds them (see `LodLevel.hold`) until it is disposed. */
|
|
@@ -75,29 +74,19 @@ export class LodLevelLoadManager {
|
|
|
75
74
|
/** The levels as levelsToDraw reads them, for the ones that draw nothing and the coarsest that draws something. */
|
|
76
75
|
{ empty, coarsest }, prepare,
|
|
77
76
|
/** What draws a loaded level, compiled for each render context it is wanted in. */
|
|
78
|
-
drawnBy
|
|
79
|
-
/** An InstancedLod's read of whether the GPU shows every chunk taken in (see `ChunkWait`); null for a Lod. */
|
|
80
|
-
readChunks) {
|
|
77
|
+
drawnBy) {
|
|
81
78
|
this.lod = lod;
|
|
82
|
-
this.gpu = gpu;
|
|
83
79
|
this.name = name;
|
|
84
80
|
this.levels = levels;
|
|
85
81
|
this.prepare = prepare;
|
|
86
82
|
this.drawnBy = drawnBy;
|
|
87
|
-
if (gpu.disposed)
|
|
88
|
-
throw new Error("LodGpu: disposed");
|
|
89
83
|
this.loaded = this.before = levels.reduce((bits, level, i) => (level.object ? bits | (1 << i) : bits), 0);
|
|
90
84
|
this.empty = empty;
|
|
91
85
|
this.coarsest = coarsest;
|
|
92
86
|
this.order = levels.length === 0 ? [] : [coarsest, ...[...levels.keys()].reverse().filter((level) => level !== coarsest)];
|
|
93
87
|
this.releases = [...new Set(levels.flatMap(({ hold }) => (hold ? [hold] : [])))].map((hold) => hold());
|
|
94
|
-
this.renderer = gpu.renderer;
|
|
95
|
-
this.requests = new CameraRequests(this.renderer, this.seen);
|
|
96
88
|
this.compiles = new ContextCompiles((context, bits) => this.compileLevels(context, bits), (error) => this.report(error));
|
|
97
|
-
this.item = new LoadingItem(
|
|
98
|
-
this.wait =
|
|
99
|
-
readChunks &&
|
|
100
|
-
new ChunkWait(readChunks, () => this.sync(), (error) => this.report(error));
|
|
89
|
+
this.item = new LoadingItem(name);
|
|
101
90
|
}
|
|
102
91
|
/** How far the latest arrival has faded in, in [0, 1]: 1 once it has. */
|
|
103
92
|
get progress() {
|
|
@@ -105,19 +94,46 @@ export class LodLevelLoadManager {
|
|
|
105
94
|
return 1;
|
|
106
95
|
return Math.min((performance.now() - this.arrival) / ARRIVAL_MS, 1);
|
|
107
96
|
}
|
|
97
|
+
/** The renderer drawing the Lod: the first that drew one of its meshes; null before. */
|
|
98
|
+
get renderer() {
|
|
99
|
+
return this.bound?.renderer ?? null;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* `renderer` draws one of the Lod's meshes, as three tells a mesh but not a LOD's `update`: the first binds the Lod
|
|
103
|
+
* to it, once checked to draw it; another throws.
|
|
104
|
+
*/
|
|
105
|
+
see(renderer) {
|
|
106
|
+
if (this.bound) {
|
|
107
|
+
if (renderer !== this.bound.renderer)
|
|
108
|
+
throw new Error(`${this.name}: another renderer than the first that drew it drew it`);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
checkRenderer(renderer, this.name);
|
|
112
|
+
this.bound = { renderer, requests: new CameraRequests(renderer, this.seen) };
|
|
113
|
+
this.started = true;
|
|
114
|
+
// Its first frame drew nothing of it: it holds its item until the next asks for what its cameras need.
|
|
115
|
+
this.sync();
|
|
116
|
+
}
|
|
117
|
+
/** Whether `camera` still renders the Lod (see `CameraRequests.rendering`). */
|
|
118
|
+
rendering(camera) {
|
|
119
|
+
return this.bound?.requests.rendering(camera) ?? false;
|
|
120
|
+
}
|
|
108
121
|
get pending() {
|
|
109
|
-
if (this.disposed || this.error)
|
|
122
|
+
if (this.disposed || this.error || !this.bound)
|
|
110
123
|
return false;
|
|
111
|
-
if (this.
|
|
124
|
+
if (!this.requested)
|
|
112
125
|
return true;
|
|
113
|
-
|
|
126
|
+
const { requests } = this.bound;
|
|
127
|
+
if (this.arriving.size > 0 || this.ready.size > 0 || (requests.needed() & ~this.loaded) !== 0)
|
|
128
|
+
return true;
|
|
129
|
+
return this.compiles.running(requests);
|
|
114
130
|
}
|
|
115
131
|
/**
|
|
116
|
-
* `camera`, a shadow map's when `shadow`, wants the levels of the bits `wanted` (see levelsToLoad)
|
|
117
|
-
* missing, and answer the bits of the levels loaded now. Outside a
|
|
132
|
+
* `camera`, a shadow map's when `shadow`, wants the levels of the bits `wanted` (see levelsToLoad) in an update once
|
|
133
|
+
* the Lod is bound to a renderer (see `see`): load what is missing, and answer the bits of the levels loaded now. Outside a
|
|
134
|
+
* Scene a missing level is an error, as no render of it would load it.
|
|
118
135
|
*/
|
|
119
136
|
request(camera, wanted, shadow) {
|
|
120
|
-
this.started = true;
|
|
121
137
|
const scene = rootOf(this.lod);
|
|
122
138
|
if (this.disposed || this.error)
|
|
123
139
|
return this.loaded;
|
|
@@ -127,29 +143,25 @@ export class LodLevelLoadManager {
|
|
|
127
143
|
return this.loaded;
|
|
128
144
|
}
|
|
129
145
|
this.item.touch();
|
|
130
|
-
const
|
|
131
|
-
this.
|
|
132
|
-
|
|
146
|
+
const { requests } = this.boundOrThrow();
|
|
147
|
+
this.requested = true;
|
|
148
|
+
const frame = requests.set(scene, camera, wanted, shadow);
|
|
149
|
+
this.load(requests, camera, shadow, frame);
|
|
133
150
|
this.sync();
|
|
134
151
|
return this.loaded;
|
|
135
152
|
}
|
|
136
153
|
/**
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
* InstancedLod's error.
|
|
154
|
+
* The height `camera`, a shadow map's when `shadow`, draws at with `renderer` (see CameraRenders.heightOf), which
|
|
155
|
+
* levels are chosen at.
|
|
140
156
|
*/
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
throw new Error(`LodLevelLoadManager: chunksChanged on ${this.name}, a Lod without chunks`);
|
|
144
|
-
this.wait.changed();
|
|
145
|
-
this.sync();
|
|
157
|
+
heightOf(camera, renderer, shadow) {
|
|
158
|
+
return this.seen.heightOf(camera, renderer, shadow);
|
|
146
159
|
}
|
|
147
|
-
/**
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
return this.seen.heightOf(camera, this.renderer, shadow);
|
|
160
|
+
/** The renderer drawing the Lod and its cameras' requests: known once it drew the Lod, before anything loads. */
|
|
161
|
+
boundOrThrow() {
|
|
162
|
+
if (!this.bound)
|
|
163
|
+
throw new Error(`${this.name}: no renderer has updated it`);
|
|
164
|
+
return this.bound;
|
|
153
165
|
}
|
|
154
166
|
/** What compiles for `cameras` are for: the shadow maps they drew, and the targets disposed. */
|
|
155
167
|
compileFor(cameras) {
|
|
@@ -160,8 +172,8 @@ export class LodLevelLoadManager {
|
|
|
160
172
|
* level that draws something, none of them wants and is not yet compiled for it, and prepare the levels that have
|
|
161
173
|
* loaded. `shadow` is whether a shadow map renders it, in the renderer's `frame`.
|
|
162
174
|
*/
|
|
163
|
-
load(camera, shadow, frame) {
|
|
164
|
-
const needed =
|
|
175
|
+
load(requests, camera, shadow, frame) {
|
|
176
|
+
const needed = requests.needed();
|
|
165
177
|
const coarsestLoaded = !this.levelAt(this.coarsest).load || this.loads.get(this.coarsest)?.object !== undefined;
|
|
166
178
|
for (const level of this.order) {
|
|
167
179
|
const { load } = this.levelAt(level);
|
|
@@ -169,10 +181,10 @@ export class LodLevelLoadManager {
|
|
|
169
181
|
continue;
|
|
170
182
|
this.start(level, load);
|
|
171
183
|
}
|
|
172
|
-
// What draws never changes halfway through a frame: once a camera updated the Lod in it,
|
|
173
|
-
//
|
|
184
|
+
// What draws never changes halfway through a frame: once a camera updated the Lod in it, its indirect draws among
|
|
185
|
+
// them, a shadow map rendered later joins nothing. The camera's next update does; a Lod only shadow
|
|
174
186
|
// maps update joins in theirs.
|
|
175
|
-
if (!shadow ||
|
|
187
|
+
if (!shadow || requests.cameraFrame !== frame)
|
|
176
188
|
this.join();
|
|
177
189
|
const context = this.seen.contextOf(camera);
|
|
178
190
|
if (!context)
|
|
@@ -216,8 +228,9 @@ export class LodLevelLoadManager {
|
|
|
216
228
|
if (this.disposed || !this.seen.holds(context))
|
|
217
229
|
return;
|
|
218
230
|
const objects = this.order.filter((level) => has(bits, level)).flatMap((level) => this.drawnBy(level));
|
|
219
|
-
const
|
|
220
|
-
|
|
231
|
+
const { renderer, requests } = this.boundOrThrow();
|
|
232
|
+
const compileFor = this.compileFor(requests.cameras());
|
|
233
|
+
await Promise.all(objects.map((object) => compilerOf(renderer).compileAsync(object, context, compileFor)));
|
|
221
234
|
}
|
|
222
235
|
/**
|
|
223
236
|
* Prepare `level` once the render that asked for it has ended, if a camera still wants it then, and compile it for
|
|
@@ -229,9 +242,10 @@ export class LodLevelLoadManager {
|
|
|
229
242
|
const done = nextTask()
|
|
230
243
|
.then(async () => {
|
|
231
244
|
const object = this.loads.get(level)?.object;
|
|
232
|
-
|
|
245
|
+
const { renderer, requests } = this.boundOrThrow();
|
|
246
|
+
if (this.disposed || !object || !has(requests.needed(), level))
|
|
233
247
|
return;
|
|
234
|
-
const cameras =
|
|
248
|
+
const cameras = requests.cameras();
|
|
235
249
|
// Contexts whose targets were disposed meanwhile are dropped. A camera that starts rendering the Lod while it
|
|
236
250
|
// arrives draws it with pipelines built in that frame.
|
|
237
251
|
const seen = [context, ...cameras.flatMap((camera) => this.seen.contextOf(camera) ?? [])];
|
|
@@ -241,7 +255,7 @@ export class LodLevelLoadManager {
|
|
|
241
255
|
const prepared = this.prepare(level, object);
|
|
242
256
|
try {
|
|
243
257
|
const compileFor = this.compileFor(cameras);
|
|
244
|
-
await Promise.all([...contexts].map((other) =>
|
|
258
|
+
await Promise.all([...contexts].map((other) => compilerOf(renderer).compileAsync(prepared.object, other, compileFor)));
|
|
245
259
|
}
|
|
246
260
|
catch (error) {
|
|
247
261
|
prepared.discard();
|
|
@@ -275,12 +289,11 @@ export class LodLevelLoadManager {
|
|
|
275
289
|
});
|
|
276
290
|
}
|
|
277
291
|
/**
|
|
278
|
-
* Hold the item while levels a camera wants are missing, compiling or arriving,
|
|
279
|
-
* and end it once they are done, so a host waiting for its LoadingManager renders its cameras complete. Called at
|
|
292
|
+
* Hold the item while levels a camera wants are missing, compiling or arriving, and end it once they are done, so a host waiting for its LoadingManager renders its cameras complete. Called at
|
|
280
293
|
* the end of each request.
|
|
281
294
|
*/
|
|
282
295
|
sync() {
|
|
283
|
-
this.item.sync(!this.disposed && !this.error && (this.pending ||
|
|
296
|
+
this.item.sync(this.renderer, !this.disposed && !this.error && (this.pending || this.progress < 1));
|
|
284
297
|
}
|
|
285
298
|
/**
|
|
286
299
|
* The one failure rule, for a level that fails and for anything that throws while three renders, where a throw would
|
|
@@ -311,7 +324,7 @@ export class LodLevelLoadManager {
|
|
|
311
324
|
*/
|
|
312
325
|
dispose(release) {
|
|
313
326
|
this.disposed = true;
|
|
314
|
-
this.item.sync(false);
|
|
327
|
+
this.item.sync(this.renderer, false);
|
|
315
328
|
this.seen.dispose();
|
|
316
329
|
for (const prepared of this.ready.values())
|
|
317
330
|
prepared.discard();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/levels/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/levels/manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAmB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,GAAG,EAAmB,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC;AAyB9B;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,mBAAmB;IAwCX;IAEA;IAEA;IAGA;IAEA;IAhDnB,2GAA2G;IAC3G,MAAM,GAAG,CAAC,CAAC;IACX,kEAAkE;IAClE,MAAM,GAAG,CAAC,CAAC;IACX,mDAAmD;IACnD,KAAK,CAAoB;IACzB,sFAAsF;IACtF,OAAO,GAAG,KAAK,CAAC;IAChB,+FAA+F;IACvF,SAAS,GAAG,KAAK,CAAC;IAC1B,oCAAoC;IAC3B,IAAI,CAAc;IAE3B;;;OAGG;IACc,KAAK,CAAS;IACd,QAAQ,CAAS;IACjB,KAAK,CAAW;IACjC,qCAAqC;IAC7B,OAAO,CAAqB;IACpC,gEAAgE;IAC/C,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC1D,kEAAkE;IACjD,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC7D,oEAAoE;IACnD,QAAQ,CAAkB;IAC3C,wCAAwC;IACvB,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACpD,0DAA0D;IACzC,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,QAAQ,GAAG,KAAK,CAAC;IACzB,2EAA2E;IAC1D,QAAQ,CAAiB;IAC1C,oHAAoH;IAC5G,KAAK,GAA8E,IAAI,CAAC;IAEhG,YACmB,GAA0B;IAC3C,2FAA2F;IAC1E,IAAY;IAC7B,sGAAsG;IACrF,MAA2B;IAC5C,mHAAmH;IACnH,EAAE,KAAK,EAAE,QAAQ,EAA8B,EAC9B,OAA2D;IAC5E,mFAAmF;IAClE,OAA+C;QAT/C,QAAG,GAAH,GAAG,CAAuB;QAE1B,SAAI,GAAJ,IAAI,CAAQ;QAEZ,WAAM,GAAN,MAAM,CAAqB;QAG3B,YAAO,GAAP,OAAO,CAAoD;QAE3D,YAAO,GAAP,OAAO,CAAwC;QAEhE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC;QAC1H,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CACjC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EACpD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAC9B,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,yEAAyE;IACzE,IAAI,QAAQ;QACV,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,wFAAwF;IACxF,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,QAAkB;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,wDAAwD,CAAC,CAAC;YAC5H,OAAO;QACT,CAAC;QACD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,uGAAuG;QACvG,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,SAAS,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IACzD,CAAC;IAED,IAAI,OAAO;QACT,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3G,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,MAAc,EAAE,MAAc,EAAE,MAAe;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,4DAA4D,CAAC,CAAC;YAC7H,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,MAAc,EAAE,QAAkB,EAAE,MAAe;QAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,iHAAiH;IACzG,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,8BAA8B,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,gGAAgG;IACxF,UAAU,CAAC,OAAiB;QAClC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IACzG,CAAC;IAED;;;;OAIG;IACK,IAAI,CAAC,QAAwB,EAAE,MAAc,EAAE,MAAe,EAAE,KAAoB;QAC1F,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC;QAChH,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,cAAc,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACpH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,kHAAkH;QAClH,oGAAoG;QACpG,+BAA+B;QAC/B,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,WAAW,KAAK,KAAK;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAClG,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC1H,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,+DAA+D;IACvD,KAAK,CAAC,KAAa,EAAE,IAA6B;QACxD,MAAM,KAAK,GAAY;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;iBACvB,IAAI,CAAC,IAAI,CAAC;iBACV,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,WAAW,KAAK,iCAAiC,CAAC,CAAC;gBACxG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBACtB,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,KAAK,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,WAAW,KAAK,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1H,MAAM,KAAK,CAAC,KAAK,CAAC;YACpB,CAAC,CAAC;SACL,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7B,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,OAAO,CAAC,KAAa;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,cAAc,KAAK,EAAE,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qGAAqG;IAC7F,KAAK,CAAC,aAAa,CAAC,OAAsB,EAAE,IAAY;QAC9D,+FAA+F;QAC/F,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,OAAO;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACvG,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,KAAa,EAAE,OAAsB;QAClD,qEAAqE;QACrE,MAAM,IAAI,GAAG,QAAQ,EAAE;aACpB,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAC7C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC;gBAAE,OAAO;YACvE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnC,8GAA8G;YAC9G,uDAAuD;YACvD,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1F,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzE,KAAK,MAAM,KAAK,IAAI,QAAQ;gBAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;YACzH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC7C,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,mHAAmH;IAC3G,IAAI;QACV,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;YAAE,OAAO;QACxE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACjC,cAAc,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,IAAI;QACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IACtG,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAc;QACnB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACxC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACjH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,4FAA4F;IAC5F,KAAK,CAAC,MAAkB;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAmB;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;gBAAE,KAAK,EAAE,CAAC;QAC7C,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtH,gFAAgF;YAChF,IAAI,SAAS,CAAC,MAAM;gBAAE,KAAK,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBAC/D,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YACtD,MAAM,EAAE,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Material, NodeMaterial } from "three/webgpu";
|
|
2
2
|
/**
|
|
3
|
-
* The copy of `material` (or of the material it copies) a level of a Lod
|
|
4
|
-
*
|
|
3
|
+
* The copy of `material` (or of the material it copies) a level of a Lod draws
|
|
4
|
+
* with: it keeps only the pixels of its draw (see fade.ts), tints by
|
|
5
5
|
* its level, casts nothing into shadow maps too coarse for it and, `swaying`, sways in
|
|
6
6
|
* the wind of whatever object draws it (see Wind). Made once per original and kind, and
|
|
7
7
|
* shared by every level drawing it: what differs per object is read while it renders.
|
package/dist/levels/material.js
CHANGED
|
@@ -15,8 +15,8 @@ function slot(node, type, builder) {
|
|
|
15
15
|
return node;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
|
-
* The copy of `material` (or of the material it copies) a level of a Lod
|
|
19
|
-
*
|
|
18
|
+
* The copy of `material` (or of the material it copies) a level of a Lod draws
|
|
19
|
+
* with: it keeps only the pixels of its draw (see fade.ts), tints by
|
|
20
20
|
* its level, casts nothing into shadow maps too coarse for it and, `swaying`, sways in
|
|
21
21
|
* the wind of whatever object draws it (see Wind). Made once per original and kind, and
|
|
22
22
|
* shared by every level drawing it: what differs per object is read while it renders.
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
/** A Lod or an InstancedLod: what has a LoadingManager, which items for its levels go to. */
|
|
3
|
-
export declare const hasLoadingManager: (node: Object3D) => node is Object3D & {
|
|
4
|
-
readonly manager: LoadingManager;
|
|
5
|
-
};
|
|
1
|
+
import type { Object3D, Renderer } from "three/webgpu";
|
|
6
2
|
/**
|
|
7
3
|
* How deep in renders `renderer` is: -1 outside them, 0 in a render of its own, 1 in one it draws inside another, as it
|
|
8
4
|
* draws shadow maps and post-processing. Read from r186's `_callDepth`: three keeps a draw's built shader per depth,
|
|
@@ -15,6 +11,13 @@ export declare function callDepth(renderer: Renderer): number;
|
|
|
15
11
|
* shows.
|
|
16
12
|
*/
|
|
17
13
|
export declare const busy: (renderer: Renderer) => boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Throws unless `renderer` can draw a Lod, `who`: three's WebGPU backend, whose device has indirect-first-instance, as
|
|
16
|
+
* each level's draws start at its list (see update.ts).
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkRenderer(renderer: Renderer, who: string): void;
|
|
19
|
+
/** The largest storage binding `renderer`'s device takes: r186's WebGPU backend's `device`, which three's types omit. */
|
|
20
|
+
export declare function maxStorageBinding(renderer: Renderer): number;
|
|
18
21
|
/**
|
|
19
22
|
* Whether the scene `node` is in is being drawn into a shadow map: three's shadow map render
|
|
20
23
|
* draws it with its own override material, and calls `update` on every LOD with the
|
package/dist/levels/renderer.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isScene, isShadowPass } from "../three.js";
|
|
2
2
|
// What a Lod learns of the renderer drawing it, and when. three r186 shows much of it through no public API: each
|
|
3
3
|
// read of one of its private fields below says why none serves.
|
|
4
|
-
/** A Lod or an InstancedLod: what has a LoadingManager, which items for its levels go to. */
|
|
5
|
-
export const hasLoadingManager = (node) => isLOD(node) && "manager" in node && isLoadingManager(node.manager);
|
|
6
|
-
const isLoadingManager = (value) => typeof value === "object" && value !== null && "itemStart" in value && "itemEnd" in value;
|
|
7
4
|
/**
|
|
8
5
|
* How deep in renders `renderer` is: -1 outside them, 0 in a render of its own, 1 in one it draws inside another, as it
|
|
9
6
|
* draws shadow maps and post-processing. Read from r186's `_callDepth`: three keeps a draw's built shader per depth,
|
|
@@ -21,6 +18,25 @@ export function callDepth(renderer) {
|
|
|
21
18
|
* shows.
|
|
22
19
|
*/
|
|
23
20
|
export const busy = (renderer) => callDepth(renderer) >= 0 || Reflect.get(renderer, "_compilationPromises") != null;
|
|
21
|
+
/**
|
|
22
|
+
* Throws unless `renderer` can draw a Lod, `who`: three's WebGPU backend, whose device has indirect-first-instance, as
|
|
23
|
+
* each level's draws start at its list (see update.ts).
|
|
24
|
+
*/
|
|
25
|
+
export function checkRenderer(renderer, who) {
|
|
26
|
+
if (Reflect.get(renderer.backend, "isWebGPUBackend") !== true)
|
|
27
|
+
throw new Error(`${who}: draws with WebGPU only, but its renderer runs another backend (WebGPURenderer falls back to WebGL2 where WebGPU is missing)`);
|
|
28
|
+
if (!renderer.hasFeature("indirect-first-instance"))
|
|
29
|
+
throw new Error(`${who}: needs the GPU feature indirect-first-instance, which this device lacks`);
|
|
30
|
+
}
|
|
31
|
+
/** The largest storage binding `renderer`'s device takes: r186's WebGPU backend's `device`, which three's types omit. */
|
|
32
|
+
export function maxStorageBinding(renderer) {
|
|
33
|
+
const device = Reflect.get(renderer.backend, "device");
|
|
34
|
+
const limits = typeof device === "object" && device !== null ? Reflect.get(device, "limits") : null;
|
|
35
|
+
const size = typeof limits === "object" && limits !== null ? Reflect.get(limits, "maxStorageBufferBindingSize") : null;
|
|
36
|
+
if (typeof size !== "number")
|
|
37
|
+
throw new Error("Lod: its renderer has no WebGPU device (lod mirrors three r186)");
|
|
38
|
+
return size;
|
|
39
|
+
}
|
|
24
40
|
/**
|
|
25
41
|
* Whether the scene `node` is in is being drawn into a shadow map: three's shadow map render
|
|
26
42
|
* draws it with its own override material, and calls `update` on every LOD with the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/levels/renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/levels/renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEpD,kHAAkH;AAClH,gEAAgE;AAEhE;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,QAAkB;IAC1C,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACrH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,QAAkB,EAAW,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,CAAC,IAAI,IAAI,CAAC;AAEvI;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,GAAW;IAC3D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,IAAI;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,+HAA+H,CAAC,CAAC;IACzJ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,0EAA0E,CAAC,CAAC;AACzJ,CAAC;AAED,yHAAyH;AACzH,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,MAAM,MAAM,GAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,MAAM,GAAY,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7G,MAAM,IAAI,GAAY,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACjH,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,KAAK,IAAI,KAAK,GAAoB,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM;QAAE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAAE,OAAO,IAAI,CAAC;IAC7I,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAe,EAAW,EAAE,CACvD,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,8BAA8B,CAAC,KAAK,IAAI,CAAC"}
|
|
@@ -6,6 +6,7 @@ import type { CameraRenders } from "./cameras.js";
|
|
|
6
6
|
* round holds one update by each camera that renders it once a frame, whatever their order. Shadow maps do not count.
|
|
7
7
|
*/
|
|
8
8
|
export declare class CameraRequests {
|
|
9
|
+
/** The renderer drawing the Lod. */
|
|
9
10
|
private readonly renderer;
|
|
10
11
|
/** What renders told of the cameras that drew the Lod. */
|
|
11
12
|
private readonly seen;
|
|
@@ -16,7 +17,9 @@ export declare class CameraRequests {
|
|
|
16
17
|
private round;
|
|
17
18
|
/** The cameras that updated the Lod in the round under way. */
|
|
18
19
|
private readonly inRound;
|
|
19
|
-
constructor(
|
|
20
|
+
constructor(
|
|
21
|
+
/** The renderer drawing the Lod. */
|
|
22
|
+
renderer: Renderer,
|
|
20
23
|
/** What renders told of the cameras that drew the Lod. */
|
|
21
24
|
seen: CameraRenders);
|
|
22
25
|
/**
|
package/dist/levels/requests.js
CHANGED
|
@@ -14,7 +14,9 @@ export class CameraRequests {
|
|
|
14
14
|
round = 0;
|
|
15
15
|
/** The cameras that updated the Lod in the round under way. */
|
|
16
16
|
inRound = new Set();
|
|
17
|
-
constructor(
|
|
17
|
+
constructor(
|
|
18
|
+
/** The renderer drawing the Lod. */
|
|
19
|
+
renderer,
|
|
18
20
|
/** What renders told of the cameras that drew the Lod. */
|
|
19
21
|
seen) {
|
|
20
22
|
this.renderer = renderer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../src/levels/requests.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAUlD;;;;GAIG;AACH,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../src/levels/requests.ts"],"names":[],"mappings":"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"}
|
package/dist/loader/context.d.ts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import type { Object3D } from "three/webgpu";
|
|
2
2
|
import { type DisposeOptions } from "../dispose.js";
|
|
3
|
-
import type { AssetDependencies } from "./dependencies.js";
|
|
4
3
|
/**
|
|
5
4
|
* What one ladder's loads share: the source loaded to measure or build the ladder with, handed to the first level load
|
|
6
|
-
* (the source level draws it, a build uses it, a
|
|
5
|
+
* (the source level draws it, a build uses it, a stored level disposes it; onLevel has not changed it), the levels built
|
|
7
6
|
* with the ladder, each handed to its first load, and every level object loaded. Those are freed if describing the
|
|
8
7
|
* ladder fails, else when the last Lod holding the levels is disposed (see `hold`), which spends them.
|
|
9
8
|
*/
|
|
10
9
|
export declare class LodLoadContext {
|
|
11
10
|
private readonly load;
|
|
12
11
|
private readonly onLevel;
|
|
13
|
-
/**
|
|
12
|
+
/** Called once what the ladder loaded is freed. */
|
|
13
|
+
private readonly onFree;
|
|
14
|
+
/** Level bytes built while describing the ladder, by index: a stored level is read again when it loads. */
|
|
14
15
|
private readonly built;
|
|
15
16
|
private spare;
|
|
16
17
|
/** Every level object loaded, and what freeing it frees: a simplified level draws with its source's materials. */
|
|
@@ -18,11 +19,13 @@ export declare class LodLoadContext {
|
|
|
18
19
|
/** How many Lods hold the levels, and whether the last has let go, which freed them. */
|
|
19
20
|
private holders;
|
|
20
21
|
private spent;
|
|
21
|
-
constructor(load: () => Promise<
|
|
22
|
+
constructor(load: () => Promise<Object3D>, onLevel: ((object: Object3D, index: number) => void | Promise<void>) | undefined,
|
|
23
|
+
/** Called once what the ladder loaded is freed. */
|
|
24
|
+
onFree: () => void);
|
|
22
25
|
/** The spare source, loaded once. */
|
|
23
|
-
source(): Promise<
|
|
26
|
+
source(): Promise<Object3D>;
|
|
24
27
|
/** The spare source, for the first level load to take. */
|
|
25
|
-
take():
|
|
28
|
+
take(): Object3D | undefined;
|
|
26
29
|
/** Hold the bytes of level `index`, built while describing the ladder, for its first load to take. */
|
|
27
30
|
setBuilt(index: number, bytes: Uint8Array): void;
|
|
28
31
|
/** The bytes of level `index` built while describing the ladder, once: undefined if none were, or once taken. */
|
|
@@ -39,8 +42,3 @@ export declare class LodLoadContext {
|
|
|
39
42
|
/** Free the spare source and every level object loaded with `dispose`. */
|
|
40
43
|
private free;
|
|
41
44
|
}
|
|
42
|
-
/** A loaded source and what loading it read. */
|
|
43
|
-
export interface Loaded {
|
|
44
|
-
source: Object3D;
|
|
45
|
-
dependencies: AssetDependencies;
|
|
46
|
-
}
|
package/dist/loader/context.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { disposeRejected,
|
|
1
|
+
import { disposeRejected, disposeRecursive } from "../dispose.js";
|
|
2
2
|
/**
|
|
3
3
|
* What one ladder's loads share: the source loaded to measure or build the ladder with, handed to the first level load
|
|
4
|
-
* (the source level draws it, a build uses it, a
|
|
4
|
+
* (the source level draws it, a build uses it, a stored level disposes it; onLevel has not changed it), the levels built
|
|
5
5
|
* with the ladder, each handed to its first load, and every level object loaded. Those are freed if describing the
|
|
6
6
|
* ladder fails, else when the last Lod holding the levels is disposed (see `hold`), which spends them.
|
|
7
7
|
*/
|
|
8
8
|
export class LodLoadContext {
|
|
9
9
|
load;
|
|
10
10
|
onLevel;
|
|
11
|
-
|
|
11
|
+
onFree;
|
|
12
|
+
/** Level bytes built while describing the ladder, by index: a stored level is read again when it loads. */
|
|
12
13
|
built = new Map();
|
|
13
14
|
spare;
|
|
14
15
|
/** Every level object loaded, and what freeing it frees: a simplified level draws with its source's materials. */
|
|
@@ -16,9 +17,12 @@ export class LodLoadContext {
|
|
|
16
17
|
/** How many Lods hold the levels, and whether the last has let go, which freed them. */
|
|
17
18
|
holders = 0;
|
|
18
19
|
spent = false;
|
|
19
|
-
constructor(load, onLevel
|
|
20
|
+
constructor(load, onLevel,
|
|
21
|
+
/** Called once what the ladder loaded is freed. */
|
|
22
|
+
onFree) {
|
|
20
23
|
this.load = load;
|
|
21
24
|
this.onLevel = onLevel;
|
|
25
|
+
this.onFree = onFree;
|
|
22
26
|
}
|
|
23
27
|
/** The spare source, loaded once. */
|
|
24
28
|
async source() {
|
|
@@ -64,7 +68,7 @@ export class LodLoadContext {
|
|
|
64
68
|
*/
|
|
65
69
|
hold = () => {
|
|
66
70
|
if (this.spent)
|
|
67
|
-
throw new Error("
|
|
71
|
+
throw new Error("CachedLodLoader: these levels were freed with the last Lod that held them; call loadAsync again");
|
|
68
72
|
this.holders++;
|
|
69
73
|
let held = true;
|
|
70
74
|
return () => {
|
|
@@ -74,18 +78,19 @@ export class LodLoadContext {
|
|
|
74
78
|
if (--this.holders > 0)
|
|
75
79
|
return;
|
|
76
80
|
this.spent = true;
|
|
77
|
-
this.free(
|
|
81
|
+
this.free(disposeRecursive);
|
|
78
82
|
};
|
|
79
83
|
};
|
|
80
84
|
/** Free the spare source and every level object loaded with `dispose`. */
|
|
81
85
|
free(dispose) {
|
|
82
86
|
const taken = this.take();
|
|
83
87
|
if (taken)
|
|
84
|
-
dispose(taken
|
|
88
|
+
dispose(taken, { materials: true });
|
|
85
89
|
for (const [object, options] of this.loaded)
|
|
86
90
|
dispose(object, options);
|
|
87
91
|
this.loaded.clear();
|
|
88
92
|
this.built.clear();
|
|
93
|
+
this.onFree();
|
|
89
94
|
}
|
|
90
95
|
}
|
|
91
96
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/loader/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/loader/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CacheEntry, type CacheEntryOptions } from "vitecache";
|
|
2
|
+
import { type Ladder } from "./request.js";
|
|
3
|
+
/** The entry of derived level `of` of `ladder`, or of its source's shape, keyed by the request alone. */
|
|
4
|
+
export declare function entryOf(ladder: Ladder, of: number | "shape", { basePath, root }: Pick<CacheEntryOptions, "basePath" | "root">): CacheEntry;
|