$ cnpm install multimath
Core to create fast image math in WebAssembly and JS.
multimath simplifies creation of small CPU-intensive webassembly modules
with fallback to JavaScript implementations.
Built-in functions (curently - unsharp mask) are available as examples for your extensions.
npm install multimath
const mm = require('multimath')()
.use(require('multimath/lib/unsharp_mask'))
.use(require('your_custom_module'))
// Simple sync call. Will use sync wasm compile. Ok for webworkers.
// Can freeze interface at first call if wasm source is too big.
mm.unsharp_mask(rgba_buffer, width, height);
// Async init, compile all modules at once in async way.
mm.init().then(() => {
mm.unsharp_mask(rgba_buffer, width, height);
});
Create library instance. Sugar - multimath() (without new).
const mm = require('multimath')({
// Options are not mandatory, but you can disable js or ww
// implementations for testing
js: true,
wasm: true
});
Register new module, format is:
{
name: String, // default wasm module & function name to expose
fn: Function, // JS implementation
wasm_fn: Function, // WebAssembly glue
wasm_src: String // Base64 encoded WebAssembly module
}
See example implementation in lib/ folder.
Optional. Compile all wasm modules in async way. May be useful in this cases:
Probably, you will never need to use this method. Note, 3K was file is initialized in ~ 3ms.
All modules, loaded via .use(), pin their methods to current Multimath
instance. The best implementation will be selected automatically (depends on
browser features and constructor options);
Ways to go with your own modules:
./support/llvmasm_install.sh to install llvm/binaryen tools. Or use it
as base for your own.Makefile./lib/unsharp_mask as example and... of cause ./index.js.Also, see how pica use this library.
Copyright 2013 - present © cnpmjs.org | Home |