@esengine/ecs-framework 2.0.6 → 2.0.8
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/bin/Core.js +21 -17
- package/bin/Core.js.map +1 -1
- package/bin/ECS/Component.js +5 -1
- package/bin/ECS/Component.js.map +1 -1
- package/bin/ECS/Components/IUpdatable.js +7 -2
- package/bin/ECS/Components/IUpdatable.js.map +1 -1
- package/bin/ECS/Components/SceneComponent.js +5 -1
- package/bin/ECS/Components/SceneComponent.js.map +1 -1
- package/bin/ECS/Core/BitMaskOptimizer.d.ts +75 -0
- package/bin/ECS/Core/BitMaskOptimizer.d.ts.map +1 -0
- package/bin/ECS/Core/BitMaskOptimizer.js +165 -0
- package/bin/ECS/Core/BitMaskOptimizer.js.map +1 -0
- package/bin/ECS/Core/ComponentPool.d.ts +72 -0
- package/bin/ECS/Core/ComponentPool.d.ts.map +1 -0
- package/bin/ECS/Core/ComponentPool.js +128 -0
- package/bin/ECS/Core/ComponentPool.js.map +1 -0
- package/bin/ECS/Core/ComponentStorage.js +9 -3
- package/bin/ECS/Core/ComponentStorage.js.map +1 -1
- package/bin/ECS/Core/EventSystem.js +12 -6
- package/bin/ECS/Core/EventSystem.js.map +1 -1
- package/bin/ECS/Core/FluentAPI.js +24 -17
- package/bin/ECS/Core/FluentAPI.js.map +1 -1
- package/bin/ECS/Core/IndexUpdateBatcher.d.ts +100 -0
- package/bin/ECS/Core/IndexUpdateBatcher.d.ts.map +1 -0
- package/bin/ECS/Core/IndexUpdateBatcher.js +223 -0
- package/bin/ECS/Core/IndexUpdateBatcher.js.map +1 -0
- package/bin/ECS/Core/QuerySystem.d.ts +292 -444
- package/bin/ECS/Core/QuerySystem.d.ts.map +1 -1
- package/bin/ECS/Core/QuerySystem.js +661 -1075
- package/bin/ECS/Core/QuerySystem.js.map +1 -1
- package/bin/ECS/CoreEvents.js +5 -2
- package/bin/ECS/CoreEvents.js.map +1 -1
- package/bin/ECS/Entity.js +17 -12
- package/bin/ECS/Entity.js.map +1 -1
- package/bin/ECS/Scene.d.ts +18 -2
- package/bin/ECS/Scene.d.ts.map +1 -1
- package/bin/ECS/Scene.js +67 -19
- package/bin/ECS/Scene.js.map +1 -1
- package/bin/ECS/Systems/EntitySystem.js +9 -5
- package/bin/ECS/Systems/EntitySystem.js.map +1 -1
- package/bin/ECS/Systems/IntervalSystem.js +8 -4
- package/bin/ECS/Systems/IntervalSystem.js.map +1 -1
- package/bin/ECS/Systems/PassiveSystem.js +6 -2
- package/bin/ECS/Systems/PassiveSystem.js.map +1 -1
- package/bin/ECS/Systems/ProcessingSystem.js +6 -2
- package/bin/ECS/Systems/ProcessingSystem.js.map +1 -1
- package/bin/ECS/Systems/index.js +11 -4
- package/bin/ECS/Systems/index.js.map +1 -1
- package/bin/ECS/Utils/Bits.js +5 -1
- package/bin/ECS/Utils/Bits.js.map +1 -1
- package/bin/ECS/Utils/ComponentTypeManager.js +8 -4
- package/bin/ECS/Utils/ComponentTypeManager.js.map +1 -1
- package/bin/ECS/Utils/EntityList.js +5 -1
- package/bin/ECS/Utils/EntityList.js.map +1 -1
- package/bin/ECS/Utils/EntityProcessorList.js +5 -1
- package/bin/ECS/Utils/EntityProcessorList.js.map +1 -1
- package/bin/ECS/Utils/IdentifierPool.js +5 -1
- package/bin/ECS/Utils/IdentifierPool.js.map +1 -1
- package/bin/ECS/Utils/Matcher.js +8 -4
- package/bin/ECS/Utils/Matcher.js.map +1 -1
- package/bin/ECS/Utils/index.js +15 -6
- package/bin/ECS/Utils/index.js.map +1 -1
- package/bin/ECS/index.js +27 -6
- package/bin/ECS/index.js.map +1 -1
- package/bin/Testing/Performance/benchmark.d.ts +6 -0
- package/bin/Testing/Performance/benchmark.d.ts.map +1 -0
- package/bin/Testing/Performance/benchmark.js +639 -0
- package/bin/Testing/Performance/benchmark.js.map +1 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.d.ts +2 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.d.ts.map +1 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.js +164 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.js.map +1 -0
- package/bin/Testing/Unit/component-pool.test.d.ts +5 -0
- package/bin/Testing/Unit/component-pool.test.d.ts.map +1 -0
- package/bin/Testing/Unit/component-pool.test.js +149 -0
- package/bin/Testing/Unit/component-pool.test.js.map +1 -0
- package/bin/Testing/test-runner.d.ts +51 -0
- package/bin/Testing/test-runner.d.ts.map +1 -0
- package/bin/Testing/test-runner.js +159 -0
- package/bin/Testing/test-runner.js.map +1 -0
- package/bin/Types/index.js +7 -4
- package/bin/Types/index.js.map +1 -1
- package/bin/Utils/Emitter.js +7 -2
- package/bin/Utils/Emitter.js.map +1 -1
- package/bin/Utils/Extensions/NumberExtension.js +5 -1
- package/bin/Utils/Extensions/NumberExtension.js.map +1 -1
- package/bin/Utils/Extensions/TypeUtils.js +5 -1
- package/bin/Utils/Extensions/TypeUtils.js.map +1 -1
- package/bin/Utils/Extensions/index.js +7 -2
- package/bin/Utils/Extensions/index.js.map +1 -1
- package/bin/Utils/GlobalManager.js +5 -1
- package/bin/Utils/GlobalManager.js.map +1 -1
- package/bin/Utils/PerformanceMonitor.js +7 -3
- package/bin/Utils/PerformanceMonitor.js.map +1 -1
- package/bin/Utils/Pool.js +9 -3
- package/bin/Utils/Pool.js.map +1 -1
- package/bin/Utils/Time.js +5 -1
- package/bin/Utils/Time.js.map +1 -1
- package/bin/Utils/Timers/ITimer.js +2 -1
- package/bin/Utils/Timers/Timer.js +7 -3
- package/bin/Utils/Timers/Timer.js.map +1 -1
- package/bin/Utils/Timers/TimerManager.js +8 -4
- package/bin/Utils/Timers/TimerManager.js.map +1 -1
- package/bin/Utils/WasmCore.d.ts +234 -0
- package/bin/Utils/WasmCore.d.ts.map +1 -0
- package/bin/Utils/WasmCore.js +634 -0
- package/bin/Utils/WasmCore.js.map +1 -0
- package/bin/Utils/index.d.ts +10 -0
- package/bin/Utils/index.d.ts.map +1 -1
- package/bin/Utils/index.js +36 -5
- package/bin/Utils/index.js.map +1 -1
- package/bin/index.d.ts +1 -2
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +42 -14
- package/bin/index.js.map +1 -1
- package/package.json +58 -74
- package/bin/Utils/AccelerationProvider.d.ts +0 -192
- package/bin/Utils/AccelerationProvider.d.ts.map +0 -1
- package/bin/Utils/AccelerationProvider.js +0 -261
- package/bin/Utils/AccelerationProvider.js.map +0 -1
- package/bin/Utils/WasmBridge.d.ts +0 -152
- package/bin/Utils/WasmBridge.d.ts.map +0 -1
- package/bin/Utils/WasmBridge.js +0 -336
- package/bin/Utils/WasmBridge.js.map +0 -1
package/bin/Utils/WasmBridge.js
DELETED
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebAssembly桥接工具
|
|
3
|
-
*
|
|
4
|
-
* 提供WebAssembly模块的加载、初始化和内存管理功能
|
|
5
|
-
* 为ECS框架提供高性能的底层支持
|
|
6
|
-
*/
|
|
7
|
-
// ================================
|
|
8
|
-
// 主要提供者类
|
|
9
|
-
// ================================
|
|
10
|
-
/**
|
|
11
|
-
* WebAssembly加速提供者
|
|
12
|
-
*
|
|
13
|
-
* 提供WebAssembly后端实现,主要用于高性能的实体查询操作
|
|
14
|
-
*/
|
|
15
|
-
export class WebAssemblyProvider {
|
|
16
|
-
/**
|
|
17
|
-
* 构造函数
|
|
18
|
-
* @param config WebAssembly配置选项
|
|
19
|
-
*/
|
|
20
|
-
constructor(config) {
|
|
21
|
-
this.name = 'WebAssembly';
|
|
22
|
-
this.version = '1.0.0';
|
|
23
|
-
this.isWasm = true;
|
|
24
|
-
/** 初始化状态 */
|
|
25
|
-
this.initialized = false;
|
|
26
|
-
this.config = {
|
|
27
|
-
memoryPages: 256,
|
|
28
|
-
enableSIMD: true,
|
|
29
|
-
enableThreads: false,
|
|
30
|
-
...config
|
|
31
|
-
};
|
|
32
|
-
// 创建查询功能模块的WebAssembly实现
|
|
33
|
-
this.query = new WasmQueryProvider(this);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* 初始化WebAssembly模块
|
|
37
|
-
* @throws {Error} 初始化失败时抛出错误
|
|
38
|
-
*/
|
|
39
|
-
async initialize() {
|
|
40
|
-
if (this.initialized)
|
|
41
|
-
return;
|
|
42
|
-
try {
|
|
43
|
-
const wasmBytes = await this.loadWasmBytes();
|
|
44
|
-
const wasmModule = await this.instantiateWasm(wasmBytes);
|
|
45
|
-
this.wasmModule = wasmModule;
|
|
46
|
-
this.initialized = true;
|
|
47
|
-
console.log(`✅ WebAssembly provider initialized successfully`);
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
console.error('Failed to initialize WebAssembly provider:', error);
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* 加载WASM字节码
|
|
56
|
-
* @returns WASM字节码的ArrayBuffer
|
|
57
|
-
* @private
|
|
58
|
-
*/
|
|
59
|
-
async loadWasmBytes() {
|
|
60
|
-
if (typeof fetch !== 'undefined') {
|
|
61
|
-
// 浏览器环境
|
|
62
|
-
const response = await fetch(this.config.wasmPath);
|
|
63
|
-
if (!response.ok) {
|
|
64
|
-
throw new Error(`Failed to load WASM file: ${response.statusText}`);
|
|
65
|
-
}
|
|
66
|
-
return response.arrayBuffer();
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
// Node.js环境 - 需要在运行时动态导入
|
|
70
|
-
throw new Error('Node.js environment not supported in browser build. Please use fetch() or provide ArrayBuffer directly.');
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* 实例化WASM模块
|
|
75
|
-
* @param wasmBytes WASM字节码
|
|
76
|
-
* @returns 实例化的WASM模块
|
|
77
|
-
* @private
|
|
78
|
-
*/
|
|
79
|
-
async instantiateWasm(wasmBytes) {
|
|
80
|
-
const memory = new WebAssembly.Memory({
|
|
81
|
-
initial: this.config.memoryPages,
|
|
82
|
-
maximum: this.config.memoryPages * 2
|
|
83
|
-
});
|
|
84
|
-
const imports = {
|
|
85
|
-
env: {
|
|
86
|
-
memory,
|
|
87
|
-
// 提供给WASM的JavaScript函数
|
|
88
|
-
console_log: (ptr, len) => {
|
|
89
|
-
const bytes = new Uint8Array(memory.buffer, ptr, len);
|
|
90
|
-
const str = new TextDecoder().decode(bytes);
|
|
91
|
-
console.log('[WASM]', str);
|
|
92
|
-
},
|
|
93
|
-
performance_now: () => performance.now()
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
const wasmModule = await WebAssembly.instantiate(wasmBytes, imports);
|
|
97
|
-
return wasmModule.instance.exports;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* 检查是否支持指定功能
|
|
101
|
-
* @param feature 功能名称
|
|
102
|
-
* @returns 是否支持该功能
|
|
103
|
-
*/
|
|
104
|
-
supports(feature) {
|
|
105
|
-
const supportedFeatures = [
|
|
106
|
-
'fast-query', 'batch-operations', 'memory-optimization'
|
|
107
|
-
];
|
|
108
|
-
return supportedFeatures.includes(feature);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* 获取性能信息
|
|
112
|
-
* @returns 性能统计信息
|
|
113
|
-
*/
|
|
114
|
-
getPerformanceInfo() {
|
|
115
|
-
return {
|
|
116
|
-
operationsPerSecond: 5000000, // 500万次/秒
|
|
117
|
-
memoryUsage: this.wasmModule?.memory.buffer.byteLength || 0,
|
|
118
|
-
features: [
|
|
119
|
-
'fast-query', 'batch-operations', 'memory-optimization'
|
|
120
|
-
]
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* 释放资源
|
|
125
|
-
*/
|
|
126
|
-
dispose() {
|
|
127
|
-
this.wasmModule = undefined;
|
|
128
|
-
this.initialized = false;
|
|
129
|
-
}
|
|
130
|
-
// ================================
|
|
131
|
-
// 内存管理方法
|
|
132
|
-
// ================================
|
|
133
|
-
/**
|
|
134
|
-
* 获取WASM模块(内部使用)
|
|
135
|
-
* @returns WASM模块实例
|
|
136
|
-
* @throws {Error} 模块未初始化时抛出错误
|
|
137
|
-
*/
|
|
138
|
-
getWasmModule() {
|
|
139
|
-
if (!this.wasmModule) {
|
|
140
|
-
throw new Error('WebAssembly module not initialized');
|
|
141
|
-
}
|
|
142
|
-
return this.wasmModule;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* 分配WASM内存
|
|
146
|
-
* @param size 要分配的字节数
|
|
147
|
-
* @returns 内存指针
|
|
148
|
-
*/
|
|
149
|
-
malloc(size) {
|
|
150
|
-
return this.getWasmModule().malloc(size);
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* 释放WASM内存
|
|
154
|
-
* @param ptr 内存指针
|
|
155
|
-
*/
|
|
156
|
-
free(ptr) {
|
|
157
|
-
this.getWasmModule().free(ptr);
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* 将JavaScript数组复制到WASM内存
|
|
161
|
-
* @param data 要复制的数据
|
|
162
|
-
* @returns WASM内存指针
|
|
163
|
-
*/
|
|
164
|
-
copyToWasm(data) {
|
|
165
|
-
const wasm = this.getWasmModule();
|
|
166
|
-
const ptr = wasm.malloc(data.byteLength);
|
|
167
|
-
const wasmArray = new data.constructor(wasm.memory.buffer, ptr, data.length);
|
|
168
|
-
wasmArray.set(data);
|
|
169
|
-
return ptr;
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* 从WASM内存复制到JavaScript数组
|
|
173
|
-
* @param ptr WASM内存指针
|
|
174
|
-
* @param length 元素数量
|
|
175
|
-
* @param ArrayType 数组类型构造函数
|
|
176
|
-
* @returns 复制的JavaScript数组
|
|
177
|
-
*/
|
|
178
|
-
copyFromWasm(ptr, length, ArrayType) {
|
|
179
|
-
const wasm = this.getWasmModule();
|
|
180
|
-
if (ArrayType === Float32Array) {
|
|
181
|
-
const wasmArray = new Float32Array(wasm.memory.buffer, ptr, length);
|
|
182
|
-
return wasmArray.slice();
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
const wasmArray = new Uint32Array(wasm.memory.buffer, ptr, length);
|
|
186
|
-
return wasmArray.slice();
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
// ================================
|
|
191
|
-
// 查询功能实现类
|
|
192
|
-
// ================================
|
|
193
|
-
/**
|
|
194
|
-
* WebAssembly查询实现
|
|
195
|
-
*
|
|
196
|
-
* 提供高性能的实体查询功能
|
|
197
|
-
*/
|
|
198
|
-
class WasmQueryProvider {
|
|
199
|
-
/**
|
|
200
|
-
* 构造函数
|
|
201
|
-
* @param provider WebAssembly提供者实例
|
|
202
|
-
*/
|
|
203
|
-
constructor(provider) {
|
|
204
|
-
this.provider = provider;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* 根据组件掩码查询实体
|
|
208
|
-
* @param componentMask 组件掩码
|
|
209
|
-
* @param maxResults 最大结果数量
|
|
210
|
-
* @returns 查询结果
|
|
211
|
-
*/
|
|
212
|
-
queryByComponent(componentMask, maxResults) {
|
|
213
|
-
const wasm = this.provider.getWasmModule();
|
|
214
|
-
// 注意:这里简化了bigint的处理,实际实现需要更复杂的转换
|
|
215
|
-
const maskPtr = this.provider.malloc(8);
|
|
216
|
-
const resultPtr = this.provider.malloc(maxResults * 4);
|
|
217
|
-
const count = wasm.query_by_component(maskPtr, resultPtr, maxResults);
|
|
218
|
-
const entities = this.provider.copyFromWasm(resultPtr, count, Uint32Array);
|
|
219
|
-
this.provider.free(maskPtr);
|
|
220
|
-
this.provider.free(resultPtr);
|
|
221
|
-
return { entities, count };
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* 根据多个组件掩码查询实体
|
|
225
|
-
* @param componentMasks 组件掩码数组
|
|
226
|
-
* @param maxResults 最大结果数量
|
|
227
|
-
* @returns 查询结果
|
|
228
|
-
*/
|
|
229
|
-
queryByComponents(componentMasks, maxResults) {
|
|
230
|
-
const wasm = this.provider.getWasmModule();
|
|
231
|
-
// 分配掩码数组内存
|
|
232
|
-
const masksPtr = this.provider.malloc(componentMasks.length * 8);
|
|
233
|
-
const resultPtr = this.provider.malloc(maxResults * 4);
|
|
234
|
-
// 复制掩码数据到WASM内存
|
|
235
|
-
const maskView = new BigUint64Array(wasm.memory.buffer, masksPtr, componentMasks.length);
|
|
236
|
-
maskView.set(componentMasks);
|
|
237
|
-
const count = wasm.query_by_components(masksPtr, componentMasks.length, resultPtr, maxResults);
|
|
238
|
-
const entities = this.provider.copyFromWasm(resultPtr, count, Uint32Array);
|
|
239
|
-
this.provider.free(masksPtr);
|
|
240
|
-
this.provider.free(resultPtr);
|
|
241
|
-
return { entities, count };
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* 查询包含指定组件但排除其他组件的实体
|
|
245
|
-
* @param includeMask 包含的组件掩码
|
|
246
|
-
* @param excludeMask 排除的组件掩码
|
|
247
|
-
* @param maxResults 最大结果数量
|
|
248
|
-
* @returns 查询结果
|
|
249
|
-
*/
|
|
250
|
-
queryExcluding(includeMask, excludeMask, maxResults) {
|
|
251
|
-
const wasm = this.provider.getWasmModule();
|
|
252
|
-
const includeMaskPtr = this.provider.malloc(8);
|
|
253
|
-
const excludeMaskPtr = this.provider.malloc(8);
|
|
254
|
-
const resultPtr = this.provider.malloc(maxResults * 4);
|
|
255
|
-
// 写入掩码数据
|
|
256
|
-
const includeView = new BigUint64Array(wasm.memory.buffer, includeMaskPtr, 1);
|
|
257
|
-
const excludeView = new BigUint64Array(wasm.memory.buffer, excludeMaskPtr, 1);
|
|
258
|
-
includeView[0] = includeMask;
|
|
259
|
-
excludeView[0] = excludeMask;
|
|
260
|
-
const count = wasm.query_excluding(includeMaskPtr, excludeMaskPtr, resultPtr, maxResults);
|
|
261
|
-
const entities = this.provider.copyFromWasm(resultPtr, count, Uint32Array);
|
|
262
|
-
this.provider.free(includeMaskPtr);
|
|
263
|
-
this.provider.free(excludeMaskPtr);
|
|
264
|
-
this.provider.free(resultPtr);
|
|
265
|
-
return { entities, count };
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* 更新实体的组件掩码
|
|
269
|
-
* @param entityId 实体ID
|
|
270
|
-
* @param componentMask 新的组件掩码
|
|
271
|
-
*/
|
|
272
|
-
updateEntityMask(entityId, componentMask) {
|
|
273
|
-
const wasm = this.provider.getWasmModule();
|
|
274
|
-
// 简化的mask处理,实际应该支持完整的bigint
|
|
275
|
-
wasm.update_entity_mask(entityId, Number(componentMask));
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* 批量更新实体掩码
|
|
279
|
-
* @param entityIds 实体ID数组
|
|
280
|
-
* @param masks 掩码数组
|
|
281
|
-
*/
|
|
282
|
-
batchUpdateMasks(entityIds, masks) {
|
|
283
|
-
const wasm = this.provider.getWasmModule();
|
|
284
|
-
const entityIdsPtr = this.provider.copyToWasm(entityIds);
|
|
285
|
-
const masksPtr = this.provider.malloc(masks.byteLength);
|
|
286
|
-
// 复制掩码数据
|
|
287
|
-
const maskView = new BigUint64Array(wasm.memory.buffer, masksPtr, masks.length);
|
|
288
|
-
maskView.set(masks);
|
|
289
|
-
wasm.batch_update_masks(entityIdsPtr, masksPtr, entityIds.length);
|
|
290
|
-
this.provider.free(entityIdsPtr);
|
|
291
|
-
this.provider.free(masksPtr);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
// ================================
|
|
295
|
-
// 工厂函数和工具函数
|
|
296
|
-
// ================================
|
|
297
|
-
/**
|
|
298
|
-
* 创建WebAssembly提供者的工厂函数
|
|
299
|
-
* @param wasmPath WASM文件路径
|
|
300
|
-
* @param config 可选的配置参数
|
|
301
|
-
* @returns WebAssembly提供者实例
|
|
302
|
-
*/
|
|
303
|
-
export function createWebAssemblyProvider(wasmPath, config) {
|
|
304
|
-
return new WebAssemblyProvider({
|
|
305
|
-
wasmPath,
|
|
306
|
-
...config
|
|
307
|
-
});
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* 检查WebAssembly支持
|
|
311
|
-
* @returns 是否支持WebAssembly
|
|
312
|
-
*/
|
|
313
|
-
export function isWebAssemblySupported() {
|
|
314
|
-
return typeof WebAssembly !== 'undefined' &&
|
|
315
|
-
typeof WebAssembly.instantiate === 'function';
|
|
316
|
-
}
|
|
317
|
-
/**
|
|
318
|
-
* 检查SIMD支持
|
|
319
|
-
* @returns 是否支持SIMD
|
|
320
|
-
*/
|
|
321
|
-
export async function isSIMDSupported() {
|
|
322
|
-
if (!isWebAssemblySupported())
|
|
323
|
-
return false;
|
|
324
|
-
try {
|
|
325
|
-
// 简单的SIMD检测
|
|
326
|
-
const wasmBytes = new Uint8Array([
|
|
327
|
-
0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00
|
|
328
|
-
]);
|
|
329
|
-
await WebAssembly.instantiate(wasmBytes);
|
|
330
|
-
return true;
|
|
331
|
-
}
|
|
332
|
-
catch {
|
|
333
|
-
return false;
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
//# sourceMappingURL=WasmBridge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WasmBridge.js","sourceRoot":"","sources":["../../src/Utils/WasmBridge.ts"],"names":[],"mappings":"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"}
|