@manycore/aholo-splat-transform 1.2.8 → 1.2.10

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 (97) hide show
  1. package/CHANGELOG.md +124 -113
  2. package/README.md +39 -39
  3. package/THIRD_PARTY_LICENSES.txt +1373 -1373
  4. package/bin/cli.js +125 -118
  5. package/dist/SplatData.d.ts +67 -67
  6. package/dist/SplatData.js +167 -150
  7. package/dist/constant.d.ts +3 -3
  8. package/dist/constant.js +13 -13
  9. package/dist/file/IFile.d.ts +5 -5
  10. package/dist/file/IFile.js +1 -1
  11. package/dist/file/esz.d.ts +11 -11
  12. package/dist/file/esz.js +337 -322
  13. package/dist/file/index.d.ts +8 -8
  14. package/dist/file/index.js +7 -7
  15. package/dist/file/ksplat.d.ts +12 -12
  16. package/dist/file/ksplat.js +293 -231
  17. package/dist/file/lcc.d.ts +11 -11
  18. package/dist/file/lcc.js +161 -158
  19. package/dist/file/ply.d.ts +13 -13
  20. package/dist/file/ply.js +439 -390
  21. package/dist/file/sog.d.ts +80 -80
  22. package/dist/file/sog.js +525 -494
  23. package/dist/file/splat.d.ts +6 -6
  24. package/dist/file/splat.js +119 -99
  25. package/dist/file/spz.d.ts +11 -11
  26. package/dist/file/spz.js +597 -583
  27. package/dist/file/voxel.d.ts +43 -37
  28. package/dist/file/voxel.js +411 -280
  29. package/dist/index.d.ts +33 -33
  30. package/dist/index.js +54 -54
  31. package/dist/native/index.d.ts +54 -54
  32. package/dist/native/index.js +122 -129
  33. package/dist/native/utils.d.ts +1 -0
  34. package/dist/native/utils.js +54 -0
  35. package/dist/tasks/AutoChunkLodTask.d.ts +13 -13
  36. package/dist/tasks/AutoChunkLodTask.js +117 -117
  37. package/dist/tasks/AutoLodTask.d.ts +10 -10
  38. package/dist/tasks/AutoLodTask.js +20 -20
  39. package/dist/tasks/BaseTask.d.ts +15 -15
  40. package/dist/tasks/BaseTask.js +5 -5
  41. package/dist/tasks/FlexLodTask.d.ts +12 -12
  42. package/dist/tasks/FlexLodTask.js +54 -44
  43. package/dist/tasks/ModifyTask.d.ts +9 -9
  44. package/dist/tasks/ModifyTask.js +166 -156
  45. package/dist/tasks/ReadTask.d.ts +9 -9
  46. package/dist/tasks/ReadTask.js +29 -29
  47. package/dist/tasks/SkeletonLodTask.d.ts +10 -10
  48. package/dist/tasks/SkeletonLodTask.js +176 -156
  49. package/dist/tasks/VoxelTask.d.ts +35 -30
  50. package/dist/tasks/VoxelTask.js +40 -37
  51. package/dist/tasks/WriteTask.d.ts +12 -12
  52. package/dist/tasks/WriteTask.js +70 -70
  53. package/dist/utils/BufferReader.d.ts +12 -12
  54. package/dist/utils/BufferReader.js +45 -45
  55. package/dist/utils/Logger.d.ts +11 -11
  56. package/dist/utils/Logger.js +40 -40
  57. package/dist/utils/StreamChunkDecoder.d.ts +16 -16
  58. package/dist/utils/StreamChunkDecoder.js +31 -31
  59. package/dist/utils/index.d.ts +27 -27
  60. package/dist/utils/index.js +101 -101
  61. package/dist/utils/k-means.d.ts +4 -4
  62. package/dist/utils/k-means.js +340 -341
  63. package/dist/utils/math.d.ts +46 -46
  64. package/dist/utils/math.js +350 -346
  65. package/dist/utils/quantize-1d.d.ts +4 -4
  66. package/dist/utils/quantize-1d.js +164 -164
  67. package/dist/utils/sh-rotate.d.ts +2 -2
  68. package/dist/utils/sh-rotate.js +236 -175
  69. package/dist/utils/splat.d.ts +21 -21
  70. package/dist/utils/splat.js +397 -387
  71. package/dist/utils/voxel/binary.d.ts +8 -0
  72. package/dist/utils/voxel/binary.js +176 -0
  73. package/dist/utils/voxel/common.d.ts +178 -162
  74. package/dist/utils/voxel/common.js +1752 -1682
  75. package/dist/utils/voxel/coplanar-merge.d.ts +63 -63
  76. package/dist/utils/voxel/coplanar-merge.js +818 -819
  77. package/dist/utils/voxel/filter-cluster.d.ts +20 -0
  78. package/dist/utils/voxel/filter-cluster.js +628 -0
  79. package/dist/utils/voxel/gpu-dilation.d.ts +2 -2
  80. package/dist/utils/voxel/gpu-dilation.js +677 -656
  81. package/dist/utils/voxel/marching-cubes.d.ts +42 -42
  82. package/dist/utils/voxel/marching-cubes.js +1645 -1657
  83. package/dist/utils/voxel/mesh.d.ts +3 -3
  84. package/dist/utils/voxel/mesh.js +130 -130
  85. package/dist/utils/voxel/nav.d.ts +29 -29
  86. package/dist/utils/voxel/nav.js +1068 -1043
  87. package/dist/utils/voxel/postprocess.d.ts +23 -23
  88. package/dist/utils/voxel/postprocess.js +408 -375
  89. package/dist/utils/voxel/voxel-faces.d.ts +18 -18
  90. package/dist/utils/voxel/voxel-faces.js +662 -663
  91. package/dist/utils/voxel/voxelize.d.ts +34 -33
  92. package/dist/utils/voxel/voxelize.js +1208 -1193
  93. package/dist/utils/webgpu.d.ts +8 -8
  94. package/dist/utils/webgpu.js +122 -122
  95. package/package.json +38 -39
  96. package/dist/native/cpp/bin/linux/binding.node +0 -0
  97. package/dist/native/cpp/bin/windows/binding.node +0 -0
