@openheart/tavio-renderer 2.2.13-without-wasm → 2.3.2-with-wasm

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,39 +1,46 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ export const decodeSog: (a: number, b: number, c: number) => number;
3
4
  export const decodeTavio: (a: number, b: number, c: number) => number;
5
+ export const encodeTavio: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
6
+ export const main: () => void;
7
+ export const decodePly: (a: number, b: number, c: number) => number;
8
+ export const encodePly: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
4
9
  export const registerEventHandler: (a: number) => number;
5
10
  export const sort: (a: number, b: number, c: number) => number;
6
- export const main: () => void;
7
- export const __wbg_intounderlyingsource_free: (a: number, b: number) => void;
8
- export const intounderlyingsource_cancel: (a: number) => void;
9
- export const intounderlyingsource_pull: (a: number, b: number) => number;
10
- export const __wbg_intounderlyingsink_free: (a: number, b: number) => void;
11
- export const intounderlyingsink_abort: (a: number, b: number) => number;
12
- export const intounderlyingsink_close: (a: number) => number;
13
- export const intounderlyingsink_write: (a: number, b: number) => number;
11
+ export const decodeSplat: (a: number, b: number, c: number) => number;
12
+ export const decodeSpz: (a: number, b: number, c: number) => number;
13
+ export const encodeSplat: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
14
+ export const encodeSpz: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
14
15
  export const __wbg_intounderlyingbytesource_free: (a: number, b: number) => void;
15
16
  export const intounderlyingbytesource_autoAllocateChunkSize: (a: number) => number;
16
17
  export const intounderlyingbytesource_cancel: (a: number) => void;
17
18
  export const intounderlyingbytesource_pull: (a: number, b: number) => number;
18
19
  export const intounderlyingbytesource_start: (a: number, b: number) => void;
19
20
  export const intounderlyingbytesource_type: (a: number) => number;
21
+ export const __wbg_intounderlyingsink_free: (a: number, b: number) => void;
22
+ export const intounderlyingsink_abort: (a: number, b: number) => number;
23
+ export const intounderlyingsink_close: (a: number) => number;
24
+ export const intounderlyingsink_write: (a: number, b: number) => number;
25
+ export const __wbg_intounderlyingsource_free: (a: number, b: number) => void;
26
+ export const intounderlyingsource_cancel: (a: number) => void;
27
+ export const intounderlyingsource_pull: (a: number, b: number) => number;
20
28
  export const __wbg_wbg_rayon_poolbuilder_free: (a: number, b: number) => void;
21
29
  export const initThreadPool: (a: number) => number;
22
30
  export const wbg_rayon_poolbuilder_build: (a: number) => void;
23
31
  export const wbg_rayon_poolbuilder_numThreads: (a: number) => number;
24
32
  export const wbg_rayon_poolbuilder_receiver: (a: number) => number;
25
33
  export const wbg_rayon_start_worker: (a: number) => void;
26
- export const __wasm_bindgen_func_elem_629: (a: number, b: number) => void;
27
- export const __wasm_bindgen_func_elem_664: (a: number, b: number) => void;
28
- export const __wasm_bindgen_func_elem_694: (a: number, b: number, c: number, d: number) => void;
29
- export const __wasm_bindgen_func_elem_1613: (a: number, b: number, c: number, d: number) => void;
30
- export const __wasm_bindgen_func_elem_570: (a: number, b: number, c: number) => void;
31
- export const __wasm_bindgen_func_elem_695: (a: number, b: number, c: number) => void;
34
+ export const __wasm_bindgen_func_elem_2708: (a: number, b: number, c: number, d: number) => void;
35
+ export const __wasm_bindgen_func_elem_2711: (a: number, b: number, c: number, d: number) => void;
36
+ export const __wasm_bindgen_func_elem_1035: (a: number, b: number, c: number) => void;
37
+ export const __wasm_bindgen_func_elem_2710: (a: number, b: number, c: number) => void;
32
38
  export const memory: WebAssembly.Memory;
33
39
  export const __wbindgen_export: (a: number, b: number) => number;
34
40
  export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
35
41
  export const __wbindgen_export3: (a: number) => void;
36
42
  export const __wbindgen_export4: (a: number, b: number, c: number) => void;
43
+ export const __wbindgen_export5: (a: number, b: number) => void;
37
44
  export const __wbindgen_add_to_stack_pointer: (a: number) => number;
38
45
  export const __wbindgen_thread_destroy: (a?: number, b?: number, c?: number) => void;
39
46
  export const __wbindgen_start: (a: number) => void;
