9.7#
Released on 2026-08-14.
VTK 9.7 Release Notes#
Changes made since VTK 9.6.2 include the following.
New Features#
Build#
PCH Support Added PCH support in the build, which can be toggled using the
VTK_USE_PCHoption. (Author notes)Improve JPEG performances using SIMD libjpeg-turbo can now be compiled with SIMD extensions via
VTK_JPEG_ENABLE_SIMDoption for better performance.CMake Support for Wayland FindWAYLAND.cmake enables straightforward building with Wayland support via
VTK_USE_Waylandoption. (Author notes)
Core#
vtkGetConstObjectMacro VTK now provides
vtkGetConstObjectMacroinvtkSetGet.hto generate const-correct getter methods forvtkObjectmember variables. (Author notes)vtkAbstractArray: Add GetCapacity(), ReserveTuples(), and ReserveValues() New methods clarify array storage semantics.
GetSize(),Resize(), andAllocate()are now deprecated in favor of clearer semantics matchingstd::vectorbehavior. (Author notes)Add SetBuffer() for AOS and SOA Data Array Templates
vtkAOSDataArrayTemplateandvtkSOADataArrayTemplatenow supportSetBuffer()for zero-copy buffer transfers;BufferChangedEventfires on buffer reallocation. (Author notes)vtkWeakPtr: Thread-safe weak references New
vtkWeakPtr<T>class provides thread-safe weak references tovtkObjectBaseinstances, complementing the non-thread-safevtkWeakPointer. (Author notes)vtkCollection refactor to use std::vector
vtkCollectionnow usesstd::vectorinstead of linked list, improving performance;vtkCollectionElementand some protected members removed. (Author notes)vtkCollection: Add support for range-based for loops
vtkCollectionnow supports C++11 range-based for loops;vtkCollectionIteratorandvtkCollectionSimpleIteratorare deprecated. (Author notes)vtkCollection now supports Python sequence protocol
vtkCollectionsubclasses now supportlen(), indexing, membership testing, and Pythonic mutation methods (append,insert,remove,clear). (Author notes)vtkAbstractTransform can update attribute only
vtkAbstractTransformnow allows transforming only data arrays (normals/vectors) without forcing geometry transformation via new virtual methods.Add new AllToAllVVoidArray method in vtkCommunicator
AllToAllVVoidArrayfrom MPI is now available invtkCommunicatorfor distributing variable-size data across all processes.
DataModel#
Implicit Arrays with NumPy-Compatible Python Mixins All implicit array types (
vtkAffineArray,vtkCompositeArray,vtkConstantArray,vtkIndexedArray,vtkStridedArray,vtkStructuredPointArray) now provide NumPy-compatible mixins supporting lazy arithmetic, efficient reductions, and zero-copy operations without materialization. (Author notes)vtkBuffer Python Integration and NumPy Memory Safety
vtkBuffernow provides full buffer protocol support for zero-copy NumPy views;BufferChangedEventdetects stale arrays. (Author notes)Dataset attribute property setters and pandas/xarray conversion Dataset objects now support
point_data/cell_dataproperty setters accepting dictionaries;FieldDataBaseprovidesto_pandas(),from_pandas(),to_xarray(),from_xarray().Pythonic APIs for vtkCellArray, vtkPoints, and vtkUnstructuredGrid
vtkCellArray,vtkPoints, andvtkUnstructuredGridnow support Pythonic constructors accepting NumPy arrays or Python lists with improved string representations.vtkAMRBox::Add API
vtkAMRBoxnow provides API to add multiple boxes together, growing to contain all provided boxes.Improved vtkCellGrid support in data model and filters
vtkDataObject::GetAttributesAsFieldData,vtkAttributeDataToTableFiltersupport, andvtkCellGridSummaryInformationQueryadded. (Author notes)
Filters#
Add vtkAMRContourFilter A new filter computes perfectly watertight contours on
vtkOverlappingAMRby creating interfaces between non-refined and refined grids of an AMR. (Author notes)Rough face
Refined face
Interface face



