This project has been superseded by Google's CanvasKit
Port of the Skia drawing library to wasm, for use in node & browser.
Skia is the drawing library used by Chrome and Firefox to provide the actual rendering of web pages.
Currently a limited set of skia functions are defined (wip), so the library is not very usable yet. You do get a static archive that contains all llvm bitcode needed to generate the final wasm, as well as a script to generate this llvm bitcode from Skia sources. This library will become usable as soon as enough bindings are defined.
An example is currently available under
example_star.js that can be run with node. Running in the
browser is also possible if the png file saving is adjusted accordingly. The example exactly matches the one found
on the Skia website.
example_star.js demonstrates path rendering:
example_gradient.js demonstrates gradient shader:
example_text.js demonstrates font rendering:
Skia WASM can also run in the browser while utilizing a WebGL accelerated back-end. This however requires some modifications to the existing Skia code, which is expected to be implemented upstream in the future. The provided Skia bitcode in this repository includes the needed WebGL changes. More information can be found here
Bindings are defined using Embind.
Currently defined bindings live in
This library requires git lfs
Make sure you have the emscripten sdk installed. Current code has been tested on the linux-incoming-64bit version.
Make sure you define the correct paths in
build_bindings.sh and run
build_bindings.sh. You should get a
skia.wasm file. To test the build, simply run
Building Skia bitcode
Clone the official Skia git repository and copy over the
build_skia_wasm_bitcode.sh script together with the
then simply execute
bash build_skia_wasm_bitcode.sh. Make sure you define the correct paths in the build script!