@@ -0,0 +1,117 @@
1
+ let wasm = null;
2
+ globalThis.allocateSharedArrayBuffer = (oldSharedArrayBuffer, newByteSize) => {
3
+ const newSharedArrayBuffer = new SharedArrayBuffer(newByteSize);
4
+ if (oldSharedArrayBuffer) {
5
+ new Uint8Array(newSharedArrayBuffer).set(
6
+ new Uint8Array(oldSharedArrayBuffer)
7
+ );
8
+ }
9
+ return newSharedArrayBuffer;
10
+ };
11
+ self.onmessage = async (e) => {
12
+ switch (e.data.kind) {
13
+ case "init":
14
+ await init(e.data.options);
15
+ break;
16
+ case "registerEventHandler":
17
+ wasm.registerEventHandler((e2) => {
18
+ const message = {
19
+ category: "wasmCallback",
20
+ data: e2
21
+ };
22
+ postMessage(message, collectTransferables(e2));
23
+ });
24
+ break;
25
+ default:
26
+ if ("id" in e.data && "args" in e.data) {
27
+ const { kind, id, args } = e.data;
28
+ try {
29
+ const fn = wasm[kind];
30
+ const result = await fn(...args);
31
+ const message = { kind, id, result };
32
+ postMessage(message);
33
+ } catch (error) {
34
+ const message = {
35
+ category: "wasmError",
36
+ id,
37
+ error
38
+ };
39
+ postMessage(message);
40
+ }
41
+ }
42
+ break;
43
+ }
44
+ };
45
+ async function importWasmBindings(useSharedArrayBuffer) {
46
+ const href = useSharedArrayBuffer ? new URL(
47
+ /* @vite-ignore */
48
+ "./wasm/pkg/thread/tavio.js",
49
+ import.meta.url
50
+ ).href : new URL(
51
+ /* @vite-ignore */
52
+ "./wasm/pkg/no-thread/tavio.js",
53
+ import.meta.url
54
+ ).href;
55
+ return await import(
56
+ /* @vite-ignore */
57
+ href
58
+ );
59
+ }
60
+ async function init(options) {
61
+ const useSharedArrayBuffer = options?.useSharedArrayBuffer == true;
62
+ const threadCount = Math.min(
63
+ options?.threadCount ?? 1,
64
+ navigator.hardwareConcurrency
65
+ );
66
+ const isParallel = useSharedArrayBuffer && threadCount > 1;
67
+ wasm = await importWasmBindings(useSharedArrayBuffer);
68
+ try {
69
+ await wasm.default();
70
+ console.info(
71
+ ` WASM${useSharedArrayBuffer ? " (thread)" : "(no-thread)"} initialized successfully`
72
+ );
73
+ } catch (e) {
74
+ console.error("[WasmWorker] Failed to initialize WASM (tavio_bg.wasm):", e);
75
+ console.error("[WasmWorker] This error typically occurs when:");
76
+ console.error(
77
+ " 1. The tavio_bg.wasm file is not deployed to the correct path"
78
+ );
79
+ console.error(" 2. CORS policy is blocking the WASM file");
80
+ console.error(
81
+ " 3. The WASM file has incorrect MIME type (should be application/wasm)"
82
+ );
83
+ throw e;
84
+ }
85
+ if (isParallel) {
86
+ try {
87
+ console.info(
88
+ `[WasmWorker] Initializing thread pool with ${threadCount} threads...`
89
+ );
90
+ wasm.initThreadPool(threadCount);
91
+ console.info("[WasmWorker] Thread pool initialized successfully");
92
+ } catch (e) {
93
+ console.error("[WasmWorker] Failed to initialize thread pool:", e);
94
+ console.error("[WasmWorker] This error typically occurs when:");
95
+ console.error(
96
+ " 1. workerHelpers.js is not deployed to the correct path"
97
+ );
98
+ console.error(
99
+ " 2. SharedArrayBuffer is not available (requires secure context and COOP/COEP headers)"
100
+ );
101
+ throw e;
102
+ }
103
+ }
104
+ postMessage({ category: "wasmLoaded" });
105
+ }
106
+ function collectTransferables(value) {
107
+ if (!value || typeof value !== "object") return [];
108
+ const set = /* @__PURE__ */ new Set();
109
+ for (const v of Object.values(value)) {
110
+ if (v instanceof ArrayBuffer) {
111
+ set.add(v);
112
+ } else if (ArrayBuffer.isView(v)) {
113
+ set.add(v.buffer);
114
+ }
115
+ }
116
+ return Array.from(set);
117
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openheart/tavio-renderer",
3
- "version": "2.2.13-without-wasm",
3
+ "version": "2.3.2-with-wasm",
4
4
  "author": "OpenHeart Inc.",
5
5
  "license": "UNLICENSED",
6
6
  "description": "Rendering Engine for Tavio Format 3D data",
@@ -23,6 +23,7 @@
23
23
  "build:iife": "vite build -c vite.config.iife.ts",
24
24
  "build:wasm": "wasm/build.sh $@",
25
25
  "start": "vite -c vite.config.demo.ts",
26
+ "demo-esm": "vite -c demo-esm/vite.config.ts",
26
27
  "clean": "(test -d build && rm -r build) || true",
27
28
  "prepublishOnly": "cp README.md .README.md.bak && cp npm/README.md README.md",
28
29
  "postpublish": "mv .README.md.bak README.md"