Skip to content

fvtk 9.6.2.0

Choose a tag to compare

@banesullivan banesullivan released this 22 Jun 05:20
2127e6d

First stable release. fvtk is a community fork of VTK 9.6.2, maintained by the PyVista project as a fast, trimmed, drop-in graphics backend. See the README for the full overview; these notes cover how fvtk relates to stock VTK and where it currently diverges.

Parity model

By default fvtk is byte-for-byte identical to stock VTK 9.6.2 (maxULP = 0). Positions and values are never altered. Optimizations that would reorder output are opt-in behind fvtk.EnableFast(). Three gates enforce this on every change: bit-exact (array output vs stock), render-exact (offscreen framebuffers), and PyVista's own test suite run against the built wheel.

Divergences from stock VTK 9.6.2

fvtk is a drop-in, but deliberately differs in three ways:

  • Trimmed to PyVista's module closure. Only the VTK modules and classes PyVista uses are built; the rest are dropped (notably the XDMF reader, whose vendored sources no longer compile on modern libc++). Code outside that closure is not importable.
  • Single abi3 wheel. One cp312-abi3 wheel loads on CPython 3.12 and newer. Wrapped types are heap types rather than stock's static types, so a few Python introspection details differ (for example vars(SomeVTKType) exposing __module__). Behavior and values are unchanged.
  • int32 width-relaxation. Cell-array connectivity, original-id arrays, and reader output use 32-bit storage where the index range fits, instead of stock's 64-bit. The values are identical; only the container width narrows. This trades some interop for memory: zero-copy hand-off to libraries that require int64 (such as trimesh) falls back to a copy, and 32-bit connectivity compresses slightly less.

Known PyVista gaps

The PyVista parity suite runs against every build. A small set of tests is currently deselected and tracked for follow-up: vtkDelaunay3D degenerate output (#114), the two int32 interop cases above (#117, #118), and the vtkSkybox OpenGL override (#120). The rest of PyVista's suite passes against fvtk.