@ifc-lite/renderer 1.35.2 → 1.37.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 +94 -0
- package/dist/contribution-cull.d.ts.map +1 -0
- package/dist/contribution-cull.js +111 -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 +233 -14
- package/dist/index.js.map +1 -1
- package/dist/instanced-render.d.ts +31 -0
- package/dist/instanced-render.d.ts.map +1 -1
- package/dist/instanced-render.js +45 -0
- package/dist/instanced-render.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 +95 -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 +190 -1
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +799 -42
- 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 +3 -3
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LOD1 index simplification (issue #1682, phase 5).
|
|
3
|
+
*
|
|
4
|
+
* Vertex-clustering decimation in the style of meshoptimizer's "sloppy"
|
|
5
|
+
* simplifier, over the batch's EXISTING interleaved vertex buffer: vertices
|
|
6
|
+
* are snapped to a uniform grid, each occupied cell elects its first vertex
|
|
7
|
+
* as representative, and a triangle survives only when its three corners
|
|
8
|
+
* land in three DISTINCT cells. The output is just another index buffer over
|
|
9
|
+
* the same vertices — LOD costs index bytes only, no second vertex buffer,
|
|
10
|
+
* and the per-vertex entityId lane (picking id + colour salt) rides along
|
|
11
|
+
* with the representative vertex.
|
|
12
|
+
*
|
|
13
|
+
* Works on ifc-lite's unwelded flat-shaded soup because clustering keys on
|
|
14
|
+
* POSITION, not index topology: coincident duplicated vertices land in the
|
|
15
|
+
* same cell and collapse together. Representative normals are "whichever
|
|
16
|
+
* face got there first" — visually fine at the sub-`thresholdPx` projected
|
|
17
|
+
* sizes LOD1 is drawn at, and the no-weld invariant (#846) is untouched
|
|
18
|
+
* because the full-detail LOD0 geometry is never modified.
|
|
19
|
+
*/
|
|
20
|
+
/** Below this many source triangles a batch keeps LOD0 only. */
|
|
21
|
+
export declare const LOD_MIN_TRIANGLES = 500;
|
|
22
|
+
/** Grid cell edge as a fraction of the batch AABB diagonal (error budget). */
|
|
23
|
+
export declare const LOD_CELL_FRACTION = 0.02;
|
|
24
|
+
/**
|
|
25
|
+
* Cluster-simplify `indices` over interleaved vertex data.
|
|
26
|
+
*
|
|
27
|
+
* @param vertexData interleaved records, `strideFloats` floats per vertex,
|
|
28
|
+
* position at float offset 0..2 (the batch layout: 7 floats = 28 bytes)
|
|
29
|
+
* @param cellSize world-space grid edge; non-positive returns null
|
|
30
|
+
* @returns the LOD1 index buffer, or null when simplification does not pay
|
|
31
|
+
* (too few source triangles, or the result is not meaningfully smaller)
|
|
32
|
+
*/
|
|
33
|
+
export declare function simplifyIndicesByClustering(vertexData: Float32Array, strideFloats: number, indices: Uint32Array, cellSize: number): Uint32Array | null;
|
|
34
|
+
/** Cell size for a batch from its world AABB (diagonal * LOD_CELL_FRACTION). */
|
|
35
|
+
export declare function lodCellSizeForBounds(min: readonly [number, number, number], max: readonly [number, number, number]): number;
|
|
36
|
+
//# sourceMappingURL=lod-simplify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lod-simplify.d.ts","sourceRoot":"","sources":["../src/lod-simplify.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,YAAY,EACxB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,GACf,WAAW,GAAG,IAAI,CAwDpB;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACtC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACrC,MAAM,CAKR"}
|
|
@@ -0,0 +1,101 @@
|
|
|
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
|
+
* LOD1 index simplification (issue #1682, phase 5).
|
|
6
|
+
*
|
|
7
|
+
* Vertex-clustering decimation in the style of meshoptimizer's "sloppy"
|
|
8
|
+
* simplifier, over the batch's EXISTING interleaved vertex buffer: vertices
|
|
9
|
+
* are snapped to a uniform grid, each occupied cell elects its first vertex
|
|
10
|
+
* as representative, and a triangle survives only when its three corners
|
|
11
|
+
* land in three DISTINCT cells. The output is just another index buffer over
|
|
12
|
+
* the same vertices — LOD costs index bytes only, no second vertex buffer,
|
|
13
|
+
* and the per-vertex entityId lane (picking id + colour salt) rides along
|
|
14
|
+
* with the representative vertex.
|
|
15
|
+
*
|
|
16
|
+
* Works on ifc-lite's unwelded flat-shaded soup because clustering keys on
|
|
17
|
+
* POSITION, not index topology: coincident duplicated vertices land in the
|
|
18
|
+
* same cell and collapse together. Representative normals are "whichever
|
|
19
|
+
* face got there first" — visually fine at the sub-`thresholdPx` projected
|
|
20
|
+
* sizes LOD1 is drawn at, and the no-weld invariant (#846) is untouched
|
|
21
|
+
* because the full-detail LOD0 geometry is never modified.
|
|
22
|
+
*/
|
|
23
|
+
/** Below this many source triangles a batch keeps LOD0 only. */
|
|
24
|
+
export const LOD_MIN_TRIANGLES = 500;
|
|
25
|
+
/** Grid cell edge as a fraction of the batch AABB diagonal (error budget). */
|
|
26
|
+
export const LOD_CELL_FRACTION = 0.02;
|
|
27
|
+
/**
|
|
28
|
+
* Cluster-simplify `indices` over interleaved vertex data.
|
|
29
|
+
*
|
|
30
|
+
* @param vertexData interleaved records, `strideFloats` floats per vertex,
|
|
31
|
+
* position at float offset 0..2 (the batch layout: 7 floats = 28 bytes)
|
|
32
|
+
* @param cellSize world-space grid edge; non-positive returns null
|
|
33
|
+
* @returns the LOD1 index buffer, or null when simplification does not pay
|
|
34
|
+
* (too few source triangles, or the result is not meaningfully smaller)
|
|
35
|
+
*/
|
|
36
|
+
export function simplifyIndicesByClustering(vertexData, strideFloats, indices, cellSize) {
|
|
37
|
+
const triangleCount = (indices.length / 3) | 0;
|
|
38
|
+
if (triangleCount < LOD_MIN_TRIANGLES)
|
|
39
|
+
return null;
|
|
40
|
+
if (!(cellSize > 0) || !Number.isFinite(cellSize))
|
|
41
|
+
return null;
|
|
42
|
+
// Cell id per referenced vertex, memoized (vertices are referenced ~1-3x).
|
|
43
|
+
const cellOf = new Map(); // vertexIndex -> cluster representative vertexIndex
|
|
44
|
+
const repOfCell = new Map(); // cell key -> representative vertexIndex
|
|
45
|
+
// Clustering is ENTITY-SCOPED: the per-vertex entityId lane (u32 bit-cast
|
|
46
|
+
// at float offset 6 in the batch layout) joins the cell key, so co-located
|
|
47
|
+
// vertices from DIFFERENT entities (a wall face touching a slab face)
|
|
48
|
+
// never share a representative. Without this a LOD triangle could inherit
|
|
49
|
+
// a neighbour entity's id lane — wrong object-id target output (separation
|
|
50
|
+
// lines) and wrong overlay depth-salt at LOD distance. Costs a little
|
|
51
|
+
// reduction ratio; correctness first.
|
|
52
|
+
const idLane = strideFloats > 6
|
|
53
|
+
? new Uint32Array(vertexData.buffer, vertexData.byteOffset, vertexData.length)
|
|
54
|
+
: null;
|
|
55
|
+
const repOf = (vi) => {
|
|
56
|
+
let rep = cellOf.get(vi);
|
|
57
|
+
if (rep !== undefined)
|
|
58
|
+
return rep;
|
|
59
|
+
const base = vi * strideFloats;
|
|
60
|
+
const cx = Math.floor(vertexData[base] / cellSize);
|
|
61
|
+
const cy = Math.floor(vertexData[base + 1] / cellSize);
|
|
62
|
+
const cz = Math.floor(vertexData[base + 2] / cellSize);
|
|
63
|
+
const entity = idLane ? idLane[base + 6] : 0;
|
|
64
|
+
const key = `${cx},${cy},${cz},${entity}`;
|
|
65
|
+
rep = repOfCell.get(key);
|
|
66
|
+
if (rep === undefined) {
|
|
67
|
+
rep = vi;
|
|
68
|
+
repOfCell.set(key, vi);
|
|
69
|
+
}
|
|
70
|
+
cellOf.set(vi, rep);
|
|
71
|
+
return rep;
|
|
72
|
+
};
|
|
73
|
+
const out = new Uint32Array(indices.length);
|
|
74
|
+
let w = 0;
|
|
75
|
+
for (let i = 0; i < indices.length; i += 3) {
|
|
76
|
+
const a = repOf(indices[i]);
|
|
77
|
+
const b = repOf(indices[i + 1]);
|
|
78
|
+
const c = repOf(indices[i + 2]);
|
|
79
|
+
// Collapsed triangles (any two corners in the same cell) are dropped.
|
|
80
|
+
if (a === b || b === c || a === c)
|
|
81
|
+
continue;
|
|
82
|
+
out[w] = a;
|
|
83
|
+
out[w + 1] = b;
|
|
84
|
+
out[w + 2] = c;
|
|
85
|
+
w += 3;
|
|
86
|
+
}
|
|
87
|
+
// Not worth a second index buffer unless it drops a decent fraction.
|
|
88
|
+
if (w >= indices.length * 0.75)
|
|
89
|
+
return null;
|
|
90
|
+
if (w === 0)
|
|
91
|
+
return null;
|
|
92
|
+
return out.slice(0, w);
|
|
93
|
+
}
|
|
94
|
+
/** Cell size for a batch from its world AABB (diagonal * LOD_CELL_FRACTION). */
|
|
95
|
+
export function lodCellSizeForBounds(min, max) {
|
|
96
|
+
const dx = max[0] - min[0];
|
|
97
|
+
const dy = max[1] - min[1];
|
|
98
|
+
const dz = max[2] - min[2];
|
|
99
|
+
return Math.sqrt(dx * dx + dy * dy + dz * dz) * LOD_CELL_FRACTION;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=lod-simplify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lod-simplify.js","sourceRoot":"","sources":["../src/lod-simplify.ts"],"names":[],"mappings":"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"}
|
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":"AAAA;;+DAE+D;AAO/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACH,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,GAErB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,OAAO,cAAc;IACf,MAAM,CAAY;IAClB,YAAY,CAAe;IAC3B,QAAQ,CAAoB;IAC5B,iBAAiB,CAAqB,CAAE,mEAAmE;IAC3G,4BAA4B,GAA6B,IAAI,CAAC,CAAE,4GAA4G;IAC5K,gCAAgC,GAAqC,IAAI,CAAC,CAAE,qCAAqC;IACjH,iCAAiC,GAAG,KAAK,CAAC,CAAE,oEAAoE;IAChH,iBAAiB,CAAoB,CAAE,gDAAgD;IACvF,mBAAmB,CAAoB,CAAE,sDAAsD;IAC/F,eAAe,CAAoB,CAAE,mEAAmE;IACxG,gBAAgB,CAAoB,CAAE,wEAAwE;IAC9G,uBAAuB,CAAqB,CAAE,wCAAwC;IACtF,YAAY,CAAa;IACzB,gBAAgB,CAAiB;IACzC,sEAAsE;IACtE,2EAA2E;IAC3E,wCAAwC;IAChC,oBAAoB,CAAiB;IAC7C,qEAAqE;IACrE,4BAA4B;IACpB,kBAAkB,CAAiB;IACnC,eAAe,CAAa;IAC5B,mBAAmB,CAAiB;IAC5C,0EAA0E;IAC1E,uEAAuE;IACvE,oDAAoD;IAC5C,WAAW,GAAqB,sBAAsB,CAAC;IACvD,WAAW,CAAmB;IAC9B,cAAc,GAAqB,YAAY,CAAC;IAChD,kBAAkB,GAAsB,IAAI,CAAC;IAC7C,sBAAsB,GAA0B,IAAI,CAAC;IACrD,WAAW,GAAW,CAAC,CAAC,CAAE,oBAAoB;IAC9C,aAAa,CAAY;IACzB,SAAS,CAAe;IACxB,eAAe,CAAqB,CAAE,2CAA2C;IACzF,qEAAqE;IACrE,sEAAsE;IACtE,0DAA0D;IAClD,iBAAiB,CAAY;IAC7B,oBAAoB,CAAe;IACnC,0BAA0B,CAAqB;IAC/C,kBAAkB,GAAG,IAAI,YAAY,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC;IACpE,YAAY,CAAS;IACrB,aAAa,CAAS;IAE9B,YAAY,MAAoB,EAAE,QAAgB,CAAC,EAAE,SAAiB,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAEtC,6CAA6C;QAC7C,wDAAwD;QACxD,MAAM,cAAc,GAAI,IAAI,CAAC,MAAM,CAAC,MAA4C,EAAE,cAAc,IAAI,CAAC,CAAC;QACtG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAE/C,yCAAyC;QACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,eAAe;YAC1E,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAC3D,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QACvD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC7C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,eAAe;YAC1E,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAC3D,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;QAE7D,4CAA4C;QAC5C,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;gBAChD,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACvB,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,KAAK,EAAE,eAAe,CAAC,iBAAiB;gBACxC,WAAW,EAAE,IAAI,CAAC,WAAW;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;QACvE,CAAC;QAED,oFAAoF;QACpF,wGAAwG;QACxG,qFAAqF;QACrF,oEAAoE;QACpE,4DAA4D;QAC5D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC1C,IAAI,EAAE,GAAG,EAAE,mCAAmC;YAC9C,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SAC1D,CAAC,CAAC;QAEH,kFAAkF;QAClF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;YACrD,OAAO,EAAE;gBACL;oBACI,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,QAAQ;oBAC3D,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC9B;aACJ;SACJ,CAAC,CAAC;QAEH,iEAAiE;QACjE,qEAAqE;QACrE,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;YAChE,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE;gBACL;oBACI,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,cAAc,CAAC,QAAQ;oBACnC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC9B;aACJ;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC9C,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SAC1D,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YACpD,MAAM,EAAE,IAAI,CAAC,0BAA0B;YACvC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC1E,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,wFAAwF;QACxF,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAChD,IAAI,EAAE,gBAAgB;SACzB,CAAC,CAAC;QAEH,gFAAgF;QAChF,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACpD,gBAAgB,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,0BAA0B,CAAC;SAC5E,CAAC,CAAC;QAEH,oCAAoC;QACpC,MAAM,kBAAkB,GAAgC;YACpD,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE;oBACL;wBACI,WAAW,EAAE,EAAE,EAAE,qBAAqB;wBACtC,UAAU,EAAE;4BACR,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW;4BAClE,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,SAAS;4BACjE,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,YAAY;yBACpE;qBACJ;iBACJ;aACJ;YACD,QAAQ,EAAE;gBACN,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;aACpE;YACD,SAAS,EAAE;gBACP,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM,EAAE,sDAAsD;aAC3E;YACD,YAAY,EAAE;gBACV,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,iBAAiB,EAAE,IAAI;gBACvB,YAAY,EAAE,SAAS,EAAG,qCAAqC;gBAC/D,2DAA2D;gBAC3D,6DAA6D;gBAC7D,2DAA2D;gBAC3D,kDAAkD;aACrD;YACD,sEAAsE;YACtE,WAAW,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,WAAW;aAC1B;SAC2B,CAAC;QAEjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QAErE,0EAA0E;QAC1E,wEAAwE;QACxE,2EAA2E;QAC3E,0EAA0E;QAC1E,kEAAkE;QAClE,uEAAuE;QACvE,2EAA2E;QAC3E,6DAA6D;QAC7D,MAAM,eAAe,GAAmB;YACpC,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,cAAc;YAC1B,OAAO,EAAE;gBACL;oBACI,WAAW,EAAE,EAAE;oBACf,UAAU,EAAE;wBACR,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW;wBAClE,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,SAAS;wBACjE,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,yBAAyB;qBACjF;iBACJ;gBACD;oBACI,WAAW,EAAE,EAAE,EAAE,uEAAuE;oBACxF,QAAQ,EAAE,UAAU;oBACpB,UAAU,EAAE;wBACR,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,eAAe;wBACtE,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO;wBAC/D,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO;wBAC/D,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO;wBAC/D,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,WAAW;wBAChE,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO;wBAC/D,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,2CAA2C;qBACnG;iBACJ;aACJ;SACJ,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACtD,GAAG,kBAAkB;YACrB,MAAM,EAAE,eAAe;SACK,CAAC,CAAC;QAClC,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,oBAAoB,GAAG,eAAe,CAAC;QAE7C,uCAAuC;QACvC,MAAM,2BAA2B,GAAgC;YAC7D,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE;oBACL;wBACI,WAAW,EAAE,EAAE;wBACf,UAAU,EAAE;4BACR,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;4BACrD,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;4BACtD,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;yBACtD;qBACJ;iBACJ;aACJ;YACD,QAAQ,EAAE;gBACN,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;aACpE;YACD,SAAS,EAAE;gBACP,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM;aACnB;YACD,YAAY,EAAE;gBACV,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,iBAAiB,EAAE,KAAK,EAAG,2EAA2E;gBACtG,YAAY,EAAE,eAAe,EAAG,oEAAoE;gBACpG,yDAAyD;gBACzD,+DAA+D;gBAC/D,iEAAiE;gBACjE,iEAAiE;gBACjE,gEAAgE;gBAChE,qDAAqD;gBACrD,SAAS,EAAE,CAAC;gBACZ,mBAAmB,EAAE,CAAC;aACzB;YACD,sEAAsE;YACtE,WAAW,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,WAAW;aAC1B;SAC2B,CAAC;QAEjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;QAEvF,gFAAgF;QAChF,MAAM,6BAA6B,GAAgC;YAC/D,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE;oBACL;wBACI,WAAW,EAAE,EAAE;wBACf,UAAU,EAAE;4BACR,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;4BACrD,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;4BACtD,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;yBACtD;qBACJ;iBACJ;aACJ;YACD,QAAQ,EAAE;gBACN,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,CAAC;wBACN,MAAM,EAAE,IAAI,CAAC,WAAW;wBACxB,KAAK,EAAE;4BACH,KAAK,EAAE;gCACH,SAAS,EAAE,WAAW;gCACtB,SAAS,EAAE,qBAAqB;6BACnC;4BACD,KAAK,EAAE;gCACH,SAAS,EAAE,KAAK;gCAChB,SAAS,EAAE,qBAAqB;6BACnC;yBACJ;qBACJ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;aACtC;YACD,SAAS,EAAE;gBACP,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM;aACnB;YACD,YAAY,EAAE;gBACV,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,iBAAiB,EAAE,KAAK,EAAG,4CAA4C;gBACvE,YAAY,EAAE,SAAS,EAAI,6CAA6C;aAC3E;YACD,sEAAsE;YACtE,WAAW,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,WAAW;aAC1B;SAC2B,CAAC;QAEjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;QAE3F,+EAA+E;QAC/E,yEAAyE;QACzE,6EAA6E;QAC7E,wEAAwE;QACxE,yEAAyE;QACzE,EAAE;QACF,yEAAyE;QACzE,8EAA8E;QAC9E,gFAAgF;QAChF,8EAA8E;QAC9E,6EAA6E;QAC7E,gFAAgF;QAChF,IAAI,CAAC,gCAAgC,GAAG,GAAG,EAAE,CACzC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC7B,GAAG,6BAA6B;YAChC,MAAM,EAAE,oBAAoB;SACA,CAAC,CAAC;QAEtC,mDAAmD;QACnD,4FAA4F;QAC5F,wEAAwE;QACxE,mFAAmF;QACnF,EAAE;QACF,yEAAyE;QACzE,4EAA4E;QAC5E,0EAA0E;QAC1E,uEAAuE;QACvE,mEAAmE;QACnE,MAAM,yBAAyB,GAAgC;YAC3D,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE;oBACL;wBACI,WAAW,EAAE,EAAE;wBACf,UAAU,EAAE;4BACR,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;4BACrD,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;4BACtD,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;yBACtD;qBACJ;iBACJ;aACJ;YACD,QAAQ,EAAE;gBACN,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE;oBACL;wBACI,MAAM,EAAE,IAAI,CAAC,WAAW;wBACxB,KAAK,EAAE;4BACH,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE;4BACnE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE;yBAChE;qBACJ;oBACD,EAAE,MAAM,EAAE,YAAY,EAAE;iBAC3B;aACJ;YACD,SAAS,EAAE;gBACP,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM;aACnB;YACD,YAAY,EAAE;gBACV,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,iBAAiB,EAAE,KAAK;gBACxB,YAAY,EAAE,OAAO,EAAG,wDAAwD;aACnF;YACD,WAAW,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,WAAW;aAC1B;SAC2B,CAAC;QAEjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;QAEnF,iCAAiC;QACjC,qEAAqE;QACrE,kEAAkE;QAClE,0EAA0E;QAC1E,2EAA2E;QAC3E,0EAA0E;QAC1E,+DAA+D;QAC/D,0EAA0E;QAC1E,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;YAC7D,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE;gBACL;oBACI,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,QAAQ;oBAC3D,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC9B;gBACD,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;gBACrF,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;aACtF;SACJ,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAClD,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,oBAAoB;SAC7B,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACrD,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBACrC,gBAAgB,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,0BAA0B,CAAC;aACpF,CAAC;YACF,MAAM,EAAE;gBACJ,MAAM,EAAE,cAAc;gBACtB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE;oBACL;wBACI,gEAAgE;wBAChE,WAAW,EAAE,EAAE;wBACf,UAAU,EAAE;4BACR,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;4BACrD,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;4BACtD,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;4BACnD,8DAA8D;4BAC9D,6DAA6D;4BAC7D,mDAAmD;4BACnD,oDAAoD;4BACpD,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;yBAC1D;qBACJ;iBACJ;aACJ;YACD,QAAQ,EAAE;gBACN,MAAM,EAAE,cAAc;gBACtB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;aAC3E;YACD,SAAS,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC1D,YAAY,EAAE;gBACV,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,iBAAiB,EAAE,IAAI;gBACvB,YAAY,EAAE,SAAS,EAAE,yCAAyC;aACrE;YACD,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;SACZ,CAAC,CAAC;QAElC,yDAAyD;QACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,eAAe;YAC5B,OAAO,EAAE;gBACL;oBACI,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;iBAC3C;aACJ;SACJ,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,cAAc,CACV,QAAsB,EACtB,KAAmB,EACnB,KAAwC,EACxC,QAAoD,EACpD,YAA0G,EAC1G,UAAoB,EACpB,OAA4F;QAE5F,uCAAuC;QACvC,mFAAmF;QACnF,+FAA+F;QAC/F,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB;QAE/E,gDAAgD;QAChD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAExB,8CAA8C;QAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEtB,+CAA+C;QAC/C,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACJ,sBAAsB;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,uDAAuD;QACvD,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,GAAG,CAAC;QAC3C,MAAM,SAAS,GAAG,QAAQ,EAAE,SAAS,IAAI,GAAG,CAAC;QAC7C,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QACtB,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAEvB,qCAAqC;QAErC,4EAA4E;QAC5E,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC;QACvC,CAAC;QAED,2EAA2E;QAC3E,+CAA+C;QAC/C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAEjD,gEAAgE;QAChE,yFAAyF;QACzF,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,UAAU,CAAC,CAAC,CAAC;YACT,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,OAAO,CAAC;QACZ,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAA6B,6CAA6C;QAC5F,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAA6B,+CAA+C;QAE9F,mBAAmB;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;OAMG;IACH,gBAAgB,CAAC,IAAkB,EAAE,WAAW,GAAG,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3D,6EAA6E;QAC7E,+EAA+E;QAC/E,+EAA+E;QAC/E,sBAAsB;QACtB,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CACzB,IAAI,CAAC,aAAa,EAClB,GAAG,EACH,IAAI,WAAW,CAAC,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,CAC9C,CAAC;QACN,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,GAAyB;QACvC,uBAAuB,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACtF,CAAC;IAED,8EAA8E;IAC9E,uBAAuB;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAa,EAAE,MAAc;QACrC,OAAO,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAa,EAAE,MAAc;QAChC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO;QAEtC,yEAAyE;QACzE,iFAAiF;QACjF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;QACxD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAE5B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,eAAe;YAC1E,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAC3D,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QACvD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC7C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,eAAe;YAC1E,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAC3D,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;QAE7D,+BAA+B;QAC/B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;gBAChD,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACvB,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,KAAK,EAAE,eAAe,CAAC,iBAAiB;gBACxC,WAAW,EAAE,IAAI,CAAC,WAAW;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;QACvE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACvC,CAAC;IACL,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,kGAAkG;IAClG,oBAAoB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,+BAA+B;QAC3B,wEAAwE;QACxE,4EAA4E;QAC5E,iEAAiE;QACjE,IACI,CAAC,IAAI,CAAC,4BAA4B;YAClC,CAAC,IAAI,CAAC,iCAAiC;YACvC,IAAI,CAAC,gCAAgC,EACvC,CAAC;YACC,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC;YAC9C,oEAAoE;YACpE,qEAAqE;YACrE,gEAAgE;YAChE,iEAAiE;YACjE,wEAAwE;YACxE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YACzC,IAAI,CAAC;gBACD,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,gCAAgC,EAAE,CAAC;YAChF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,iGAAiG,EAAE,GAAG,CAAC,CAAC;gBACrH,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvC,IAAI,KAAK,EAAE,CAAC;oBACR,OAAO,CAAC,IAAI,CAAC,uGAAuG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBACrI,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;gBAC7C,CAAC;YACL,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAA4E,CAAC,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,IAAI,CAAC,4BAA4B,CAAC;IAC7C,CAAC;IAED,oBAAoB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,sBAAsB;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,kBAAkB;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,qCAAqC;IACrC,mBAAmB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,uBAAuB,CACnB,aAAwB,EACxB,WAA2B,EAC3B,OAAmB;QAEnB,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,uBAAuB;YACpC,OAAO,EAAE;gBACL,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE;gBACnD,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE;gBACrC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE;aACpC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,mBAAmB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,oEAAoE;IACpE,uBAAuB;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAED,qEAAqE;IACrE,qBAAqB;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,sBAAsB;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,yBAAyB;QACrB,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,kBAAkB;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,oBAAoB;QAChB,OAAO,GAAG,CAAC,CAAC,uDAAuD;IACvE,CAAC;IAEO,SAAS,GAAG,KAAK,CAAC;IAE1B;;;;OAIG;IACH,OAAO;QACH,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;CACJ"}
|
|
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":"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"}
|