@cesium/engine
Version:
CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.
35 lines (28 loc) • 1.13 kB
JavaScript
import createTaskProcessorWorker from "./createTaskProcessorWorker.js";
import defined from "../Core/defined.js";
import { initSync, radix_sort_gaussians_indexes } from "@cesium/wasm-splats";
//load built wasm modules for sorting. Ensure we can load webassembly and we support SIMD.
async function initWorker(parameters, transferableObjects) {
// Require and compile WebAssembly module, or use fallback if not supported
const wasmConfig = parameters.webAssemblyConfig;
if (defined(wasmConfig) && defined(wasmConfig.wasmBinary)) {
initSync({ module: wasmConfig.wasmBinary });
return true;
}
}
function generateGaussianSortWorker(parameters, transferableObjects) {
// Handle initialization
const wasmConfig = parameters.webAssemblyConfig;
if (defined(wasmConfig)) {
return initWorker(parameters, transferableObjects);
}
const { primitive, sortType } = parameters;
if (sortType === "Index") {
return radix_sort_gaussians_indexes(
primitive.positions,
primitive.modelView,
primitive.count,
);
}
}
export default createTaskProcessorWorker(generateGaussianSortWorker);