VTK 9.7.0
The VTK release team is pleased to announce the release of VTK 9.7.0. This release brings improvements to rendering architecture, AMR processing, implicit arrays with NumPy integration, and interaction styles.
Highlights
Platform-Independent Graphics Architecture
VTK 9.7 introduces an updated graphics architecture that separates rendering from windowing through the new vtkHardwareWindow abstraction layer. VTK 9.7.0 also adds native Wayland support through a dedicated interactor and extends the rendering backend through a central rendering hardware interface. On Apple platforms, that interface targets Metal and integrates with Cocoa; on Linux, it supports Vulkan across Wayland and X11; and on Windows, it maps to Direct3D and Win32 windowing. This approach gives VTK a more consistent cross-platform rendering path while preserving platform-specific windowing and event handling.
Advanced Implicit Arrays with NumPy Integration
VTK 9.7 expands support for implicit arrays with comprehensive NumPy-compatible mixins. These enhancements enable zero-copy NumPy operations on all implicit array types without materializing full arrays, lazy evaluation for arithmetic, slicing, and reductions, automatic caching with invalidation on buffer changes via BufferChangedEvent, and full Python sequence protocol support in vtkCollection subclasses. Consequently, scientists and engineers can now work with massive datasets in Python with minimal memory overhead, opening up workflows previously impractical in VTK.
AMR Processing and Geometry Extraction
VTK 9.7 adds new tools for working with adaptive mesh refinement (AMR) data and geometry extraction. vtkAMRContourFilter computes contours on AMR data by interpolating between refinement levels. vtkGeometryFilterDispatcher and vtkFeatureEdgesDispatcher handle geometry extraction and edge detection across VTK data types, and a new parallel 2D/3D Voronoi framework provides tessellation and Delaunay triangulation infrastructure for mesh generation.

Enhanced Interaction Styles
vtkInteractorStyleManipulator brings ParaView-style camera manipulation to VTK. It lets users bind camera movements to mouse buttons and modifier keys, use built-in manipulators such as trackball rotation, pan, zoom, and environment rotation, and configure custom interaction styles without subclassing.
Performance Optimizations
VTK 9.7 includes performance improvements across several components, including up to a 40x speedup in Delaunay2D with the Hilbert sorter option and about a 13x speedup in Delaunay3D with a lighter internal mesh representation. vtkExtractEdges is now multithreaded, and polyhedron algorithms now use López polygon tracing instead of triangulation for contour and clip operations.
Scientific Data Support
This release adds support for several data formats used in scientific visual workflows. Changes include full IFC Reader support for Industry Foundation Classes through the IfcOpenShell library, a FlipFaceNormals option in vtkCGNSReader to address polyhedral mesh issues, a NanoVDB Writer for exporting vtkImageData to NanoVDB, and VTKHDF updates for dataset attributes, rectilinear and structured grids, and improved caching. vtkMPASReader learned a new UsePrimaryGrid flag to visualize the primary voronoi diagram of points on the globe for MPAS simulations.

vtkMPASReaderCore Infrastructure Improvements
Several foundational improvements enhance VTK’s robustness and usability, including thread-safe weak references provided by the vtkWeakPtr<T> class and a refactored vtkCollection based on std::vector for superior performance and C++11 range-based for loop support. Additionally, memory safety is improved with BufferChangedEvent for NumPy array staleness detection, while overall Python integration is bolstered by Pythonic constructors and property setters for datasets.
WebGPU and WebAssembly Enhancements
WebGPU backend development includes skybox rendering with cube map textures and HDR support, support for all light types in WebGPU mappers, and coincident topology support to resolve z-fighting. VTK 9.7.0 adds 16-bit texture support for volume rendering on GLES 3.0 and WebAssembly, along with a WebXR module for VR and AR applications on the web.

Breaking Changes and Deprecations
VTK 9.7 includes API changes. In vtkAbstractArray, GetSize(), Resize(), and Allocate() are replaced by GetCapacity(), ReserveTuples(), and ReserveValues(), and algorithm update methods now return a boolean to indicate success or failure. APIs deprecated in VTK 9.5 have been removed, and vtkFastLabeledDataMapper has been replaced by vtkBatchedLabeledDataMapper. Developers using older VTK versions should review the full release notes for migration guidance.
Thank You
VTK 9.70 includes 75 new features, 38 enhancements, and 27 bug fixes across the codebase and was developed by the VTK community, with contributions from maintainers, users, and other contributors. We appreciate everyone who provided code, submitted bug reports, or engaged in technical discussions.
To get started with VTK 9.7.0
- Download: Visit the VTK download page.
- Documentation: Explore the VTK documentation.
- Full Release Notes: For a comprehensive list of all changes, please see the VTK 9.7.0 Release Notes
We look forward to seeing the innovations created with this release. For questions or feedback, visit the VTK community forum.
Gain access to the recorded release presentation along with a live demonstration of VTK’s new Python features by signing up for the “What’s new in VTK 9.7.0” webinar to explore detailed feature highlights.
Citing VTK
When referencing VTK in scientific research, please cite the following publication:
Schroeder, Will; Martin, Ken; Lorensen, Bill (2006), The Visualization Toolkit (4th ed.), Kitware, ISBN 978-1-93