Geometry and Feature Edges Dispatcher Filters Two new dispatcher filters (
vtkGeometryFilterDispatcherandvtkFeatureEdgesDispatcher) provide unified geometry extraction and feature edge detection across all VTK data types. (Author notes)Add vtkConvexHull filter New
vtkPointSetAlgorithmcomputes convex hulls in 1/2/3D with O(n), O(n log n), or O(n log n) average complexity respectively.vtkHilbertCurveSorter: Space-Filling Curve Ordering New filter sorts data points along a Hilbert curve for locality-preserving space-filling curve ordering.
vtkJumpAndWalkCellLocator: A new cell locator based on Jump and Walk algorithm New
vtkAbstractCellLocatorsubclass implementing jump-and-walk algorithm;vtkFindCellStrategyclasses deprecated. (Author notes)Add vtkPTemporalPathLineFilter for partitioned dataset support Extends
vtkTemporalPathLineFilterwithvtkPartitionedDataSetsupport and parallel selection allgather.Add vtkSurfaceNetsAtlas New filter exposes SurfaceNets output as queryable label atlas with regions and patches; extensive API for post-processing. (Author notes)
Voronoi Framework New parallel 2D/3D Voronoi tessellation and Delaunay triangulation framework with
vtkVoronoiFlower2D/3DandvtkGeneralizedSurfaceNets3Dfilters. (Author notes)
I/O#
CanReadFile support Extended
CanReadFilesupport to 22 readers includingvtkDataSetReader,vtkXMLReader,vtkSTLReader,vtkGLTFImporter, and more.Added an IFC reader based on IfcOpenShell library New
vtkIFCReaderimports Industry Foundation Classes (BIM) data, converting parametric surfaces to meshes using OpenCascade.CGNS Polyhedron Flip Face Orientation
vtkCGNSReadernow hasFlipFaceNormalsoption to correct inconsistent face winding in polyhedral datasets.OBJ reader/writer RGB/RGBA color array support
vtkOBJReadernow reads color data from OBJ files;vtkOBJWritercan write color arrays when manually configured.PLY reader/writer texture coordinates (s, t) support
vtkPLYReadernow reads (s, t) texture coordinates;vtkPLYWritersupportsSetTextureCoordinatesNameToST.vtkGLTFImporter: Detect binary stream automatically
vtkGLTFImporternow automatically detects binary streams;StreamIsBinaryproperty deprecated.vtkGLTFExporter: Export object names to glTF files
vtkGLTFExporternow uses actor object names for mesh and node names in exported glTF files.NanoVDB writer New
vtkNanoVDBWriterexportsvtkImageDatato NanoVDB file format.VTKHDF: Add support for dataset attributes VTKHDF now supports dataset attributes (normals, scalars, global ids, etc.) via HDF5 ‘Attribute’ field; version bumped to 2.6.
vtkRectilinearGrid & vtkStructuredGrid support in VTKHDF VTKHDF specification now supports Rectilinear and Structured Grids with both simple and time-dependent data.
vtkMPASReader: Read primary grid from MPAS
vtkMPASReadernow supportsUsePrimaryGridoption to read Voronoi primary grid instead of Delaunay dual grid. (Author notes)vtkFidesReader supports reading from Conduit nodes
vtkFidesReadernow allows passing in-memory Conduit nodes directly, bypassing the filesystem entirely. Supports both C++ and Python interfaces with automatic reference counting. (Author notes)New vtkTestUtilities API to test data against file
vtkTestUtilities::CompareWithFile()andRegressionTest()provide easy VTKHDF data comparison; writes baseline on failure.
Interaction#
Camera Manipulators Enhanced VTK now provides a simpler way to bind different kinds of camera movement to a combination of mouse button and modifier keys using
vtkInteractorStyleManipulator. (Author notes)Widget reference tracking Interactor now maintains references to
vtkInteractorObserverwidgets whenTrackInteractorObserverInstancesenabled; all VTK widgets updated.Add zSpace custom stylus events zSpace module now supports custom stylus events via
vtkZSpaceSDKManagerconfiguration; public event handlers removed.vtkCameraOrientationWidget supports rotating about CenterOfRotation
vtkCameraOrientationWidgetnow respects the center of rotation provided by the associated interactor style. A newUseCenterOfRotationproperty (defaultfalse) controls this: when disabled (legacy default) the widget rotates the camera about its focal point, and when enabled it rotates about the interactor style’s center of rotation (vtkInteractorStyle::GetCenterOfRotation).
Rendering#
Add skybox blur capability
vtkRenderernow supports skybox blurring viaSetSkyboxBlurEnabled()andSetSkyboxBlurRadius().
Add skybox rendering support in WebGPU WebGPU backend now supports skybox rendering with cube map textures and Float32Filterable feature for HDR.
ANARI material library support Unified
vtkRenderMaterialLibrarybase class withvtkANARIMaterialLibraryandvtkOSPRayMaterialLibraryimplementations. (Author notes)macOS now supports corner resize mouse cursors
vtkCocoaRenderWindowandvtkCocoaHardwareWindownow support corner resize cursors on macOS 15 Sequoia.Architectural Update: Hardware Window, Wayland, and WebGPU Major architectural overhaul separating graphics from windowing via
vtkHardwareWindow; native Wayland, WebGPU, Metal support added. (Author notes)Support 16-bit Textures on GLES 3.0 and WebAssembly Comprehensive 16-bit texture support with GL_EXT_texture_norm16 detection and GPU-assisted conversion strategies. (Author notes)
WebGPU Lighting and Coincident Topology Support WebGPU backend now supports all VTK light types and coincident topology depth offsets for z-fighting resolution.
vtkBatchedLabeledDataMapper: Implementation New backend-agnostic
vtkBatchedLabeledDataMapperwith glyph atlas batching;vtkFastLabeledDataMapperdeprecated. (Author notes)vtkAxis: Vertical labels support
vtkAxisnow supports vertical label orientation viaSetVerticalLabels().vtkAxis: Avoid overlapping labels
vtkAxisnow supportsSetOverlappingLabels(false)to prevent label overlap.
WebAssembly#
Add WebXR Module New
Rendering/WebXRmodule provides VR/AR support on web via WebXR API with Emscripten compilation.Use HTML canvas in VTK.wasm without id
specialHTMLTargetsmapping allows interfacing HTML canvas elements without id attributes.Session management: Print Objects To String
vtkStandaloneSessionnow supports printing VTK object information to strings in WASM; JavaScript API updated.Add methods to clean up observers in vtkSession
vtkSessionC API now providesUnObserveAllmethods for observer cleanup; exposed in WASM session interface.
Python#
Look up algorithms in a Pipeline by object_name
Pipelinenow supportspipeline[name]lookup to find algorithms bySetObjectName()without holding references.Dictionary interface for vtkDataArraySelection
vtkDataArraySelectionnow supports a Python dictionary interface for getting, setting, and deleting array enable/disable states using standard dictionary syntax (sel["Pressure"] = True). (Author notes)
ThirdParty#
Add a Conduit module
VTK::conduitmodule allows external Conduit dependency;ORDER_DEPENDSenforces consistency withVTK::catalyst.
Changes#
Build#
Name targets after library names VTK module targets are now named after their library names (e.g., vtkCommonCore) to avoid conflicts with vendored dependencies.
vtkModuleWrapPython renames Python module targets Python module targets now use
Pyprefix to avoid naming conflicts between module and Python variant targets.Python 3.10 is now minimum supported Official support for Python 3.9 has been dropped; VTK now requires Python 3.10 or later.
Switch VTK_ENABLE_OSPRAY default to OFF
VTK_ENABLE_OSPRAYoption now defaults to OFF; users must manually enable it when building the RenderingRaytracing module.
Core#
Convert implicit arrays to templated classes
vtkAffineArray,vtkCompositeArray,vtkConstantArray, and others are now concrete templated classes instead of typedefs, allowing Python instantiation.Deprecate classes/functions that use GetVoidPointer()
vtkSMPContourGrid,vtkSMPMergePoints, and others deprecated; new array ranges extended to support all concrete array subclasses. (Author notes)vtkDataArrayAccessor: Replace with vtk::DataArrayRange
vtkDataArrayAccessorusage replaced with more modernvtk::DataArrayValueRangeandvtk::DataArrayTupleRangethroughout codebase.
DataModel#
Rename VTKCompositeDataArray to VTKPartitionedArray
VTKCompositeDataArrayextracted and renamed toVTKPartitionedArray; legacy class remains for backward compatibility.
Filters#
vtkAggregateDataSetFilter: Add Target Process New
TargetProcessproperty controls whether data aggregates toROOT_PROCESSorPROCESS_WITH_MOST_POINTS.Deprecate vtkImageThreshold and switch to vtkImageBinaryThreshold
vtkImageThresholddeprecated in favor ofvtkImageBinaryThresholdwith clearer API for threshold modes.
I/O#
Proper caching in vtkHDFReader
vtkHDFReadercaching reworked for all types includingvtkPartitionedDataSetCollectionandvtkMultiBlockDataSet;UseCachenow true by default. (Author notes)Deserialize functions return status Deserialization functions now return bool status indicating success/failure; previously returned void.
vtkWriter::Write() now return the correct value
vtkWriter::Write()now returns false on failure;vtkWriter::WriteDatadeprecated in favor ofWriteDataAndReturn.
Interaction#
CenterOfRotation moved up to vtkInteractorStyle The
CenterOfRotationproperty previously defined onvtkInteractorStyleManipulatornow lives on thevtkInteractorStylebase class. Existing code is unaffected since the accessors keep the same signatures and are simply inherited; all interactor styles now expose the property, so classes outsideVTK::InteractionStyle(for example camera-manipulating widgets) can read and write the center of rotation without depending on a concrete style subclass.
Rendering#
Change lookup table log scale debug type
vtkLookUpTablenow logs Warning instead of Debug when log scale set with invalid table range.Modify vtkRenderer’s protected member
vtkRenderer::PropArrayCountremoved;PropArrayreplaced withstd::vector;vtkSkyboxkept separate inBackgroundProp.Update required Dawn version for WebGPU builds Required Dawn version for WebGPU builds updated to v20260421.125655.
Bump ANARI version to v0.15.0 ANARI library tested and supported at latest version v0.15.0.
WebAssembly#
Make vtkOpenXRManager private
vtkOpenXRManagermoved tovtk::detail::vtkOpenXRManager; public API moved tovtkOpenXRRenderWindow.Remote sessions drop deserialization constructors unsuitable for the web
vtkRemoteSessionnow removes the deserialization constructors of all classes that cannot work on the web platform, generalizing the earlier handling that only droppedvtkOpenGLPolyDataMapperandvtkOpenGLPolyDataMapper2D. States naming such classes fall back to the nearest superclass constructor; for example a state namingvtkGenericRenderWindowInteractornow constructs throughvtkRenderWindowInteractor, whose object factory instantiatesvtkWebAssemblyRenderWindowInteractor.
Python#
numpy type mapping follows numpy’s underlying C type
vtkmodules.util.numpy_supportand the Python template subscript operator now map numpy dtypes to VTK types by the dtype’s underlying C type (itsdtype.char) rather than a hardwired table of numpy scalar types. On LP64 platforms (Linux and macOS)numpy.int64is Clong, sonumpy_to_vtknow returns avtkLongArray(VTK_LONG) instead of avtkTypeInt64Array(VTK_LONG_LONG), andnumpy.uint64maps toVTK_UNSIGNED_LONG;numpy.longlongstill maps toVTK_LONG_LONG, and Windows behavior is unchanged. The data is unaffected and round-trips losslessly — only type identity changes — so code that tests for an array class or type code should check widths instead (e.g.GetDataTypeSize() == 8) or accept both classes. Template subscripting follows the same rule, sovtkAOSDataArrayTemplate[numpy.int64]andvtkAOSDataArrayTemplate[numpy.dtype('int64')]now resolve to the same instantiation.numpy_support type size/code constants removed The module-level constants
VTK_ID_TYPE_SIZE,ID_TYPE_CODE,VTK_LONG_TYPE_SIZE,LONG_TYPE_CODE, andULONG_TYPE_CODEare removed. Useget_numpy_array_type()to resolve the numpy type for a VTK type code (e.g.get_numpy_array_type(VTK_ID_TYPE)in place ofID_TYPE_CODE) and the resulting dtype’sitemsizein place of the size constants.get_vtk_to_numpy_typemap() returns a copy
get_vtk_to_numpy_typemap()again returns a copy of the VTK-to-numpy mapping rather than the module’s own dictionary, restoring its earlier behavior; mutating the returned dictionary no longer perturbs conversions elsewhere in the process.
Fixes/improvements#
Core#
Replace most GetVoidPointer instances (Part 2) Removed ~48% of remaining
GetVoidPointer()usages usingvtkArrayDispatchand range methods; marked remaining usages as safe. (Author notes)Add tag mangling reset in vtkCommunicators Tag mangling in
vtkCommunicator::Send()now resets when mangled tag exceeds maximum value;vtkMPICommunicator::InitializeAttributes()retrieves MPI_TAG_UB.Removed signed/unsigned errors with type checks
vtkVariantInlineOperators.hnow has overloadedIsSigned()andIsFloatingPoint()accepting unsigned int to eliminate compiler warnings.Polyhedron faces lost when cells are handed to SetCells()
vtkUnstructuredGrid::SetCells()interpreted its cell array as a legacy face stream whenever the mesh contained polyhedra, so callers copying cells fromGetCells()and passing them back had point lists misread as face descriptions.vtkExtractCellsAlongPolyLine,vtkOverlappingCellsDetector, and thevtkUnstructuredGrid(de)serialization helper now carry polyhedron faces through explicitly viaSetPolyhedralCells(). (Author notes)
Filters#
vtkExtractEdges: Improve Performance
vtkExtractEdgesnow multithreaded regardless ofUseAllPointssetting, providing significant performance improvement.vtkDelaunay2D performance optimization
vtkDelaunay2Duses lightweight internal mesh with O(1) edge pointers;UseHilbertSorteroption provides up to 40x speedup.vtkDelaunay3D performance optimization
vtkDelaunay3Duses lightweight internal mesh with O(1) face pointers, yielding approximately 13x speedup.CellLocators: Make sure that when a tolerance parameter is available it can be used Cell locator tolerance parameters in
InsideCellBounds,IntersectWithLine,FindCell, etc. now actually used;vtkLocator::Tolerancedeprecated. (Author notes)Add use of implicit arrays in some filters
vtkAppendCompositeDataLeaves,vtkAppendDataSets,vtkAppendFilter,vtkAppendPolyData, andvtkGhostCellsGeneratornow optionally use implicit arrays.Polyhedron clipping and contouring uses López polygon-tracing algorithm
vtkPolyhedron::Contour()andClip()now use López algorithm working directly on faces without triangulation; requires outward-facing normals. (Author notes)Correct triangulation of non-convex polyhedron contour polygons
vtkPolyhedroncontouring now ear-clips polygons instead of fanning, correctly handling non-convex iso-surface polygons.vtkPolyhedron: remove per-call allocation from IsInside
vtkPolyhedron::IsInsidenow triangulates faces using the shared allocation-freevtkPolygon::EarClipPolygon3Dinstead of constructing a newvtkPolygonandvtkIdListper call, removing allocation churn from the streamline and probe filters’ hot path. (Author notes)Fix vtkCellValidator for vtkVoxel and vtkPixel
vtkCellValidatornow correctly accesses point coordinates forvtkVoxelandvtkPixelwhen positioning theIntersectingEdgesflag; a wrong point id previously could lead to a crash.vtkProbeFilter: Fix logic on SnapToCellWithClosestPoint and tolerance
vtkProbeFilternow correctly handlesSnapToCellWithClosestPointby computing coordinates directly; snapping radius and tolerance handling improved.vtkSurfaceNets3D: Identify and correct non-manifold points
vtkSurfaceNets3Ddetects non-manifold neighborhoods and resolves them; addsNonManifoldTableIndicespoint-data array. (Author notes)Improved vtkCellGrid evaluation performance and API
vtkDGEvaluator::ClassifyPointsrewritten for substantial performance with convex hull pre-filtering;EvaluatePositionsmerged intoClassifyPoints. (Author notes)Mesh Cache Usage
vtkAppendDataSets,vtkExtractGeometry, andvtkTransformFilternow usevtkDataObjectMeshCachefor performance optimization.vtkExplodeDataSet partitions name from FieldData
vtkExplodeDataSetcan now retrieve partition names from FieldData array with optional scalar value mapping.vtkRandomHyperTreeGridSource: consistent behavior in distributed
vtkRandomHyperTreeGridSourceoutput now consistent between serial and parallel execution; mask generation rewritten.vtkGenericCell DeepCopy and ShallowCopy fix
vtkGenericCellDeepCopy and ShallowCopy now properly handle different types and support copying generic cells.Fix nearest-neighbour interpolation in vtkDataSetAttributes
vtkDataSetAttributesnearest-neighbour interpolation fixed by correcting maxWeight variable type from vtkIdType to double.
I/O#
vtkGLTFReader: Fix texture coordinate handling
vtkGLTFReadernow correctly handles models with multiple texture coordinate sets by inspecting materials.CONVERGE reader: consistent polyhedron face orientation
vtkCONVERGECFDReadernow reverses shared interior faces for their neighbor cell so every polyhedron has consistently outward-facing normals, fixing holes and broken cross sections when slicing or contouring CONVERGE polyhedral meshes. (Author notes)Improve vtkFLUENTCFFReader
vtkFLUENTCFFReadernow supportsRenameArraysoption and face zone reading with related data arrays.vtkFLUENTReader now supports larger files Fixed crash in
vtkFLUENTReaderwhen parsing zones too large; moved virtual functions to private scope; reduced memory usage.vtkVRMLImporter general fixes Cone now defaults to Z axis; appearance/Transform nodes support USE/DEF; Extrusion node type added with full support.
Fix metaimage direction ignored MetaImage reader and writer now properly handle direction matrix for
vtkImageobjects.Fix legacy I/O handling of Inf/NaN values VTK legacy format readers now properly handle Inf and NaN values in ASCII files.
Added vector overrun detection for vtkBMPReader
vtkBMPReadernow detects vector overruns and prevents reading past file end on invalid/garbled BMP files.Added vector max size allocation detection for vtkHDRReader
vtkHDRReadernow detects vector max size allocation and parsing errors, preventing reads past file end.Added vector overrun detection for vtkTGAReader
vtkTGAReadernow detects vector overruns preventing invalid memory access on corrupt TGA files.Improved vtkTGAReader::CanReadFile validation
vtkTGAReader::CanReadFilenow checks bits-per-pixel field in addition to image type, reducing false positives.Stricter CanReadFile validation for vtkTGAReader
vtkTGAReader::CanReadFileperforms multi-layer validation including TGA 2.0 footer and header cross-validation.vtkXMLCompositeDataReader: Refactoring subclasses
vtkXMLCompositeDataReadersubclasses refactored for consistent metadata handling; block/array selection support added.Pass through nullptr objects as JSON null in serialization
nullptrobjects now consistently serialized as JSON null; deserialization correctly interprets null asnullptr.vtkMPASReader: Fixed memory management
vtkMPASReadertemporary array management improved; protected members made private.AMR ghost cell support and blanking fixes
vtkAMReXGridReaderreads ghost cells and creates properly marked arrays;vtkAMRUtilitiesandvtkOverlappingAMRMetaDatablanking fixed. (Author notes)vtkMPASReader: Support nodal main multifab
vtkAMReXGridReadernow detects nodal main multifabs and exposes variables as point data.
Interaction#
vtkTrackballRotate: fix rotation about a non-default center
vtkTrackballRotatenow correctly rotates the camera about the center of rotation set onvtkInteractorStyleManipulator; previously the rotation transform was missing the translation to the center of rotation, so the camera rotated about the world origin and drifted away from the scene on every mouse move whenever a non-zero center of rotation was set.
Rendering#
Linear cells improvements: Add Drawing, Clip, use contour tables Linear cells now have documentation drawings; clip methods implemented using vtkMarchingCellsClipCases; contour tables consolidated. (Author notes)
VTK Wedge Cell Types: Fix Point Ordering and Correctness Wedge and related cell types now have correct point ordering matching parametric coordinates; triangulation and volume correctness fixed. (Author notes)
Wrong Point Ordering
Correct Point Ordering


