Skip to content

Examples excluded from WASM

Some examples do not implement a live preview feature in WebAssembly. There are the reasons:

No render

A lot of examples are here to show pipelines, algorithms, or utils that does not always have a render (or whose render is not important), so we chose not to display a live preview of those that would only show you text.

Incompatible dependencies

Some examples use external dependencies that either could not be built in WebAssembly (Qt) or are not Open Source (RenderMan).

Some VTK modules aren't WASM-compatible or not fully working, like RenderingContextOpenGL2 or RenderingGL2PSOpenGL2. Those can break some examples that are then removed from VTK-Examples-WASM:

  • Images/CombineImages

  • Plotting/ChartMatrix, ChartOn3DScene, Diagram, MultiplePlots, ScatterPlot, SurfacePlot

Irrelevant features

A few examples use features that aren't relevant with WebAssembly usage (FullScreen, OpenVR).

There are examples which are just here to show different arguments for the same code (Rotations{A,B,C,D}, WalkCow{A,B}...). Those are also removed for practical reasons.

Technical considerations

In order to improve build times, stability and bandwidth, vtk-examples-wasm does not use Boost Library features even though it is provided by Emscripten Ports. This forces us to remove a few examples:

  • Graphs/AdjacentVertexIterator, BoostBreadthFirstSearchTree

  • InfoVis/MutableGraphHelper

Second issue: VTK is initially writen for OpenGL2. As VTK-WASM uses WebGL2 (OpenGL ES3), a lot of features need to be rewritten to comply with WebGL standards. It takes a lot of time, and a few examples will have to wait to be fully integrated:

  • Shaders/BozoShader, BozoShaderDemo, CubeMap, MarbleShader, MarbleShaderDemo, SpatterShader

  • Visualization/CorrectlyRenderTranslucentGeometry

  • VolumeRendering/RayCastIsosurface

At last, the fact that WebAssembly runs within the browser implies that resources are limited for the programs. We cannot give too much memory or workload to a single-threaded program running inside a browser tab.

  • Meshes/SubdivisionDemo requires ~1GB of memory to run a sufficient number of passes

  • Visualization/FroggieSurface needs to allocate a single array of 2GB.

Full list of excluded/unstable examples:


  • AnimateActors: No animation


  • VisualizeKDTree: Works but error: Built-in Dual Depth Peeling is not supported on ES3


  • CreateESGrid: ESGrid isn't rendered


  • ReadCML: vtkShaderProgram: Links failed: Varying vertexVCGSOutput has static-use in the frag shader, but is undeclared in the vert shader


  • ImageDataGeometryFilter, ImageNormalize, ImageWeightedSum: no error but render inaccurate with the screenshot


  • BackgroundImage: Background render broken

  • CombineImages: Error: GLctx is undefined

  • CombiningRGBChannels, ImageContinuousDilate3D, ImageContinuousErode3D, ImageCorrelation, ImageDifference, ImageMapper, ImageSobel2D, ImageText, ResizeImage: no error but render inaccurate with the screenshot

  • RGBToYIQ: error YIQ color space requires negative numbers


  • DelimitedTextReader: uncaught exception


  • UserEvent: does not compile: vtkTestFilter.h file not found


  • Light, LightActor: No render of lights


  • MedicalDemo4: vtkTextureObject: failed to determine texture parameters


  • PointInterpolator: uncaught exception 1584136


  • Delaunay3DDemo: no slider

  • MarchingCubes: no error but render inaccurate with the screenshot


  • HighlightSelectedPoints: selection is "all or nothing", unable to select a portion of the points


  • ChartMatrix, ChartOn3DScene, MultiplePlots, ScatterPlot: points size too small

  • Diagram: default view shows only half the image, full tab images works well

  • PlotLine3D, SurfacePlot: Shader does not compile: Uniform numClipPlanes is not linkable between attached shaders


  • CompareExtractSurface, PoissonExtractSurface: does not compile: vtkPoissonReconstruction.h file not found

  • ExtractEnclosedPoints: works but error in console: vtkMultiThreader unable to create a thread

  • PowercrustExtractSurface: does not compile: vtkPowerCrustSurfaceReconstruction.h file not found


  • ExternalContour: no render of the left element

  • HighlightBadCells: doesn't highlight


  • OutlineGlowPass: No outline

  • PBR_HDR_Environment: No mipmap generation


  • BozoShader, BozoShaderDemo, CubeMap, MarbleShader, MarbleShaderDemo, SpatterShader: could not compile vtkShaderProgram


  • BlankPoint: result unaccurate with screenshot


  • AnimateVectors: Animation not working


  • RenderScalarToFloatBuffer: warning: readPixels: Format and type RED/FLOAT incompatible with this RGBA32F attachment


  • ChooseTextColorDemo: no text shown

  • CorrectlyRenderTranslucentGeometry: works but Error: Built in Dual Depth Peeling is not supported on ES3

  • EdgePoints: doesn't show the model

  • ExtrudePolyDataAlongLine: does not compile: vtkFrenetSerretFrame.h not found

  • FroggieSurface: WebGL2RenderingContext.bufferData: Argument 2 can't be an ArrayBuffer or an ArrayBufferView larger than 2 GB

  • RandomProbe: Error: indirect call to null

  • LabeledMesh: Labels display at random positions

  • TextureMapImageData: no texture


  • FixedPointVolumeRayCastMapperCT, MinIntensityRendering, SimpleRayCast: Failed to determine texture parameters

  • RayCastIsosurface: shader failed to compile


  • CameraOrientationWidget: Widget not showing

  • SeedWidgetImage: image rendering broken