@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.
- package/build/esm/index.js +1172 -279
- package/build/esm/types/types/global.d.ts +8 -4
- package/build/esm/types/viewer/canvas.d.ts +86 -5
- package/build/esm/types/viewer/materialGenerator.d.ts +120 -0
- package/build/esm/types/viewer/tavioMesh.d.ts +15 -27
- package/build/esm/types/wasm-bindings/wasm-handlers.d.ts +37 -0
- package/build/esm/types/wasm-bindings/wasm-pkg-base-url.d.ts +6 -0
- package/build/esm/types/wasm-bindings/wasm-worker-client.d.ts +68 -11
- package/build/esm/wasm/pkg/no-thread/tavio.d.ts +35 -20
- package/build/esm/wasm/pkg/no-thread/tavio.js +354 -98
- package/build/esm/wasm/pkg/no-thread/tavio_bg.wasm +0 -0
- package/build/esm/wasm/pkg/no-thread/tavio_bg.wasm.d.ts +18 -11
- package/build/esm/wasm/pkg/thread/tavio.d.ts +38 -23
- package/build/esm/wasm/pkg/thread/tavio.js +398 -141
- package/build/esm/wasm/pkg/thread/tavio_bg.wasm +0 -0
- package/build/esm/wasm/pkg/thread/tavio_bg.wasm.d.ts +21 -14
- package/build/esm/wasm-worker-CEuC2YyS.js +117 -0
- package/package.json +2 -1
|
Binary file
|
|
@@ -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
|
|
7
|
-
export const
|
|
8
|
-
export const
|
|
9
|
-
export const
|
|
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
|
|
27
|
-
export const
|
|
28
|
-
export const
|
|
29
|
-
export const
|
|
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
|
|
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"
|