@ifc-lite/renderer 2.0.0 → 2.0.1
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.
|
@@ -1 +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;AAiBtC,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,YAAY,EACxB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,GACf,WAAW,GAAG,IAAI,
|
|
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;AAiBtC,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,YAAY,EACxB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,GACf,WAAW,GAAG,IAAI,CA0GpB;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"}
|
package/dist/lod-simplify.js
CHANGED
|
@@ -63,7 +63,8 @@ export function simplifyIndicesByClustering(vertexData, strideFloats, indices, c
|
|
|
63
63
|
// same population.
|
|
64
64
|
const vertexCount = strideFloats > 0 ? (vertexData.length / strideFloats) | 0 : 0;
|
|
65
65
|
const cellOf = new Int32Array(vertexCount).fill(-1); // vertexIndex -> representative, -1 = unset
|
|
66
|
-
const repOfCell = new Map(); // cell key -> representative vertexIndex
|
|
66
|
+
const repOfCell = new Map(); // exact cell key -> representative vertexIndex
|
|
67
|
+
let cellOrigin;
|
|
67
68
|
// Clustering is ENTITY-SCOPED: the per-vertex entityId lane (u32 bit-cast
|
|
68
69
|
// at float offset 6 in the batch layout) joins the cell key, so co-located
|
|
69
70
|
// vertices from DIFFERENT entities (a wall face touching a slab face)
|
|
@@ -83,7 +84,28 @@ export function simplifyIndicesByClustering(vertexData, strideFloats, indices, c
|
|
|
83
84
|
const cy = Math.floor(vertexData[base + 1] / cellSize);
|
|
84
85
|
const cz = Math.floor(vertexData[base + 2] / cellSize);
|
|
85
86
|
const entity = idLane ? idLane[base + 6] : 0;
|
|
86
|
-
|
|
87
|
+
// #3991: normal LOD cells fit in a small neighborhood. Pack that exact
|
|
88
|
+
// neighborhood with the FULL u32 entity lane instead of allocating a key
|
|
89
|
+
// string per vertex. Keep generic tiny-cell/huge/nonfinite inputs exact.
|
|
90
|
+
let key;
|
|
91
|
+
if (Number.isSafeInteger(cx) && Number.isSafeInteger(cy) && Number.isSafeInteger(cz)) {
|
|
92
|
+
cellOrigin ??= [cx, cy, cz];
|
|
93
|
+
const dx = cx - cellOrigin[0];
|
|
94
|
+
const dy = cy - cellOrigin[1];
|
|
95
|
+
const dz = cz - cellOrigin[2];
|
|
96
|
+
if (dx >= -64 && dx < 64 && dy >= -64 && dy < 64 && dz >= -64 && dz < 64) {
|
|
97
|
+
// Safe integer coordinates and anchor make these bounded differences
|
|
98
|
+
// exact. 3 * 7 cell bits + 32 entity bits fit in 53 bits: the largest
|
|
99
|
+
// possible key is 2^53 - 1, with no rounding or dropped entity bits.
|
|
100
|
+
key = entity * 0x200000 + (dx + 64) * 0x4000 + (dy + 64) * 0x80 + dz + 64;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
key = `${cx},${cy},${cz},${entity}`;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
key = `${cx},${cy},${cz},${entity}`;
|
|
108
|
+
}
|
|
87
109
|
const existing = repOfCell.get(key);
|
|
88
110
|
let rep;
|
|
89
111
|
if (existing === undefined) {
|
package/dist/lod-simplify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lod-simplify.js","sourceRoot":"","sources":["../src/lod-simplify.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;GAkBG;AAEH,gEAAgE;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC;;;;;;;;GAQG;AACH;;;GAGG;AACH,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAEpC,MAAM,UAAU,2BAA2B,CACzC,UAAwB,EACxB,YAAoB,EACpB,OAAoB,EACpB,QAAgB;IAEhB,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,aAAa,GAAG,iBAAiB;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/D,2EAA2E;IAC3E,EAAE;IACF,0EAA0E;IAC1E,2EAA2E;IAC3E,iEAAiE;IACjE,0EAA0E;IAC1E,6EAA6E;IAC7E,sEAAsE;IACtE,0EAA0E;IAC1E,yEAAyE;IACzE,4EAA4E;IAC5E,8CAA8C;IAC9C,EAAE;IACF,uEAAuE;IACvE,4EAA4E;IAC5E,2EAA2E;IAC3E,mBAAmB;IACnB,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,4CAA4C;IACjG,MAAM,SAAS,GAAG,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"lod-simplify.js","sourceRoot":"","sources":["../src/lod-simplify.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/renderer",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "WebGPU renderer for IFC-Lite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@ifc-lite/geometry": "^4.
|
|
16
|
+
"@ifc-lite/geometry": "^4.3.0",
|
|
17
17
|
"@ifc-lite/spatial": "^1.14.16"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@webgpu/types": "^0.1.72",
|
|
21
|
-
"tsx": "^4.23.
|
|
21
|
+
"tsx": "^4.23.13",
|
|
22
22
|
"typescript": "^6.0.3"
|
|
23
23
|
},
|
|
24
24
|
"license": "MPL-2.0",
|