VTK.wasm gives you VTK C++ compiled for the browser, so you can move the data processing and rendering pipelines you are already familiar with from desktop VTK to the browser through WebAssembly, WebGL, and WebGPU
import { loadAsync, type StandaloneSession } from "@kitware/vtk-wasm";
const runtime = await loadAsync({
url: "https://raw.githack.com/Kitware/vtk-wasm/dist/latest/vtk-wasm32-emscripten.tar.gz",
rendering: "webgl", // or "webgpu"
});
const session: StandaloneSession = runtime.createStandaloneSession();
const vtk = session.vtk;
const cone = vtk.vtkConeSource({ resolution: 32 });
const mapper = vtk.vtkPolyDataMapper();
mapper.setInputConnection(cone.getOutputPort());
const actor = vtk.vtkActor({ mapper });
const renderer = vtk.vtkRenderer();
renderer.addActor(actor);
const canvasSelector = session.registerCanvas("!vtk-canvas", canvas);
const interactor = vtk.vtkWebAssemblyRenderWindowInteractor({ canvasSelector });
const window = vtk.vtkWebAssemblyOpenGLRenderWindow({ interactor, canvasSelector });
window.addRenderer(renderer);
await window.render();
interactor.start();