vtkSSAOPass subplot fix
vtkSSAOPasscan now be used in subplots; previously this led to black subplots in some cases.WebGPU window resize now re-renders correctly VTK’s WebGPU rendering backend now validates surface texture dimensions and handles outdated surface status so resizing the window re-renders the scene at the new resolution instead of stretching the previous image. (Author notes)
Fix depth buffer readback for multi-viewport configurations
vtkRenderer::GetZ,vtkFramebufferPass, andvtkSSAAPassnow correctly handle depth buffer across multiple viewports.Fix incorrect connectivity crash VTK no longer crashes when rendering
vtkPolyDatawith invalid connectivity array indices.vtkSSAAPass correctly manages stencil buffer attachments
vtkSSAAPassnow preserves stencil buffer testing during actor rendering passes with proper depth-stencil attachments.Fix point scalar mapping with lookup table in WebGPU WebGPU mappers now correctly pass input data to batched mappers fixing scalar-to-texture mapping.
Fix SurfaceLIC mapper when using more than one viewport SurfaceLIC mapper now correctly initializes viewport origin for multi-viewport rendering.
Enable rendering of larger polygonal composite datasets
vtkCompositePolyDataMappernow respects buffer size limitations when batching blocks.OpenGL array texture buffer cache is bounded and purged The per-context
vtkOpenGLArrayTextureBufferCacheused by the vertex-pulling mappers (vtkOpenGLLowMemoryPolyDataMapper) now purges automatically at the end of every render: orphaned entries are dropped and unpinned entries are evicted least-recently-used first until the cache fitsMaximumCacheSize(default 256 MiB,0disables the budget). Previously entries were only released at context teardown, so workflows that continually modify geometry leaked memory and could exhaust the heap in WebAssembly. New API:SetMaximumCacheSize()/GetMaximumCacheSize(),GetCurrentCacheSize(),GetCPUMemorySize(),RemoveUnusedTextureBuffers(), andRemoveTextureBuffer().vtkImageSSIM::ComputeErrorMetrics RGBA Support
vtkImageSSIM::ComputeErrorMetricsnow supports any number of components including RGBA.Deprecation in vtkViewport
vtkViewport::GetActors2Ddeprecated in favor ofvtkViewport::GetViewProps.
WebAssembly#
WebAssembly interactor event loops can now coexist Multiple interactor event loops can now run simultaneously in WebAssembly using async code path.
Session Destroy Object Return Status
vtkStandaloneSession::Destroynow returns bool status for success/failure.Fix gesture event positions
vtkRemoteInteractionAdapternow reports correct positions for Pinch, Pan, and Rotate gesture events;EndRotatenow correctly triggersvtkCommand::EndRotateEvent. (Author notes)Data set mapper serialization no longer emits an empty polydata When a
vtkDataSetMapperhas avtkPolyDatainput, serialization now updates the input algorithm before serializing the data set. Previously, if the producer of the input had never executed, the mapper’s state held an empty polydata and the deserialized scene rendered nothing.
Deprecations/Removals#
All APIs deprecated in VTK 9.5 are removed Many type enums, classes, and methods removed from CommonCore, CommonDataModel, I/O, and other modules. (Author notes)
Deprecate VTK_LEGACY_REMOVE and VTK_LEGACY_SILENT
VTK_LEGACY_REMOVE,VTK_LEGACY_SILENT, and related CMake variables deprecated.vtkAlgorithm::Update() change return type to bool
UpdateInformation(),UpdateDataObject(),UpdateWholeExtent(), andUpdate()now return bool instead of void.vtkHTGRedistribute: Fix crash when input has no valid trees
vtkHyperTreeGridRedistributenow handles inputs with no valid trees without crashing.Deprecate vtkTransformPolyDataFilter
vtkTransformPolyDataFilterdeprecated in favor ofvtkTransformFilter; useGetPolyDataOutput()as replacement.Deprecate vtkHierarchicalBoxDataSet filters
vtkHierarchicalDataExtractLevel,vtkHierarchicalPolyDataMapper, and related classes deprecated.vtkXMLPHyperTreeGridWriter & Reader deprecation Parallel HyperTreeGrid readers/writers deprecated in favor of vtkHDFWriter parallel support.
Updates#
Mesh cache improvements
vtkDataObjectMeshCachenow hasPreservedInputAttributes, SMP-accelerated attribute forwarding, andvtkMeshCacheRunnerRAII helper. (Author notes)Move mesh cache utilities to new CommonCache module
vtkDataObjectMeshCacheandvtkMeshCacheRunnermoved to new CommonCache module for broader availability.Support parallel rendering with independent off-axis viewers
vtkSynchronizedRenderersnow supportsvtkIndependentViewerCollectionfor independent viewer tracking.vtkConvertToMultiBlock uses assembly when possible
vtkConvertToMultiBlocknow usesvtkDataAssemblyfromvtkPartitionedDataSetCollectionto mirror structure.Support for Object Factory Preferences Object Factory now supports preferences for specific class implementations for runtime selection.
Closed Issues (111 total)#
Listed in reverse chronological order (most recently closed first)
#20059 vtkXMLPHyperTreeGridWriter/Reader do not work at all (2026-06-25)
#20091 VTK 9.6 build error C4996 in vtkUnstructuredGrid.h with MSVC 18.7.8 (GetCellTypes deprecation conflict) (2026-06-24)
#20089 vtkImageTransform.cxx triggers divide by zero when floating point exceptions are on (2026-06-24)
#20062 Volume rendering fails with shading and non-default lighting in WASM build (2026-06-22)
#17013 vtkBandedPolyDataContour hangs with NaN data (2026-06-22)
#20087 vtkObjectBase::Register unresolved (2026-06-22)
#20085
vtkMarshalContext::GetIdis O(n) and sits in nested hot loops (2026-06-20)#20074 Latest nightly Python wheel can’t be installed by pip (2026-06-19)
#20018 vtkBuffer persists after array deletion with new NumPy interface (2026-06-18)
#16924 Improve Documentation for vtkXMLP*Writers (2026-06-18)
#17083 reference counting bug in vtkTransform or vtkAbstractTransform (2026-06-17)
#20043 [regression] RuntimeWarning and NumPy ValueError generated for previously valid code (2026-06-17)
#19912 vtkGridAxesActor3D: No Maximum Limit on Automatic Ticks/Labels Leads to Rendering Freeze at Close Zoom (2026-06-16)
#20025 segfault when closing X11 webgpu window (2026-06-16)
#19980 vtk_to_numpy cannot get buffer from vtkDataArray in latest dev wheels (2026-06-15)
#19390 vtkExtractVOI incorrectly handles sample rate (2026-06-12)
#20066 Unguarded MPI_comm_free causes abort at shutdown. (2026-06-12)
#17506 Restore support for CastXML-based wrappers (2026-06-11)
#20075 Staging of vtk_module_wrap_python not possible because MODULE_DESTINATION set BUILD and INSTALL location (2026-06-10)
#20058 vtkRandomHyperTreeGridSource is not consistent in serial & parallel (2026-06-10)
#20070 ParaView 6.1.1 render window completely broken on macOS 26 (Tahoe) — NSOpenGLContext/NSOpenGLView (2026-06-09)
#20013 VTK source must be in a path that does not contains spaces (2026-06-08)
#20068 vtkHDFReader: read XCoordinates properly (2026-06-08)
#20022 ANARI volume renderer test failures (2026-06-05)
#20023 ANARI perspective parallel test failure (2026-06-05)
#18842
vtkStaticCellLocator::BuildLocatorInternaldata race found by TSan (2026-06-04)#17082 vtkSSAAPass breaks the use of stencil buffer (2026-06-04)
#19171 vtkSurfaceNets3D crashes when DataCaching is OFF (2026-05-27)
#20049 TSan: vtkSurfaceNets ClassifyXXXEdges read/write races (2026-05-27)
#18537 AddressSanitizer builds failing on macos (2026-05-26)
#17751 vtkScalarBarActor::DrawTickLabelsOn() does not work. (2026-05-22)
#20057 TSan:
vtkCellQuality::PolygonAreahas read/write race (2026-05-21)#19593 ci does not skip documentation changes (2026-05-21)
#20053 vtkConvertToMultiBlockDataSet unexpected empty output (2026-05-21)
#20044 vtkimageExport crashes for large data sets (2026-05-21)
#20046 Release v9.6.2 (2026-05-20)
#19665 Improvements to the FLUENTCFF to parse Fluent results. (2026-05-20)
#20054 [regression] vtkOBBTree no longer finds intersection (2026-05-19)
#18031 vtkOBBTree.IntersectWithLine not finding intersection cell when it should (2026-05-19)
#19815 wheels: remove wheels for Python 3.9 (2026-05-18)
#19650 vtkGroupDataSetsFilter to generate vtkDataAssembly for PartitionedDataSetCollection output types (2026-05-18)
#17667 conda package for linux-64 vtk-8.2.0 py37 contains invalid INTERFACE_LINK_LIBRARIES for vtkRenderingOpenGL2 module (2026-05-15)
#17486 VTK failed to run 711 tests due to Exception: SegFault with release configuration and debug configuration. (2026-05-14)
#20008 Issue with rendering 16-bit volume data (Int16/Uint16) (2026-05-14)
#20009 Issue with volume rendering using VTK WASM compiled using vtk wasm sdk docker (2026-05-14)
#18555 TestEvenlySpacedStreamlines2D is flaky with STDThread (2026-05-14)
#16941 Java class vtkScalarBarWidget does not have GetScalarBarActor() in 7.1 version (2026-05-13)
#18204 ParaView fails to load ASCII file with nans (2026-05-13)
#17426 Missing cast in dataset_adapter.UnstructuredGrid.SetCells (2026-05-13)
#18201 vtkSMPMergePoints::Merge is not thread-safe (2026-05-13)
#17882 Out-of-memory when rendering large wavefront obj in ParaView(> 5.4.1) (2026-05-13)
#17368 2D FLASH AMR data (2026-05-13)
#17185 ospray unstructured volume render limited to tets and float and point aligned arrays (2026-05-13)
#17974 Compiling VTK 9.0.1 with Intel 2020 (2026-05-13)
#17971 vtk-8.2.0 fails to compile with gcc-10x (2026-05-13)
#17947 vtkPlaneCutter segfault when slicing a dataset containing GlobalIds and PedigreeIds (2026-05-13)
#17931 vtkUnstructuredGrid::DeepCopy with faces (2026-05-13)
#17043 VTK / Python/ Anaconda – wiki example shows bug in volume render? (2026-05-13)
#17690 SIGSEGV on vtkCompositeDataProbeFilter() with PassPartialArraysOn() (2026-05-13)
#16962 Remote module: Poisson Reconstruction (2026-05-13)
#17646 Request to add the location of classes in the documentation. (2026-05-13)
#17645 vtkDecimattePro fails with a specific dataset. (2026-05-13)
#16960 Crash of qtgraphicsview example on macOS (2026-05-13)
#17640 vtkXML_reader: Segmentation fault by same DataArray names (2026-05-13)
#17641 VTK 8.2.0 fails to build with PGI pgc++ 19.3 (2026-05-13)
#16122 Fix for freeze with Java JOGL interaction (2026-05-13)
#17629 vtkPointLocator.FindClosestPointWithinRadius causes access violation when using incremental point insertion (2026-05-13)
#15799 regression: OpenGL2 backend broke support for LineStipple (2026-05-13)
#17958 VTK 9 Python observer fired on ErrorEvent not muting VTK raw output (2026-05-13)
#17307 Convert cells to higher-order versions automatically? (2026-05-13)
#17582 VTK failed to run 2 tests VTK::FiltersAMRCxx-TestAMRSliceFilterCellData and VTK::FiltersAMRCxx-TestAMRSliceFilterPointData with release configuration and debug configuration with MSVC on windows (2026-05-13)
#17594 IO/Legacy/vtkDataReader.cxx: int vtkDataReader::ReadString(char result[256]) does not compile in C++20 (2026-05-13)
#17599 vtkFunctionParser is 18 years old and written in C language, highly unoptimized. (2026-05-13)
#17543 Voronoi Cells in vtk format (2026-05-13)
#17286 vtkHyperTreeContour produces empty output (2026-05-13)
#17161 ExodusReader only reads float data (not double) (2026-05-13)
#19636 Serialization errors in RenderingCoreCxx (2026-05-13)
#17120 Simplify the VTK-m and VTK SMP build options (2026-05-13)
#17089 VTK Exodus Reader (2026-05-13)
#17039 XDMF2Writer: Source and Target Spaces specify different sizes for path: /Block_0_t000000/Topology (2026-05-13)
#17338 VTK + PyQt5 + VirtualGL not working (2026-05-13)
#17037 XDMF2 writes data with insufficient precision (2026-05-13)
#17033 VTK Legacy file format readers don’t handle sizeof(long) correctly (2026-05-13)
#19996 Unhashable regression in trame-vtk (2026-05-13)
#16948 Building VTK with osmesa offscreen support on windows. (2026-05-13)
#16934 Python 3 exception in test vtkParallelMPI4PyPython-TestParallelNumpy (2026-05-13)
#16903 Segmentation fault in vtkXYZMolReader2::RequestInformation() with XMOL file with no time steps (2026-05-13)
#17988 Cannot run WebAssembly examples with rendering (2026-05-13)
#19949 wasm: enabling serialization leads to very large wasm binaries (2026-05-13)
#15841 vtkCutter not cutting vtkPolyhedron cells correctly (2026-05-13)
#16915 VTK 6.3.0: bar plot with big number (2026-05-13)
#16789 vtkGradientFilter doesn’t work with quadratic triangles (2026-05-13)
#15435 Crash related to vtkRenderWindow::SetOffScreenRendering (2026-05-13)
#19014 vtkScalarBarActor: in vertical mode, add option to rotate title so it is aligned vertically (2026-05-13)
#18316 AMReX Grid Reader: enable reading of integer fab files (2026-05-13)
#20006 Issue with Volume Rendering using 16-bit arrays (Int16/Uint16) in VTK-Wasm (2026-03-29)
#19925 undeclared malloc/free in fmt header with clang 21+ (2026-02-02)
#19767 Update fmt to include upstream fmtlib/fmt/pull/4477 fix (2026-02-02)
#19779 Release 9.5.2 (2025-09-24)
#19580 Wide lines are not rendered properly with GLES backend (2025-08-04)
#19675 Enable JSPI for webgpu support in wasm (2025-06-16)
#19617 wasm64: re-enable serialization package (2025-05-14)
#19529 serialization of wasm render window shows warning about SetCoverable (2024-12-03)
#19356 VTK JS library files are not found in wasm SDK builds (2024-06-03)
#19290 Revisit vtk-wasm wheel setup (2024-04-11)
#19296 Depth buffer read using vtkOpenGLRenderWindow::GetZbufferData incorrect on wasm/Emscripten (2024-04-01)
#18592 VTK C++ Emscripten Binding Config (2023-06-16)
#18724 webassembly(wasm) example compile error about glew (2023-02-25)
#18829 Failed to read dicom from compiled VTK of emscripten ? (2023-02-21)
#18706 Emscripten vtk: fatal error: ‘vtkSelectPolyData.h’ file not found (2022-11-03)
#17995 Loading .vtp file after compiling with Emscripten (2020-09-03)