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.
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:
package.json
./lib/unsharp_mask
as example and... of cause ./index.js
.Also, see how pica use this library.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4