Skip to content

Latest commit

 

History

History

README.md

Build

Using local VTK WASM build tree

This example needs VTK.wasm compiled with VTK_WEBASSEMBLY_THREADS=ON. If you're compiling with vtk-wasm-sdk image from dockerhub, make sure to use the threads variant.

Compared to AsyncClipper, the main difference in this example is that there is no main(int, char**) function and the entire application is driven from javascript through C++ functions wrapped with embind.

This example shows in detail how to create a pthread and transfer the canvas offscreen so that the new web worker can render into it. In the AsyncClipper, we used -sPROXY_TO_PTHREAD link flag which did all the tasks necessary to run our main(int, char**) on a new web worker.

emcmake cmake \
  -G Ninja \
  -S /path/to/vtk/Examples/Emscripten/Cxx/Cone \
  -B out/build \
  -DVTK_DIR=/path/to/where/vtk/wasm/was/built

cmake --build out/build

Using vtk-wasm-sdk

Linux/macOS

# Configure
docker run --rm -it \
  -v"$PWD":/work kitware/vtk-wasm-sdk:latest \
  emcmake cmake -GNinja -S /work -B /work/build -DVTK_DIR=/VTK-install/Release/wasm32-threads/lib/cmake/vtk
# Build
docker run --rm -it \
  -v"$PWD":/work kitware/vtk-wasm-sdk:latest \
  cmake --build /work/build

Windows

docker run --rm -it `
  -v"$PWD":/work kitware/vtk-wasm-sdk:latest `
  emcmake cmake -GNinja -S /work -B /work/build -DVTK_DIR=/VTK-install/Release/wasm32-threads/lib/cmake/vtk
# Build
docker run --rm -it `
  -v"$PWD":/work kitware/vtk-wasm-sdk:latest `
  cmake --build /work/build

Serve and test generated code

This example uses wasm in web workers and needs SharedArrayBuffer. For that reason, use the server.py from this directory which configures the required HTTP headers for browsers to allow SharedArrayBuffer.

cd out/build
python3 ./server.py

Open your browser to http://localhost:8000