@ifc-lite/renderer 1.22.2 → 1.23.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.
- package/README.md +4 -1
- package/dist/camera-fit-policy.d.ts +65 -0
- package/dist/camera-fit-policy.d.ts.map +1 -0
- package/dist/camera-fit-policy.js +124 -0
- package/dist/camera-fit-policy.js.map +1 -0
- package/dist/camera.d.ts +22 -0
- package/dist/camera.d.ts.map +1 -1
- package/dist/camera.js +38 -0
- package/dist/camera.js.map +1 -1
- package/dist/constants.d.ts +0 -50
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -45
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +3 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -187
- package/dist/index.js.map +1 -1
- package/dist/pipeline.d.ts +0 -57
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +0 -377
- package/dist/pipeline.js.map +1 -1
- package/dist/scene.d.ts +1 -14
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +0 -27
- 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 +61 -13
- package/dist/shaders/main.wgsl.js.map +1 -1
- package/dist/types.d.ts +0 -18
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/zero-copy-uploader.d.ts +0 -145
- package/dist/zero-copy-uploader.d.ts.map +0 -1
- package/dist/zero-copy-uploader.js +0 -146
- package/dist/zero-copy-uploader.js.map +0 -1
|
@@ -1,146 +0,0 @@
|
|
|
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
|
-
* Zero-copy GPU uploader for direct WASM-to-GPU data transfer
|
|
6
|
-
*/
|
|
7
|
-
export class ZeroCopyGpuUploader {
|
|
8
|
-
device;
|
|
9
|
-
wasmMemory;
|
|
10
|
-
cachedBuffer = null;
|
|
11
|
-
constructor(device, wasmMemory) {
|
|
12
|
-
this.device = device;
|
|
13
|
-
this.wasmMemory = wasmMemory;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Get current WASM memory buffer (may change if memory grows)
|
|
17
|
-
*/
|
|
18
|
-
getBuffer() {
|
|
19
|
-
const currentBuffer = this.wasmMemory.buffer;
|
|
20
|
-
if (this.cachedBuffer !== currentBuffer) {
|
|
21
|
-
this.cachedBuffer = currentBuffer;
|
|
22
|
-
}
|
|
23
|
-
return currentBuffer;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Create Float32Array view into WASM memory (zero-copy)
|
|
27
|
-
*/
|
|
28
|
-
createFloat32View(byteOffset, length) {
|
|
29
|
-
return new Float32Array(this.getBuffer(), byteOffset, length);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Create Uint32Array view into WASM memory (zero-copy)
|
|
33
|
-
*/
|
|
34
|
-
createUint32View(byteOffset, length) {
|
|
35
|
-
return new Uint32Array(this.getBuffer(), byteOffset, length);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Upload GPU geometry with zero-copy from WASM memory
|
|
39
|
-
*
|
|
40
|
-
* IMPORTANT: Call this synchronously - don't await between getting
|
|
41
|
-
* the geometry and calling this method!
|
|
42
|
-
*
|
|
43
|
-
* @param geometry GPU-ready geometry from WASM
|
|
44
|
-
* @returns Upload result with GPU buffers and metadata
|
|
45
|
-
*/
|
|
46
|
-
uploadGeometry(geometry) {
|
|
47
|
-
const startTime = performance.now();
|
|
48
|
-
// Create zero-copy views into WASM memory
|
|
49
|
-
const vertexView = this.createFloat32View(geometry.vertexDataPtr, geometry.vertexDataLen);
|
|
50
|
-
const indexView = this.createUint32View(geometry.indicesPtr, geometry.indicesLen);
|
|
51
|
-
// Create GPU buffers
|
|
52
|
-
const vertexBuffer = this.device.createBuffer({
|
|
53
|
-
size: geometry.vertexDataByteLength,
|
|
54
|
-
usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
|
|
55
|
-
});
|
|
56
|
-
const indexBuffer = this.device.createBuffer({
|
|
57
|
-
size: geometry.indicesByteLength,
|
|
58
|
-
usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,
|
|
59
|
-
});
|
|
60
|
-
// Upload directly from WASM memory (single copy to GPU)
|
|
61
|
-
this.device.queue.writeBuffer(vertexBuffer, 0, vertexView);
|
|
62
|
-
this.device.queue.writeBuffer(indexBuffer, 0, indexView);
|
|
63
|
-
// Extract mesh metadata
|
|
64
|
-
const meshMetadata = [];
|
|
65
|
-
for (let i = 0; i < geometry.meshCount; i++) {
|
|
66
|
-
const meta = geometry.getMeshMetadata(i);
|
|
67
|
-
if (meta) {
|
|
68
|
-
meshMetadata.push({
|
|
69
|
-
expressId: meta.expressId,
|
|
70
|
-
vertexOffset: meta.vertexOffset,
|
|
71
|
-
vertexCount: meta.vertexCount,
|
|
72
|
-
indexOffset: meta.indexOffset,
|
|
73
|
-
indexCount: meta.indexCount,
|
|
74
|
-
color: meta.color,
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
const uploadTimeMs = performance.now() - startTime;
|
|
79
|
-
return {
|
|
80
|
-
vertexBuffer,
|
|
81
|
-
indexBuffer,
|
|
82
|
-
meshMetadata,
|
|
83
|
-
stats: {
|
|
84
|
-
meshCount: geometry.meshCount,
|
|
85
|
-
vertexCount: geometry.totalVertexCount,
|
|
86
|
-
triangleCount: geometry.totalTriangleCount,
|
|
87
|
-
uploadTimeMs,
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Upload instanced geometry with zero-copy from WASM memory
|
|
93
|
-
*/
|
|
94
|
-
uploadInstancedGeometry(geometry) {
|
|
95
|
-
// Create zero-copy views
|
|
96
|
-
const vertexView = this.createFloat32View(geometry.vertexDataPtr, geometry.vertexDataLen);
|
|
97
|
-
const indexView = this.createUint32View(geometry.indicesPtr, geometry.indicesLen);
|
|
98
|
-
const instanceView = this.createFloat32View(geometry.instanceDataPtr, geometry.instanceDataLen);
|
|
99
|
-
const expressIdsView = this.createUint32View(geometry.instanceExpressIdsPtr, geometry.instanceCount);
|
|
100
|
-
// Create GPU buffers
|
|
101
|
-
const vertexBuffer = this.device.createBuffer({
|
|
102
|
-
size: geometry.vertexDataByteLength,
|
|
103
|
-
usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
|
|
104
|
-
});
|
|
105
|
-
const indexBuffer = this.device.createBuffer({
|
|
106
|
-
size: geometry.indicesByteLength,
|
|
107
|
-
usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,
|
|
108
|
-
});
|
|
109
|
-
const instanceBuffer = this.device.createBuffer({
|
|
110
|
-
size: geometry.instanceDataByteLength,
|
|
111
|
-
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
|
|
112
|
-
});
|
|
113
|
-
// Upload directly from WASM memory
|
|
114
|
-
this.device.queue.writeBuffer(vertexBuffer, 0, vertexView);
|
|
115
|
-
this.device.queue.writeBuffer(indexBuffer, 0, indexView);
|
|
116
|
-
this.device.queue.writeBuffer(instanceBuffer, 0, instanceView);
|
|
117
|
-
// Copy express IDs (small array)
|
|
118
|
-
const expressIds = Array.from(expressIdsView);
|
|
119
|
-
return {
|
|
120
|
-
geometryId: geometry.geometryId,
|
|
121
|
-
vertexBuffer,
|
|
122
|
-
indexBuffer,
|
|
123
|
-
instanceBuffer,
|
|
124
|
-
indexCount: geometry.indicesLen,
|
|
125
|
-
instanceCount: geometry.instanceCount,
|
|
126
|
-
expressIds,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Upload geometry and immediately free WASM memory
|
|
131
|
-
*
|
|
132
|
-
* Convenience method that handles the upload-then-free pattern
|
|
133
|
-
*/
|
|
134
|
-
uploadAndFree(geometry) {
|
|
135
|
-
const result = this.uploadGeometry(geometry);
|
|
136
|
-
geometry.free();
|
|
137
|
-
return result;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Create a zero-copy uploader from a GPU device and WASM API
|
|
142
|
-
*/
|
|
143
|
-
export function createZeroCopyUploader(device, wasmApi) {
|
|
144
|
-
return new ZeroCopyGpuUploader(device, wasmApi.getMemory());
|
|
145
|
-
}
|
|
146
|
-
//# sourceMappingURL=zero-copy-uploader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zero-copy-uploader.js","sourceRoot":"","sources":["../src/zero-copy-uploader.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA0G/D;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACtB,MAAM,CAAY;IAClB,UAAU,CAAmB;IAC7B,YAAY,GAAuB,IAAI,CAAC;IAEhD,YAAY,MAAiB,EAAE,UAA4B;QACzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,SAAS;QACf,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC7C,IAAI,IAAI,CAAC,YAAY,KAAK,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;QACpC,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,UAAkB,EAAE,MAAc;QAC1D,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,UAAkB,EAAE,MAAc;QACzD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;;OAQG;IACH,cAAc,CAAC,QAAyB;QACtC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,0CAA0C;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CACvC,QAAQ,CAAC,aAAa,EACtB,QAAQ,CAAC,aAAa,CACvB,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CACrC,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,UAAU,CACpB,CAAC;QAEF,qBAAqB;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC5C,IAAI,EAAE,QAAQ,CAAC,oBAAoB;YACnC,KAAK,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,QAAQ;SACvD,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC3C,IAAI,EAAE,QAAQ,CAAC,iBAAiB;YAChC,KAAK,EAAE,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,QAAQ;SACtD,CAAC,CAAC;QAEH,wDAAwD;QACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAEzD,wBAAwB;QACxB,MAAM,YAAY,GAA2B,EAAE,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,IAAI,EAAE,CAAC;gBACT,YAAY,CAAC,IAAI,CAAC;oBAChB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,KAAK,EAAE,IAAI,CAAC,KAAyC;iBACtD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEnD,OAAO;YACL,YAAY;YACZ,WAAW;YACX,YAAY;YACZ,KAAK,EAAE;gBACL,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,QAAQ,CAAC,gBAAgB;gBACtC,aAAa,EAAE,QAAQ,CAAC,kBAAkB;gBAC1C,YAAY;aACb;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,QAAkC;QACxD,yBAAyB;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CACvC,QAAQ,CAAC,aAAa,EACtB,QAAQ,CAAC,aAAa,CACvB,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CACrC,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,UAAU,CACpB,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CACzC,QAAQ,CAAC,eAAe,EACxB,QAAQ,CAAC,eAAe,CACzB,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAC1C,QAAQ,CAAC,qBAAqB,EAC9B,QAAQ,CAAC,aAAa,CACvB,CAAC;QAEF,qBAAqB;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC5C,IAAI,EAAE,QAAQ,CAAC,oBAAoB;YACnC,KAAK,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,QAAQ;SACvD,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC3C,IAAI,EAAE,QAAQ,CAAC,iBAAiB;YAChC,KAAK,EAAE,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,QAAQ;SACtD,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC9C,IAAI,EAAE,QAAQ,CAAC,sBAAsB;YACrC,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SACxD,CAAC,CAAC;QAEH,mCAAmC;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QAE/D,iCAAiC;QACjC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE9C,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,YAAY;YACZ,WAAW;YACX,cAAc;YACd,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,QAAyB;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC7C,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAiB,EACjB,OAA0C;IAE1C,OAAO,IAAI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9D,CAAC"}
|