@ifc-lite/renderer 1.35.2 → 1.36.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/dist/chunk-grid.d.ts +60 -0
- package/dist/chunk-grid.d.ts.map +1 -0
- package/dist/chunk-grid.js +47 -0
- package/dist/chunk-grid.js.map +1 -0
- package/dist/contribution-cull.d.ts +75 -0
- package/dist/contribution-cull.d.ts.map +1 -0
- package/dist/contribution-cull.js +63 -0
- package/dist/contribution-cull.js.map +1 -0
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +24 -1
- package/dist/device.js.map +1 -1
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +190 -10
- package/dist/index.js.map +1 -1
- package/dist/lod-simplify.d.ts +36 -0
- package/dist/lod-simplify.d.ts.map +1 -0
- package/dist/lod-simplify.js +101 -0
- package/dist/lod-simplify.js.map +1 -0
- package/dist/pipeline.d.ts +13 -0
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +63 -2
- package/dist/pipeline.js.map +1 -1
- package/dist/quantize.d.ts +49 -0
- package/dist/quantize.d.ts.map +1 -0
- package/dist/quantize.js +137 -0
- package/dist/quantize.js.map +1 -0
- package/dist/render-stats.d.ts +85 -0
- package/dist/render-stats.d.ts.map +1 -0
- package/dist/render-stats.js +31 -0
- package/dist/render-stats.js.map +1 -0
- package/dist/residency.d.ts +52 -0
- package/dist/residency.d.ts.map +1 -0
- package/dist/residency.js +28 -0
- package/dist/residency.js.map +1 -0
- package/dist/scene.d.ts +165 -0
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +725 -34
- package/dist/scene.js.map +1 -1
- package/dist/shaders/main.wgsl.d.ts +1 -1
- package/dist/shaders/main.wgsl.d.ts.map +1 -1
- package/dist/shaders/main.wgsl.js +53 -0
- package/dist/shaders/main.wgsl.js.map +1 -1
- package/dist/types.d.ts +47 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/pipeline.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export declare class RenderPipeline {
|
|
|
10
10
|
private instancedPipeline;
|
|
11
11
|
private instancedTransparentPipeline;
|
|
12
12
|
private makeInstancedTransparentPipeline;
|
|
13
|
+
private makeQuantizedPipelineAsync;
|
|
14
|
+
private quantizedPipelines;
|
|
13
15
|
private instancedTransparentPipelineTried;
|
|
14
16
|
private selectionPipeline;
|
|
15
17
|
private transparentPipeline;
|
|
@@ -61,6 +63,17 @@ export declare class RenderPipeline {
|
|
|
61
63
|
* renderer's prebuilt template (model + baseColor are unused — vs_instanced
|
|
62
64
|
* takes the transform + colour per-occurrence from the instance buffer).
|
|
63
65
|
*/
|
|
66
|
+
/**
|
|
67
|
+
* Create-and-VALIDATE the quantized pipeline variants. Uses
|
|
68
|
+
* createRenderPipelineAsync so WebGPU's asynchronous validation completes
|
|
69
|
+
* before anything is cached — a sync createRenderPipeline can hand back a
|
|
70
|
+
* pipeline whose validation later fails on the device, and caching that
|
|
71
|
+
* would make every quantized draw error. This is the ONLY creator; the
|
|
72
|
+
* sync getter below reads the cache. Returns whether all variants exist.
|
|
73
|
+
*/
|
|
74
|
+
ensureQuantizedPipelines(): Promise<boolean>;
|
|
75
|
+
/** Cache-only reader for the quantized variants (see ensureQuantizedPipelines). */
|
|
76
|
+
getQuantizedPipelineVariant(kind: 'opaque' | 'transparent' | 'overlay'): GPURenderPipeline | null;
|
|
64
77
|
writeRawUniforms(data: Float32Array, extraFlagsX?: number): void;
|
|
65
78
|
/**
|
|
66
79
|
* Write the global lighting environment uniform buffer. Cheap (80 bytes);
|
package/dist/pipeline.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,EAIH,KAAK,mBAAmB,EAC3B,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,4BAA4B,CAAkC;IACtE,OAAO,CAAC,gCAAgC,CAA0C;IAClF,OAAO,CAAC,iCAAiC,CAAS;IAClD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,mBAAmB,CAAoB;IAC/C,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,uBAAuB,CAAqB;IACpD,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,gBAAgB,CAAiB;IAIzC,OAAO,CAAC,oBAAoB,CAAiB;IAG7C,OAAO,CAAC,kBAAkB,CAAiB;IAC3C,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,mBAAmB,CAAiB;IAI5C,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,sBAAsB,CAA+B;IAC7D,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,eAAe,CAAqB;IAI5C,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,oBAAoB,CAAe;IAC3C,OAAO,CAAC,0BAA0B,CAAqB;IACvD,OAAO,CAAC,kBAAkB,CAAkD;IAC5E,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;gBAElB,MAAM,EAAE,YAAY,EAAE,KAAK,GAAE,MAAU,EAAE,MAAM,GAAE,MAAU;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/pipeline.js
CHANGED
|
@@ -12,6 +12,8 @@ export class RenderPipeline {
|
|
|
12
12
|
instancedPipeline; // GPU-instancing: template (slot 0) + per-instance buffer (slot 1)
|
|
13
13
|
instancedTransparentPipeline = null; // instanced pipeline with alpha blend (lens/x-ray/compare overlays); lazily built, null if unbuilt/rejected
|
|
14
14
|
makeInstancedTransparentPipeline = null; // deferred factory (see constructor)
|
|
15
|
+
makeQuantizedPipelineAsync = null;
|
|
16
|
+
quantizedPipelines = {};
|
|
15
17
|
instancedTransparentPipelineTried = false; // built-or-failed once; don't retry a rejecting backend every frame
|
|
16
18
|
selectionPipeline; // Pipeline for selected meshes (renders on top)
|
|
17
19
|
transparentPipeline; // Pipeline for transparent meshes with alpha blending
|
|
@@ -93,7 +95,7 @@ export class RenderPipeline {
|
|
|
93
95
|
// clipBoxMin (16 bytes) + clipBoxMax (16 bytes) = 224 bytes
|
|
94
96
|
// WebGPU requires uniform buffers to be aligned to 16 bytes
|
|
95
97
|
this.uniformBuffer = this.device.createBuffer({
|
|
96
|
-
size:
|
|
98
|
+
size: this.getUniformBufferSize(), // keep in lockstep with the WGSL Uniforms struct
|
|
97
99
|
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
98
100
|
});
|
|
99
101
|
// Create explicit bind group layout (shared between main and selection pipelines)
|
|
@@ -383,6 +385,31 @@ export class RenderPipeline {
|
|
|
383
385
|
},
|
|
384
386
|
};
|
|
385
387
|
this.overlayPipeline = this.device.createRenderPipeline(overlayPipelineDescriptor);
|
|
388
|
+
// ── Quantized-vertex pipeline variants (issue #1682 phase 6) ──
|
|
389
|
+
// Same fragment/blend/depth state as their f32 bases, but the
|
|
390
|
+
// 12-byte lattice-quantized vertex layout + vs_main_quantized.
|
|
391
|
+
// Created LAZILY on first use for the same SwiftShader-init
|
|
392
|
+
// fragility reason as the instanced-transparent pipeline above —
|
|
393
|
+
// a knob-off load never builds them.
|
|
394
|
+
const quantizedVertex = {
|
|
395
|
+
module: shaderModule,
|
|
396
|
+
entryPoint: 'vs_main_quantized',
|
|
397
|
+
buffers: [
|
|
398
|
+
{
|
|
399
|
+
arrayStride: 12,
|
|
400
|
+
attributes: [
|
|
401
|
+
{ shaderLocation: 0, offset: 0, format: 'uint16x4' }, // qpos.xyz + packed oct
|
|
402
|
+
{ shaderLocation: 2, offset: 8, format: 'uint32' }, // entityId lane
|
|
403
|
+
],
|
|
404
|
+
},
|
|
405
|
+
],
|
|
406
|
+
};
|
|
407
|
+
this.makeQuantizedPipelineAsync = (kind) => {
|
|
408
|
+
const base = kind === 'opaque' ? pipelineDescriptor :
|
|
409
|
+
kind === 'transparent' ? transparentPipelineDescriptor :
|
|
410
|
+
overlayPipelineDescriptor;
|
|
411
|
+
return this.device.createRenderPipelineAsync({ ...base, vertex: quantizedVertex });
|
|
412
|
+
};
|
|
386
413
|
// ── Textured pipeline (#961) ──
|
|
387
414
|
// A separate pipeline for meshes carrying an IFC surface texture. It
|
|
388
415
|
// adds a UV vertex lane and an albedo texture+sampler at group(0)
|
|
@@ -512,6 +539,37 @@ export class RenderPipeline {
|
|
|
512
539
|
* renderer's prebuilt template (model + baseColor are unused — vs_instanced
|
|
513
540
|
* takes the transform + colour per-occurrence from the instance buffer).
|
|
514
541
|
*/
|
|
542
|
+
/**
|
|
543
|
+
* Create-and-VALIDATE the quantized pipeline variants. Uses
|
|
544
|
+
* createRenderPipelineAsync so WebGPU's asynchronous validation completes
|
|
545
|
+
* before anything is cached — a sync createRenderPipeline can hand back a
|
|
546
|
+
* pipeline whose validation later fails on the device, and caching that
|
|
547
|
+
* would make every quantized draw error. This is the ONLY creator; the
|
|
548
|
+
* sync getter below reads the cache. Returns whether all variants exist.
|
|
549
|
+
*/
|
|
550
|
+
async ensureQuantizedPipelines() {
|
|
551
|
+
const factory = this.makeQuantizedPipelineAsync;
|
|
552
|
+
if (!factory)
|
|
553
|
+
return false;
|
|
554
|
+
const kinds = ['opaque', 'transparent', 'overlay'];
|
|
555
|
+
try {
|
|
556
|
+
for (const kind of kinds) {
|
|
557
|
+
if (!this.quantizedPipelines[kind]) {
|
|
558
|
+
this.quantizedPipelines[kind] = await factory(kind);
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
return true;
|
|
562
|
+
}
|
|
563
|
+
catch (err) {
|
|
564
|
+
console.warn('[Pipeline] quantized pipeline validation failed; staying on f32 vertices:', err);
|
|
565
|
+
this.makeQuantizedPipelineAsync = null;
|
|
566
|
+
return false;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
/** Cache-only reader for the quantized variants (see ensureQuantizedPipelines). */
|
|
570
|
+
getQuantizedPipelineVariant(kind) {
|
|
571
|
+
return this.quantizedPipelines[kind] ?? null;
|
|
572
|
+
}
|
|
515
573
|
writeRawUniforms(data, extraFlagsX = 0) {
|
|
516
574
|
this.device.queue.writeBuffer(this.uniformBuffer, 0, data);
|
|
517
575
|
// OR extra bits into flags.x (u32 at byte 176) WITHOUT mutating the caller's
|
|
@@ -690,7 +748,10 @@ export class RenderPipeline {
|
|
|
690
748
|
return this.bindGroupLayout;
|
|
691
749
|
}
|
|
692
750
|
getUniformBufferSize() {
|
|
693
|
-
|
|
751
|
+
// 60 floats * 4 bytes: section plane + clip box + quantParams
|
|
752
|
+
// (issue #1682 phase 6). Must match the WGSL Uniforms struct and the
|
|
753
|
+
// renderer's uniformScratch length.
|
|
754
|
+
return 240;
|
|
694
755
|
}
|
|
695
756
|
destroyed = false;
|
|
696
757
|
/**
|
package/dist/pipeline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 12-byte quantized vertices (issue #1682, phase 6).
|
|
3
|
+
*
|
|
4
|
+
* Layout (stride 12, matches the pipeline's quantized vertex state):
|
|
5
|
+
* @0 uint16x4 qx, qy, qz, packedOct (WGSL reads vec4<u32>)
|
|
6
|
+
* @8 uint32 entityId (same lane semantics as the 28B path)
|
|
7
|
+
*
|
|
8
|
+
* Positions quantize onto a GLOBAL LATTICE with step 2^-10 m (~0.98 mm),
|
|
9
|
+
* each batch storing a lattice-ALIGNED `quantMin` (a multiple of the step in
|
|
10
|
+
* the shared batch-origin-relative frame). This is what preserves the
|
|
11
|
+
* renderer's coincidence guarantee (see mergeGeometry's shared-origin note):
|
|
12
|
+
* a world point shared by two batches quantizes to the same lattice node in
|
|
13
|
+
* both, and the shader's `quantMin + q * step` is BIT-EXACT in f32 —
|
|
14
|
+
* every term is (integer)·2^-10 with the integer < 2^24 — so coincident
|
|
15
|
+
* surfaces stay coincident and no seam z-fighting is introduced.
|
|
16
|
+
*
|
|
17
|
+
* Normals use octahedral encoding (2×u8 packed into the 4th u16): ~1.4°
|
|
18
|
+
* worst-case error, invisible for BIM flat shading. The per-vertex entityId
|
|
19
|
+
* lane (picking id + colour salt) is carried unchanged.
|
|
20
|
+
*
|
|
21
|
+
* A batch whose extent exceeds `MAX_QUANT_EXTENT` (u16 range × step ≈ 64 m)
|
|
22
|
+
* cannot quantize and stays on the 28-byte f32 path — the caller checks
|
|
23
|
+
* `quantizeInterleaved`'s null return.
|
|
24
|
+
*/
|
|
25
|
+
/** Lattice step: 2^-10 m. Power of two => exact f32 dequantization. */
|
|
26
|
+
export declare const QUANT_STEP: number;
|
|
27
|
+
/** Max quantizable extent per axis (u16 range × step). */
|
|
28
|
+
export declare const MAX_QUANT_EXTENT: number;
|
|
29
|
+
export declare const QUANT_BYTES_PER_VERTEX = 12;
|
|
30
|
+
export interface QuantizedVertexData {
|
|
31
|
+
/** Interleaved 12-byte records (uint16x4 + uint32). */
|
|
32
|
+
vertexData: ArrayBuffer;
|
|
33
|
+
/** Lattice-aligned quantization origin (batch-origin-relative frame). */
|
|
34
|
+
quantMin: [number, number, number];
|
|
35
|
+
/** Lattice step (constant, exported for the uniform write). */
|
|
36
|
+
step: number;
|
|
37
|
+
}
|
|
38
|
+
/** Octahedral-encode a unit normal into two bytes (0..255 each). */
|
|
39
|
+
export declare function octEncode(nx: number, ny: number, nz: number): [number, number];
|
|
40
|
+
/** Decode (for tests/CPU parity with the WGSL decode). */
|
|
41
|
+
export declare function octDecode(bx: number, by: number): [number, number, number];
|
|
42
|
+
/**
|
|
43
|
+
* Quantize a 28-byte interleaved batch vertex buffer (pos f32x3 + normal
|
|
44
|
+
* f32x3 + entityId u32, `strideFloats` = 7) into the 12-byte layout.
|
|
45
|
+
* Returns null when any axis extent exceeds the u16 lattice range — the
|
|
46
|
+
* caller keeps the f32 buffer then.
|
|
47
|
+
*/
|
|
48
|
+
export declare function quantizeInterleaved(vertexData: Float32Array, strideFloats: number): QuantizedVertexData | null;
|
|
49
|
+
//# sourceMappingURL=quantize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quantize.d.ts","sourceRoot":"","sources":["../src/quantize.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,uEAAuE;AACvE,eAAO,MAAM,UAAU,QAAW,CAAC;AAEnC,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,QAAqB,CAAC;AAEnD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,UAAU,EAAE,WAAW,CAAC;IACxB,yEAAyE;IACzE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkB9E;AAED,0DAA0D;AAC1D,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAY1E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,YAAY,EACxB,YAAY,EAAE,MAAM,GACnB,mBAAmB,GAAG,IAAI,CAuD5B"}
|
package/dist/quantize.js
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* 12-byte quantized vertices (issue #1682, phase 6).
|
|
6
|
+
*
|
|
7
|
+
* Layout (stride 12, matches the pipeline's quantized vertex state):
|
|
8
|
+
* @0 uint16x4 qx, qy, qz, packedOct (WGSL reads vec4<u32>)
|
|
9
|
+
* @8 uint32 entityId (same lane semantics as the 28B path)
|
|
10
|
+
*
|
|
11
|
+
* Positions quantize onto a GLOBAL LATTICE with step 2^-10 m (~0.98 mm),
|
|
12
|
+
* each batch storing a lattice-ALIGNED `quantMin` (a multiple of the step in
|
|
13
|
+
* the shared batch-origin-relative frame). This is what preserves the
|
|
14
|
+
* renderer's coincidence guarantee (see mergeGeometry's shared-origin note):
|
|
15
|
+
* a world point shared by two batches quantizes to the same lattice node in
|
|
16
|
+
* both, and the shader's `quantMin + q * step` is BIT-EXACT in f32 —
|
|
17
|
+
* every term is (integer)·2^-10 with the integer < 2^24 — so coincident
|
|
18
|
+
* surfaces stay coincident and no seam z-fighting is introduced.
|
|
19
|
+
*
|
|
20
|
+
* Normals use octahedral encoding (2×u8 packed into the 4th u16): ~1.4°
|
|
21
|
+
* worst-case error, invisible for BIM flat shading. The per-vertex entityId
|
|
22
|
+
* lane (picking id + colour salt) is carried unchanged.
|
|
23
|
+
*
|
|
24
|
+
* A batch whose extent exceeds `MAX_QUANT_EXTENT` (u16 range × step ≈ 64 m)
|
|
25
|
+
* cannot quantize and stays on the 28-byte f32 path — the caller checks
|
|
26
|
+
* `quantizeInterleaved`'s null return.
|
|
27
|
+
*/
|
|
28
|
+
/** Lattice step: 2^-10 m. Power of two => exact f32 dequantization. */
|
|
29
|
+
export const QUANT_STEP = 1 / 1024;
|
|
30
|
+
/** Max quantizable extent per axis (u16 range × step). */
|
|
31
|
+
export const MAX_QUANT_EXTENT = 65535 * QUANT_STEP;
|
|
32
|
+
export const QUANT_BYTES_PER_VERTEX = 12;
|
|
33
|
+
/** Octahedral-encode a unit normal into two bytes (0..255 each). */
|
|
34
|
+
export function octEncode(nx, ny, nz) {
|
|
35
|
+
const l1 = Math.abs(nx) + Math.abs(ny) + Math.abs(nz);
|
|
36
|
+
let ox, oy;
|
|
37
|
+
if (l1 < 1e-12) {
|
|
38
|
+
ox = 0;
|
|
39
|
+
oy = 0;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
ox = nx / l1;
|
|
43
|
+
oy = ny / l1;
|
|
44
|
+
if (nz < 0) {
|
|
45
|
+
const tx = (1 - Math.abs(oy)) * (ox >= 0 ? 1 : -1);
|
|
46
|
+
const ty = (1 - Math.abs(ox)) * (oy >= 0 ? 1 : -1);
|
|
47
|
+
ox = tx;
|
|
48
|
+
oy = ty;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// [-1,1] -> [0,255]
|
|
52
|
+
const bx = Math.max(0, Math.min(255, Math.round((ox * 0.5 + 0.5) * 255)));
|
|
53
|
+
const by = Math.max(0, Math.min(255, Math.round((oy * 0.5 + 0.5) * 255)));
|
|
54
|
+
return [bx, by];
|
|
55
|
+
}
|
|
56
|
+
/** Decode (for tests/CPU parity with the WGSL decode). */
|
|
57
|
+
export function octDecode(bx, by) {
|
|
58
|
+
const ox = (bx / 255) * 2 - 1;
|
|
59
|
+
const oy = (by / 255) * 2 - 1;
|
|
60
|
+
let nx = ox, ny = oy;
|
|
61
|
+
const nz = 1 - Math.abs(ox) - Math.abs(oy);
|
|
62
|
+
if (nz < 0) {
|
|
63
|
+
const tx = (1 - Math.abs(oy)) * (nx >= 0 ? 1 : -1);
|
|
64
|
+
const ty = (1 - Math.abs(ox)) * (ny >= 0 ? 1 : -1);
|
|
65
|
+
nx = tx;
|
|
66
|
+
ny = ty;
|
|
67
|
+
}
|
|
68
|
+
const len = Math.hypot(nx, ny, nz) || 1;
|
|
69
|
+
return [nx / len, ny / len, nz / len];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Quantize a 28-byte interleaved batch vertex buffer (pos f32x3 + normal
|
|
73
|
+
* f32x3 + entityId u32, `strideFloats` = 7) into the 12-byte layout.
|
|
74
|
+
* Returns null when any axis extent exceeds the u16 lattice range — the
|
|
75
|
+
* caller keeps the f32 buffer then.
|
|
76
|
+
*/
|
|
77
|
+
export function quantizeInterleaved(vertexData, strideFloats) {
|
|
78
|
+
const vertexCount = (vertexData.length / strideFloats) | 0;
|
|
79
|
+
if (vertexCount === 0) {
|
|
80
|
+
return { vertexData: new ArrayBuffer(0), quantMin: [0, 0, 0], step: QUANT_STEP };
|
|
81
|
+
}
|
|
82
|
+
// Pass 1: bounds.
|
|
83
|
+
let minX = Infinity, minY = Infinity, minZ = Infinity;
|
|
84
|
+
let maxX = -Infinity, maxY = -Infinity, maxZ = -Infinity;
|
|
85
|
+
for (let v = 0; v < vertexCount; v++) {
|
|
86
|
+
const b = v * strideFloats;
|
|
87
|
+
const x = vertexData[b], y = vertexData[b + 1], z = vertexData[b + 2];
|
|
88
|
+
// A single non-finite vertex disqualifies the batch: NaN would otherwise
|
|
89
|
+
// slip past the min/max comparisons and quantize to the batch corner (a
|
|
90
|
+
// spike). Falling back to f32 preserves the current NaN behaviour.
|
|
91
|
+
if (!Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(z))
|
|
92
|
+
return null;
|
|
93
|
+
if (x < minX)
|
|
94
|
+
minX = x;
|
|
95
|
+
if (x > maxX)
|
|
96
|
+
maxX = x;
|
|
97
|
+
if (y < minY)
|
|
98
|
+
minY = y;
|
|
99
|
+
if (y > maxY)
|
|
100
|
+
maxY = y;
|
|
101
|
+
if (z < minZ)
|
|
102
|
+
minZ = z;
|
|
103
|
+
if (z > maxZ)
|
|
104
|
+
maxZ = z;
|
|
105
|
+
}
|
|
106
|
+
// Lattice-align the origin DOWNWARD so every q stays >= 0.
|
|
107
|
+
const qminX = Math.floor(minX / QUANT_STEP) * QUANT_STEP;
|
|
108
|
+
const qminY = Math.floor(minY / QUANT_STEP) * QUANT_STEP;
|
|
109
|
+
const qminZ = Math.floor(minZ / QUANT_STEP) * QUANT_STEP;
|
|
110
|
+
if ((maxX - qminX) > MAX_QUANT_EXTENT ||
|
|
111
|
+
(maxY - qminY) > MAX_QUANT_EXTENT ||
|
|
112
|
+
(maxZ - qminZ) > MAX_QUANT_EXTENT) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
// Pass 2: encode.
|
|
116
|
+
const out = new ArrayBuffer(vertexCount * QUANT_BYTES_PER_VERTEX);
|
|
117
|
+
const u16 = new Uint16Array(out);
|
|
118
|
+
const u32 = new Uint32Array(out);
|
|
119
|
+
const srcIds = new Uint32Array(vertexData.buffer, vertexData.byteOffset, vertexData.length);
|
|
120
|
+
for (let v = 0; v < vertexCount; v++) {
|
|
121
|
+
const b = v * strideFloats;
|
|
122
|
+
// Round to the nearest lattice node. Coincident inputs across batches
|
|
123
|
+
// produce identical q relative to their (lattice-aligned) quantMin.
|
|
124
|
+
const qx = Math.round((vertexData[b] - qminX) / QUANT_STEP);
|
|
125
|
+
const qy = Math.round((vertexData[b + 1] - qminY) / QUANT_STEP);
|
|
126
|
+
const qz = Math.round((vertexData[b + 2] - qminZ) / QUANT_STEP);
|
|
127
|
+
const [ox, oy] = octEncode(vertexData[b + 3], vertexData[b + 4], vertexData[b + 5]);
|
|
128
|
+
const w16 = v * 6; // 6 u16 per 12-byte record
|
|
129
|
+
u16[w16] = Math.min(65535, Math.max(0, qx));
|
|
130
|
+
u16[w16 + 1] = Math.min(65535, Math.max(0, qy));
|
|
131
|
+
u16[w16 + 2] = Math.min(65535, Math.max(0, qz));
|
|
132
|
+
u16[w16 + 3] = (ox << 8) | oy;
|
|
133
|
+
u32[v * 3 + 2] = srcIds[b + 6]; // entityId lane, verbatim
|
|
134
|
+
}
|
|
135
|
+
return { vertexData: out, quantMin: [qminX, qminY, qminZ], step: QUANT_STEP };
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=quantize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quantize.js","sourceRoot":"","sources":["../src/quantize.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,uEAAuE;AACvE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC;AAEnC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,GAAG,UAAU,CAAC;AAEnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAWzC,oEAAoE;AACpE,MAAM,UAAU,SAAS,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU;IAC1D,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtD,IAAI,EAAU,EAAE,EAAU,CAAC;IAC3B,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QACf,EAAE,GAAG,CAAC,CAAC;QAAC,EAAE,GAAG,CAAC,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACb,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACX,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,EAAE,GAAG,EAAE,CAAC;YAAC,EAAE,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IACD,oBAAoB;IACpB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,SAAS,CAAC,EAAU,EAAE,EAAU;IAC9C,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3C,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,EAAE,GAAG,EAAE,CAAC;QAAC,EAAE,GAAG,EAAE,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAwB,EACxB,YAAoB;IAEpB,MAAM,WAAW,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3D,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,UAAU,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACnF,CAAC;IAED,kBAAkB;IAClB,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAC;IACtD,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;QAC3B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,mEAAmE;QACnE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACnF,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,2DAA2D;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC;IACzD,IACE,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,gBAAgB;QACjC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,gBAAgB;QACjC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,gBAAgB,EACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;IAClB,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,WAAW,GAAG,sBAAsB,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;QAC3B,sEAAsE;QACtE,oEAAoE;QACpE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC;QAC5D,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC;QAChE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC;QAChE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,2BAA2B;QAC9C,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QAC9B,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,0BAA0B;IAC5D,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAChF,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frame + memory statistics for the renderer (issue #1682 observability).
|
|
3
|
+
*
|
|
4
|
+
* `FrameStats` is a snapshot of the last completed `Renderer.render()`;
|
|
5
|
+
* `sumResidentGpuBytes` walks the scene's GPU-resident collections and sums
|
|
6
|
+
* actual `GPUBuffer.size` values (allocation-accurate: it reflects what was
|
|
7
|
+
* requested from the device, including any internal padding the buffers were
|
|
8
|
+
* created with). Textures are estimated from their dimensions at 4 B/texel.
|
|
9
|
+
*/
|
|
10
|
+
/** Statistics for one rendered frame (the main render pass only). */
|
|
11
|
+
export interface FrameStats {
|
|
12
|
+
/**
|
|
13
|
+
* Geometry draw calls issued by the last main render pass: colour batches,
|
|
14
|
+
* partial/overlay sub-batches, instanced templates, textured meshes,
|
|
15
|
+
* transparent + selected meshes. Excludes the sky pass, section-plane
|
|
16
|
+
* overlays and the on-demand pick pass.
|
|
17
|
+
*/
|
|
18
|
+
drawCalls: number;
|
|
19
|
+
/** Colour batches that passed all per-frame gates and were drawn. */
|
|
20
|
+
batchesDrawn: number;
|
|
21
|
+
/** Colour batches rejected by the frustum test this frame. */
|
|
22
|
+
batchesFrustumCulled: number;
|
|
23
|
+
/** Colour batches rejected by contribution (projected-size) culling. */
|
|
24
|
+
batchesContributionCulled: number;
|
|
25
|
+
/**
|
|
26
|
+
* Visible batches skipped because their GPU buffers were evicted under the
|
|
27
|
+
* residency budget; a rebuild was requested and they draw again within a
|
|
28
|
+
* frame or two (issue #1682 phase 3a).
|
|
29
|
+
*/
|
|
30
|
+
batchesNotResident: number;
|
|
31
|
+
/** Batches drawn at their simplified LOD1 index range this frame. */
|
|
32
|
+
batchesAtLod1: number;
|
|
33
|
+
/** `performance.now()` timestamp taken at the end of the render call. */
|
|
34
|
+
timestamp: number;
|
|
35
|
+
}
|
|
36
|
+
/** Minimal structural slice of a GPU buffer (real `GPUBuffer` satisfies it). */
|
|
37
|
+
interface SizedBuffer {
|
|
38
|
+
size: number;
|
|
39
|
+
}
|
|
40
|
+
interface BatchLike {
|
|
41
|
+
vertexBuffer: SizedBuffer;
|
|
42
|
+
indexBuffer: SizedBuffer;
|
|
43
|
+
uniformBuffer?: SizedBuffer;
|
|
44
|
+
/** LOD1 second index range (issue #1682 phase 5), when built. */
|
|
45
|
+
lod1IndexBuffer?: SizedBuffer;
|
|
46
|
+
}
|
|
47
|
+
interface TexturedLike extends BatchLike {
|
|
48
|
+
texture: {
|
|
49
|
+
width: number;
|
|
50
|
+
height: number;
|
|
51
|
+
depthOrArrayLayers: number;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
interface InstancedLike {
|
|
55
|
+
vertexBuffer: SizedBuffer;
|
|
56
|
+
indexBuffer: SizedBuffer;
|
|
57
|
+
instanceBuffer: SizedBuffer;
|
|
58
|
+
}
|
|
59
|
+
/** Byte totals per GPU-resident collection. All values in bytes. */
|
|
60
|
+
export interface ResidentGpuBytes {
|
|
61
|
+
/** Colour batches (incl. streaming fragments) + cached partial sub-batches. */
|
|
62
|
+
batches: number;
|
|
63
|
+
/** Individually hydrated meshes (selection/picking/fallback paths). */
|
|
64
|
+
meshes: number;
|
|
65
|
+
/** Textured meshes, including an estimated 4 B/texel for the texture. */
|
|
66
|
+
textured: number;
|
|
67
|
+
/** Instanced templates: template geometry + per-occurrence instance buffers. */
|
|
68
|
+
instanced: number;
|
|
69
|
+
total: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Sum the GPU bytes held by the scene's mesh collections.
|
|
73
|
+
*
|
|
74
|
+
* Not covered (owned outside the scene's mesh tables): point-cloud buffers,
|
|
75
|
+
* pick/post-process render targets, and the depth/MSAA attachments.
|
|
76
|
+
*/
|
|
77
|
+
export declare function sumResidentGpuBytes(input: {
|
|
78
|
+
batches: Iterable<BatchLike>;
|
|
79
|
+
partialBatches: Iterable<BatchLike>;
|
|
80
|
+
meshes: Iterable<BatchLike>;
|
|
81
|
+
textured: Iterable<TexturedLike>;
|
|
82
|
+
instanced: Iterable<InstancedLike>;
|
|
83
|
+
}): ResidentGpuBytes;
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=render-stats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-stats.d.ts","sourceRoot":"","sources":["../src/render-stats.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wEAAwE;IACxE,yBAAyB,EAAE,MAAM,CAAC;IAClC;;;;OAIG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gFAAgF;AAChF,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,SAAS;IACjB,YAAY,EAAE,WAAW,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,iEAAiE;IACjE,eAAe,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,UAAU,YAAa,SAAQ,SAAS;IACtC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE;AAED,UAAU,aAAa;IACrB,YAAY,EAAE,WAAW,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,WAAW,CAAC;CAC7B;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAKD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7B,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjC,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;CACpC,GAAG,gBAAgB,CAoBnB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
const sumBatch = (b) => b.vertexBuffer.size + b.indexBuffer.size + (b.uniformBuffer?.size ?? 0) + (b.lod1IndexBuffer?.size ?? 0);
|
|
5
|
+
/**
|
|
6
|
+
* Sum the GPU bytes held by the scene's mesh collections.
|
|
7
|
+
*
|
|
8
|
+
* Not covered (owned outside the scene's mesh tables): point-cloud buffers,
|
|
9
|
+
* pick/post-process render targets, and the depth/MSAA attachments.
|
|
10
|
+
*/
|
|
11
|
+
export function sumResidentGpuBytes(input) {
|
|
12
|
+
let batches = 0;
|
|
13
|
+
for (const b of input.batches)
|
|
14
|
+
batches += sumBatch(b);
|
|
15
|
+
for (const b of input.partialBatches)
|
|
16
|
+
batches += sumBatch(b);
|
|
17
|
+
let meshes = 0;
|
|
18
|
+
for (const m of input.meshes)
|
|
19
|
+
meshes += sumBatch(m);
|
|
20
|
+
let textured = 0;
|
|
21
|
+
for (const t of input.textured) {
|
|
22
|
+
textured += sumBatch(t);
|
|
23
|
+
textured += t.texture.width * t.texture.height * t.texture.depthOrArrayLayers * 4;
|
|
24
|
+
}
|
|
25
|
+
let instanced = 0;
|
|
26
|
+
for (const t of input.instanced) {
|
|
27
|
+
instanced += t.vertexBuffer.size + t.indexBuffer.size + t.instanceBuffer.size;
|
|
28
|
+
}
|
|
29
|
+
return { batches, meshes, textured, instanced, total: batches + meshes + textured + instanced };
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=render-stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-stats.js","sourceRoot":"","sources":["../src/render-stats.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA2E/D,MAAM,QAAQ,GAAG,CAAC,CAAY,EAAU,EAAE,CACxC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;AAE3G;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAMnC;IACC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc;QAAE,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE7D,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEpD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,SAAS,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;IAChF,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC;AAClG,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GPU residency policy (issue #1682, phase 3a of the chunked-residency plan).
|
|
3
|
+
*
|
|
4
|
+
* With spatial chunk bucketing (phase 2) a batch is a spatially compact,
|
|
5
|
+
* independently destroyable GPU unit. This module decides WHICH resident
|
|
6
|
+
* batches to evict when the scene exceeds a GPU byte budget. Eviction
|
|
7
|
+
* destroys the batch's GPU buffers but keeps the batch object as a metadata
|
|
8
|
+
* shell (bounds/expressIds/counts) and keeps the bucket's CPU `meshData`, so
|
|
9
|
+
* the batch can be rebuilt on demand when the camera wants it again.
|
|
10
|
+
*
|
|
11
|
+
* Policy (two rules, mirroring the eviction hysteresis in Cesium-class
|
|
12
|
+
* streamers):
|
|
13
|
+
* 1. Never evict a batch drawn this frame — the budget is a target, not a
|
|
14
|
+
* hard cap; a scene whose visible set alone exceeds the budget renders
|
|
15
|
+
* correctly and stays over budget (callers may log/telemeter that).
|
|
16
|
+
* 2. Among the rest, evict least-recently-drawn first, and only batches
|
|
17
|
+
* idle for at least `minAgeFrames` rendered frames — a batch that just
|
|
18
|
+
* left the frustum during an orbit is likely to come right back, and
|
|
19
|
+
* re-uploading it every half-gesture would thrash.
|
|
20
|
+
*
|
|
21
|
+
* Pure function over plain shells so the policy is unit-testable without a
|
|
22
|
+
* GPU; the Scene owns the actual destroy/rebuild.
|
|
23
|
+
*/
|
|
24
|
+
/** Residency view of one bucket-owned batch. */
|
|
25
|
+
export interface ResidencyShell {
|
|
26
|
+
/** Bucket key (identifies the bucket to rebuild from). */
|
|
27
|
+
key: string;
|
|
28
|
+
/** GPU bytes this batch holds (vertex + index + uniform). */
|
|
29
|
+
bytes: number;
|
|
30
|
+
/** Scene frame counter value when this batch was last drawn (-1 = never). */
|
|
31
|
+
lastDrawnFrame: number;
|
|
32
|
+
}
|
|
33
|
+
/** Batches idle for fewer rendered frames than this are never evicted. */
|
|
34
|
+
export declare const MIN_EVICTION_AGE_FRAMES = 30;
|
|
35
|
+
/**
|
|
36
|
+
* Cold-storage source for phase 3b (evict-to-disk): returns the meshes of
|
|
37
|
+
* every cache chunk intersecting the given world AABB. The Scene filters the
|
|
38
|
+
* result down to one bucket's members (by expressId + bucket base key), so
|
|
39
|
+
* over-fetching neighbours is fine — providers should cache recently decoded
|
|
40
|
+
* chunks since adjacent buckets restore together during a gesture.
|
|
41
|
+
*/
|
|
42
|
+
export interface ColdGeometryProvider {
|
|
43
|
+
loadMeshesInBounds(min: [number, number, number], max: [number, number, number]): Promise<import('@ifc-lite/geometry').MeshData[]>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Select batches to evict so `residentBytes` drops to `budgetBytes` or below.
|
|
47
|
+
* `shells` must contain only ELIGIBLE batches (resident, bucket-owned, CPU
|
|
48
|
+
* geometry retained, not drawn this frame). Returns the keys to evict, LRU
|
|
49
|
+
* first; empty when already within budget or nothing is old enough.
|
|
50
|
+
*/
|
|
51
|
+
export declare function selectEvictions(shells: readonly ResidencyShell[], residentBytes: number, budgetBytes: number, currentFrame: number, minAgeFrames?: number): string[];
|
|
52
|
+
//# sourceMappingURL=residency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"residency.d.ts","sourceRoot":"","sources":["../src/residency.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAChB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAC7B,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC,OAAO,oBAAoB,EAAE,QAAQ,EAAE,CAAC,CAAC;CACrD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,GAAE,MAAgC,GAC7C,MAAM,EAAE,CAeV"}
|