@@ -1,8 +1,8 @@
1
- export declare function enumerateAdapters(): Promise<{
2
- index: number;
3
- name: string;
4
- }[]>;
5
- export declare function initGPUAdapter(options?: string[]): void;
6
- export declare function createDevice(): Promise<GPUDevice>;
7
- declare const getOrCreateDevice: () => Promise<GPUDevice>, releaseSharedDevice: () => void;
8
- export { getOrCreateDevice, releaseSharedDevice };
1
+ export declare function enumerateAdapters(): Promise<{
2
+ index: number;
3
+ name: string;
4
+ }[]>;
5
+ export declare function initGPUAdapter(options?: string[]): void;
6
+ export declare function createDevice(): Promise<GPUDevice>;
7
+ declare const getOrCreateDevice: () => Promise<GPUDevice>, releaseSharedDevice: () => void;
8
+ export { getOrCreateDevice, releaseSharedDevice };
@@ -1,122 +1,122 @@
1
- /// <reference types="@webgpu/types" />
2
- import { createRequire } from 'node:module';
3
- import { logger } from './index.js';
4
- const getModule = (function () {
5
- let m = undefined;
6
- return function () {
7
- if (!m) {
8
- m = createRequire(import.meta.url)('webgpu');
9
- Object.assign(globalThis, m.globals);
10
- }
11
- return m;
12
- };
13
- })();
14
- let gpu = undefined;
15
- // Get Dawn's actual adapter names by triggering its error message.
16
- // This is the official documented method for enumerating adapters:
17
- // https://github.com/dawn-gpu/node-webgpu?tab=readme-ov-file#usage
18
- async function getDawnAdapterNames() {
19
- try {
20
- const gpu = getModule().create(['adapter=__list_adapters__']);
21
- await gpu.requestAdapter();
22
- }
23
- catch (e) {
24
- // Parse Dawn's error message to extract adapter names
25
- const message = e instanceof Error ? e.message : String(e);
26
- const lines = message.split('\n');
27
- const names = [];
28
- for (const line of lines) {
29
- // Look for lines like: " * backend: 'd3d12', name: 'NVIDIA RTX A2000 8GB Laptop GPU'"
30
- const match = line.match(/name:\s*'([^']+)'/);
31
- if (match) {
32
- names.push(match[1]);
33
- }
34
- }
35
- return names;
36
- }
37
- // Unexpected: requestAdapter should have thrown with invalid adapter name
38
- logger.warn('Expected adapter enumeration to throw an error, but it did not.');
39
- return [];
40
- }
41
- ;
42
- // Cache enumerated adapters so we don't query Dawn multiple times
43
- let cachedAdapters = null;
44
- export async function enumerateAdapters() {
45
- if (cachedAdapters) {
46
- return cachedAdapters;
47
- }
48
- try {
49
- logger.info('Detecting GPU adapters...');
50
- // Get the actual adapter names directly from Dawn
51
- const dawnAdapterNames = await getDawnAdapterNames();
52
- // Cache and return the list
53
- cachedAdapters = dawnAdapterNames.map((name, index) => ({
54
- index,
55
- name
56
- }));
57
- return cachedAdapters;
58
- }
59
- catch (e) {
60
- logger.error('Failed to enumerate adapters. Error:');
61
- logger.error(e);
62
- logger.error('\nThis usually means WebGPU is not available. Please ensure:');
63
- logger.error(' - Your GPU drivers are up to date');
64
- logger.error(' - Your GPU supports Vulkan, D3D12, or Metal');
65
- return [];
66
- }
67
- }
68
- ;
69
- export function initGPUAdapter(options = []) {
70
- if (!gpu) {
71
- logger.info(`Init WebGPU adapter${options.length > 0 ? ` with [${options.join(';')}]` : '.'}`);
72
- gpu = getModule().create(options);
73
- }
74
- }
75
- export async function createDevice() {
76
- initGPUAdapter();
77
- const adapter = await gpu.requestAdapter({
78
- powerPreference: 'high-performance'
79
- });
80
- if (!adapter) {
81
- throw new Error(`No available WebGPU adapter found.`);
82
- }
83
- const device = await adapter.requestDevice({
84
- requiredFeatures: Array.from(adapter.features),
85
- requiredLimits: adapter.limits
86
- });
87
- if (!device) {
88
- throw new Error('Create WebGPU device failed.');
89
- }
90
- logger.info(`WebGPU device created: ${device.adapterInfo.vendor}, ${device.adapterInfo.device}, ${device.adapterInfo.description}`);
91
- device.addEventListener('uncapturederror', (event) => {
92
- const error = event.error;
93
- const type = error?.type ? ` (${error.type})` : '';
94
- logger.error(`WebGPU uncaptured error${type}: ${error?.message ?? String(error)}`);
95
- });
96
- device.lost.then((info) => {
97
- const message = info.message ? `, message=${info.message}` : '';
98
- if (info.reason === 'destroyed') {
99
- return;
100
- }
101
- logger.warn(`WebGPU device lost unexpectedly: reason=${info.reason}${message}`);
102
- }).catch((e) => {
103
- logger.error(`WebGPU device lost handler failed: ${e instanceof Error ? e.message : String(e)}`);
104
- });
105
- return device;
106
- }
107
- const { getOrCreateDevice, releaseSharedDevice } = (function () {
108
- let device = undefined;
109
- return {
110
- async getOrCreateDevice() {
111
- if (!device) {
112
- device = await createDevice();
113
- }
114
- return device;
115
- },
116
- releaseSharedDevice() {
117
- device?.destroy();
118
- device = undefined;
119
- }
120
- };
121
- })();
122
- export { getOrCreateDevice, releaseSharedDevice };
1
+ /// <reference types="@webgpu/types" />
2
+ import { createRequire } from 'node:module';
3
+ import { logger } from './index.js';
4
+ const getModule = (function () {
5
+ let m = undefined;
6
+ return function () {
7
+ if (!m) {
8
+ m = createRequire(import.meta.url)('webgpu');
9
+ Object.assign(globalThis, m.globals);
10
+ }
11
+ return m;
12
+ };
13
+ })();
14
+ let gpu = undefined;
15
+ // Get Dawn's actual adapter names by triggering its error message.
16
+ // This is the official documented method for enumerating adapters:
17
+ // https://github.com/dawn-gpu/node-webgpu?tab=readme-ov-file#usage
18
+ async function getDawnAdapterNames() {
19
+ try {
20
+ const gpu = getModule().create(['adapter=__list_adapters__']);
21
+ await gpu.requestAdapter();
22
+ }
23
+ catch (e) {
24
+ // Parse Dawn's error message to extract adapter names
25
+ const message = e instanceof Error ? e.message : String(e);
26
+ const lines = message.split('\n');
27
+ const names = [];
28
+ for (const line of lines) {
29
+ // Look for lines like: " * backend: 'd3d12', name: 'NVIDIA RTX A2000 8GB Laptop GPU'"
30
+ const match = line.match(/name:\s*'([^']+)'/);
31
+ if (match) {
32
+ names.push(match[1]);
33
+ }
34
+ }
35
+ return names;
36
+ }
37
+ // Unexpected: requestAdapter should have thrown with invalid adapter name
38
+ logger.warn('Expected adapter enumeration to throw an error, but it did not.');
39
+ return [];
40
+ }
41
+ // Cache enumerated adapters so we don't query Dawn multiple times
42
+ let cachedAdapters = null;
43
+ export async function enumerateAdapters() {
44
+ if (cachedAdapters) {
45
+ return cachedAdapters;
46
+ }
47
+ try {
48
+ logger.info('Detecting GPU adapters...');
49
+ // Get the actual adapter names directly from Dawn
50
+ const dawnAdapterNames = await getDawnAdapterNames();
51
+ // Cache and return the list
52
+ cachedAdapters = dawnAdapterNames.map((name, index) => ({
53
+ index,
54
+ name,
55
+ }));
56
+ return cachedAdapters;
57
+ }
58
+ catch (e) {
59
+ logger.error('Failed to enumerate adapters. Error:');
60
+ logger.error(e);
61
+ logger.error('\nThis usually means WebGPU is not available. Please ensure:');
62
+ logger.error(' - Your GPU drivers are up to date');
63
+ logger.error(' - Your GPU supports Vulkan, D3D12, or Metal');
64
+ return [];
65
+ }
66
+ }
67
+ export function initGPUAdapter(options = []) {
68
+ if (!gpu) {
69
+ logger.info(`Init WebGPU adapter${options.length > 0 ? ` with [${options.join(';')}]` : '.'}`);
70
+ gpu = getModule().create(options);
71
+ }
72
+ }
73
+ export async function createDevice() {
74
+ initGPUAdapter();
75
+ const adapter = await gpu.requestAdapter({
76
+ powerPreference: 'high-performance',
77
+ });
78
+ if (!adapter) {
79
+ throw new Error(`No available WebGPU adapter found.`);
80
+ }
81
+ const device = await adapter.requestDevice({
82
+ requiredFeatures: Array.from(adapter.features),
83
+ requiredLimits: adapter.limits,
84
+ });
85
+ if (!device) {
86
+ throw new Error('Create WebGPU device failed.');
87
+ }
88
+ logger.info(`WebGPU device created: ${device.adapterInfo.vendor}, ${device.adapterInfo.device}, ${device.adapterInfo.description}`);
89
+ device.addEventListener('uncapturederror', event => {
90
+ const error = event.error;
91
+ const type = error?.type ? ` (${error.type})` : '';
92
+ logger.error(`WebGPU uncaptured error${type}: ${error?.message ?? String(error)}`);
93
+ });
94
+ device.lost
95
+ .then(info => {
96
+ const message = info.message ? `, message=${info.message}` : '';
97
+ if (info.reason === 'destroyed') {
98
+ return;
99
+ }
100
+ logger.warn(`WebGPU device lost unexpectedly: reason=${info.reason}${message}`);
101
+ })
102
+ .catch(e => {
103
+ logger.error(`WebGPU device lost handler failed: ${e instanceof Error ? e.message : String(e)}`);
104
+ });
105
+ return device;
106
+ }
107
+ const { getOrCreateDevice, releaseSharedDevice } = (function () {
108
+ let device = undefined;
109
+ return {
110
+ async getOrCreateDevice() {
111
+ if (!device) {
112
+ device = await createDevice();
113
+ }
114
+ return device;
115
+ },
116
+ releaseSharedDevice() {
117
+ device?.destroy();
118
+ device = undefined;
119
+ },
120
+ };
121
+ })();
122
+ export { getOrCreateDevice, releaseSharedDevice };
package/package.json CHANGED
@@ -1,39 +1,38 @@
1
- {
2
- "name": "@manycore/aholo-splat-transform",
3
- "version": "1.2.8",
4
- "description": "Transform & filter Gaussian splats file",
5
- "author": "egs",
6
- "repository": "https://github.com/manycoretech/aholo-viewer.git",
7
- "license": "UNLICENSED",
8
- "engines": {
9
- "node": ">= 22.22.1"
10
- },
11
- "type": "module",
12
- "bin": {
13
- "splat-transform": "bin/cli.js"
14
- },
15
- "os": [
16
- "win32",
17
- "linux"
18
- ],
19
- "cpu": [
20
- "x64"
21
- ],
22
- "files": [
23
- "dist/",
24
- "CHANGELOG.md",
25
- "COPYRIGHT.md",
26
- "THIRD_PARTY_LICENSES.txt"
27
- ],
28
- "dependencies": {
29
- "commander": "^14.0.2",
30
- "fflate": "^0.8.2",
31
- "tslib": "^2.8.1",
32
- "webgpu": "^0.4.0"
33
- },
34
- "binary": {
35
- "napi_versions": [
36
- 8
37
- ]
38
- }
39
- }
1
+ {
2
+ "name": "@manycore/aholo-splat-transform",
3
+ "version": "1.2.10",
4
+ "description": "Transform & filter Gaussian splats file",
5
+ "author": "egs",
6
+ "repository": "https://github.com/manycoretech/aholo-viewer.git",
7
+ "license": "UNLICENSED",
8
+ "keywords": [
9
+ "aholo",
10
+ "cli",
11
+ "3d-gaussian-splatting",
12
+ "gaussian-splatting"
13
+ ],
14
+ "engines": {
15
+ "node": ">= 22.22.1"
16
+ },
17
+ "type": "module",
18
+ "bin": {
19
+ "splat-transform": "bin/cli.js"
20
+ },
21
+ "files": [
22
+ "dist/",
23
+ "CHANGELOG.md",
24
+ "COPYRIGHT.md",
25
+ "THIRD_PARTY_LICENSES.txt"
26
+ ],
27
+ "dependencies": {
28
+ "commander": "^14.0.2",
29
+ "fflate": "^0.8.2",
30
+ "tslib": "^2.8.1",
31
+ "webgpu": "^0.4.0"
32
+ },
33
+ "optionalDependencies": {
34
+ "@manycore/aholo-splat-transform-darwin-arm64": "1.2.10",
35
+ "@manycore/aholo-splat-transform-linux-x64-gnu": "1.2.10",
36
+ "@manycore/aholo-splat-transform-win32-x64-msvc": "1.2.10"
37
+ }
38
+ }