@ifc-lite/renderer 1.22.2 → 1.24.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.
Files changed (40) hide show
  1. package/README.md +4 -1
  2. package/dist/camera-fit-policy.d.ts +65 -0
  3. package/dist/camera-fit-policy.d.ts.map +1 -0
  4. package/dist/camera-fit-policy.js +124 -0
  5. package/dist/camera-fit-policy.js.map +1 -0
  6. package/dist/camera.d.ts +22 -0
  7. package/dist/camera.d.ts.map +1 -1
  8. package/dist/camera.js +38 -0
  9. package/dist/camera.js.map +1 -1
  10. package/dist/constants.d.ts +0 -50
  11. package/dist/constants.d.ts.map +1 -1
  12. package/dist/constants.js +0 -45
  13. package/dist/constants.js.map +1 -1
  14. package/dist/index.d.ts +11 -15
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +29 -187
  17. package/dist/index.js.map +1 -1
  18. package/dist/pipeline.d.ts +0 -57
  19. package/dist/pipeline.d.ts.map +1 -1
  20. package/dist/pipeline.js +0 -377
  21. package/dist/pipeline.js.map +1 -1
  22. package/dist/scene.d.ts +1 -14
  23. package/dist/scene.d.ts.map +1 -1
  24. package/dist/scene.js +0 -27
  25. package/dist/scene.js.map +1 -1
  26. package/dist/section-2d-overlay.d.ts +16 -0
  27. package/dist/section-2d-overlay.d.ts.map +1 -1
  28. package/dist/section-2d-overlay.js +57 -0
  29. package/dist/section-2d-overlay.js.map +1 -1
  30. package/dist/shaders/main.wgsl.d.ts +1 -1
  31. package/dist/shaders/main.wgsl.d.ts.map +1 -1
  32. package/dist/shaders/main.wgsl.js +61 -13
  33. package/dist/shaders/main.wgsl.js.map +1 -1
  34. package/dist/types.d.ts +0 -18
  35. package/dist/types.d.ts.map +1 -1
  36. package/package.json +4 -4
  37. package/dist/zero-copy-uploader.d.ts +0 -145
  38. package/dist/zero-copy-uploader.d.ts.map +0 -1
  39. package/dist/zero-copy-uploader.js +0 -146
  40. package/dist/zero-copy-uploader.js.map +0 -1
package/dist/types.d.ts CHANGED
@@ -40,24 +40,6 @@ export interface Mesh {
40
40
  max: [number, number, number];
41
41
  };
42
42
  }
43
- /**
44
- * Instanced geometry for GPU instancing
45
- * Groups identical geometries with different transforms
46
- */
47
- export interface InstancedMesh {
48
- geometryId: number;
49
- vertexBuffer: GPUBuffer;
50
- indexBuffer: GPUBuffer;
51
- indexCount: number;
52
- instanceBuffer: GPUBuffer;
53
- instanceCount: number;
54
- expressIdToInstanceIndex: Map<number, number>;
55
- bindGroup?: GPUBindGroup;
56
- bounds?: {
57
- min: [number, number, number];
58
- max: [number, number, number];
59
- };
60
- }
61
43
  /**
62
44
  * Batched mesh - groups multiple meshes with same color into single draw call
63
45
  * Reduces draw calls from N meshes to ~100-500 batches
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,YAAY,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,IAAI,CAAC;IACb,EAAE,EAAE,IAAI,CAAC;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,IAAI;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,YAAY,CAAC;IAEzB,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAC3E;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,SAAS,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IAEtB,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9C,SAAS,CAAC,EAAE,YAAY,CAAC;IAEzB,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAC3E;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAC3E;AAID,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzD,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,UAAU,GACV,OAAO,GACP,YAAY,CAAC;AAEjB,MAAM,WAAW,sBAAsB;IACrC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,qCAAqC;IACrC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,wBAAwB;IACxB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAC3D,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,qBAAqB,CAAC;QAChC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,eAAe,CAAC,EAAE;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,sBAAsB,CAAC;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,mBAAmB,EAAE,YAAY,CAAC;IAExD,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAEnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAG5B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAE7C,WAAW,CAAC,EAAE,OAAO,CAAC;IAItB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE1B,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.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": "1.22.2",
3
+ "version": "1.24.0",
4
4
  "description": "WebGPU renderer for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,9 +12,9 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@ifc-lite/geometry": "^1.19.0",
16
- "@ifc-lite/spatial": "^1.14.5",
17
- "@ifc-lite/wasm": "^1.19.2"
15
+ "@ifc-lite/geometry": "^2.1.0",
16
+ "@ifc-lite/spatial": "^1.14.6",
17
+ "@ifc-lite/wasm": "^2.1.0"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@webgpu/types": "^0.1.70",
@@ -1,145 +0,0 @@
1
- /**
2
- * Zero-Copy GPU Uploader - uploads geometry directly from WASM memory to WebGPU
3
- *
4
- * This module provides efficient GPU buffer creation and upload from WASM memory.
5
- * It eliminates intermediate JavaScript copies by using TypedArray views directly
6
- * into WASM linear memory.
7
- *
8
- * Performance benefits:
9
- * - 60-70% reduction in peak RAM usage
10
- * - 40-50% faster geometry-to-GPU pipeline
11
- * - Reduced GC pressure
12
- */
13
- /**
14
- * WASM memory interface for zero-copy access
15
- */
16
- export interface WasmMemoryHandle {
17
- buffer: ArrayBuffer;
18
- }
19
- /**
20
- * GPU-ready geometry with pointer access
21
- */
22
- export interface GpuGeometryData {
23
- vertexDataPtr: number;
24
- vertexDataLen: number;
25
- vertexDataByteLength: number;
26
- indicesPtr: number;
27
- indicesLen: number;
28
- indicesByteLength: number;
29
- meshCount: number;
30
- totalVertexCount: number;
31
- totalTriangleCount: number;
32
- getMeshMetadata(index: number): {
33
- expressId: number;
34
- vertexOffset: number;
35
- vertexCount: number;
36
- indexOffset: number;
37
- indexCount: number;
38
- color: number[];
39
- } | undefined;
40
- free(): void;
41
- }
42
- /**
43
- * GPU-ready instanced geometry with pointer access
44
- */
45
- export interface GpuInstancedGeometryData {
46
- geometryId: bigint;
47
- vertexDataPtr: number;
48
- vertexDataLen: number;
49
- vertexDataByteLength: number;
50
- indicesPtr: number;
51
- indicesLen: number;
52
- indicesByteLength: number;
53
- instanceDataPtr: number;
54
- instanceDataLen: number;
55
- instanceDataByteLength: number;
56
- instanceExpressIdsPtr: number;
57
- instanceCount: number;
58
- vertexCount: number;
59
- triangleCount: number;
60
- }
61
- /**
62
- * Mesh metadata for draw calls and selection
63
- */
64
- export interface ZeroCopyMeshMetadata {
65
- expressId: number;
66
- vertexOffset: number;
67
- vertexCount: number;
68
- indexOffset: number;
69
- indexCount: number;
70
- color: [number, number, number, number];
71
- }
72
- /**
73
- * Result of uploading a geometry batch
74
- */
75
- export interface ZeroCopyUploadResult {
76
- vertexBuffer: GPUBuffer;
77
- indexBuffer: GPUBuffer;
78
- meshMetadata: ZeroCopyMeshMetadata[];
79
- stats: {
80
- meshCount: number;
81
- vertexCount: number;
82
- triangleCount: number;
83
- uploadTimeMs: number;
84
- };
85
- }
86
- /**
87
- * Result of uploading instanced geometry
88
- */
89
- export interface ZeroCopyInstancedUploadResult {
90
- geometryId: bigint;
91
- vertexBuffer: GPUBuffer;
92
- indexBuffer: GPUBuffer;
93
- instanceBuffer: GPUBuffer;
94
- indexCount: number;
95
- instanceCount: number;
96
- expressIds: number[];
97
- }
98
- /**
99
- * Zero-copy GPU uploader for direct WASM-to-GPU data transfer
100
- */
101
- export declare class ZeroCopyGpuUploader {
102
- private device;
103
- private wasmMemory;
104
- private cachedBuffer;
105
- constructor(device: GPUDevice, wasmMemory: WasmMemoryHandle);
106
- /**
107
- * Get current WASM memory buffer (may change if memory grows)
108
- */
109
- private getBuffer;
110
- /**
111
- * Create Float32Array view into WASM memory (zero-copy)
112
- */
113
- private createFloat32View;
114
- /**
115
- * Create Uint32Array view into WASM memory (zero-copy)
116
- */
117
- private createUint32View;
118
- /**
119
- * Upload GPU geometry with zero-copy from WASM memory
120
- *
121
- * IMPORTANT: Call this synchronously - don't await between getting
122
- * the geometry and calling this method!
123
- *
124
- * @param geometry GPU-ready geometry from WASM
125
- * @returns Upload result with GPU buffers and metadata
126
- */
127
- uploadGeometry(geometry: GpuGeometryData): ZeroCopyUploadResult;
128
- /**
129
- * Upload instanced geometry with zero-copy from WASM memory
130
- */
131
- uploadInstancedGeometry(geometry: GpuInstancedGeometryData): ZeroCopyInstancedUploadResult;
132
- /**
133
- * Upload geometry and immediately free WASM memory
134
- *
135
- * Convenience method that handles the upload-then-free pattern
136
- */
137
- uploadAndFree(geometry: GpuGeometryData): ZeroCopyUploadResult;
138
- }
139
- /**
140
- * Create a zero-copy uploader from a GPU device and WASM API
141
- */
142
- export declare function createZeroCopyUploader(device: GPUDevice, wasmApi: {
143
- getMemory(): WasmMemoryHandle;
144
- }): ZeroCopyGpuUploader;
145
- //# sourceMappingURL=zero-copy-uploader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zero-copy-uploader.d.ts","sourceRoot":"","sources":["../src/zero-copy-uploader.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}