Released on 2022-09-27.

9.2.0 Release Notes#

Changes made since VTK 9.1.0 include the following.



  • The VTK_USE_MPI and VTK_USE_TK options are more lenient and will not force any modules in the MPI or Tk group, respectively, to be built. Instead, affected modules may be disabled if they are unwanted.

  • VTK’s packages now hint OpenVR locations (for the build tree or VTK_RELOCATABLE_INSTALL=OFF installations).

  • Installation destinations for Python modules is now fixed under MinGW.

  • Compile fixes for older compilers, mainly GCC 4.8.


  • vtkVector’s += and -= operators now return a vtkVector& as expected. Previously they returned uninitialized vtkVector instances which is of little use to anyone.

  • vtkSetGet.h macros which create setters now have *Override variants to use the override keyword instead of repeating virtual.

  • vtkObject instances may now be assigned a name used in reporting. It is not copied by ShallowCopy or DeepCopy copies.

  • vtkAbstractArray::CreateArray now prefers creating sized integer arrays rather than arrays of basic C types. This is intended to help readers get the correct size instead of having to remember whether long is 32 or 64 bits on the given platform.


  • The vtkArrayListTemplate helper class for vtkDataSetAttributes incorrectly held a vtkDataArray*. This meant that filters using the class could not support other arrays such as vtkStringArray. Now, it holds a vtkAbstractArray* to support these types. Users may adapt by using vtkArrayDownCast to obtain a vtkDataArray* if needed.


  • vtkArrayCalculator, vtkmodules.numpy_interface.dataset_adapter, and vtkProgrammableFilter support for vtkHyperTreeGrid has been improved.

  • vtkUnstructuredGridQuadricDecimation::NO_ERROR has been renamed to ::NON_ERROR to avoid conflicts with Microsoft Windows SDK headers.

  • vtkImprintFilter::ABSOLUTE has been renamed to ::ABSOLUTE_TOLERANCE to avoid conflicts with Microsoft Windows SDK headers.

  • vtkMeshQuality and vtkCellTypes now use a enum class QualityMeasureTypes instead of #define symbols for metrics.

  • vtkCheckerboardSplatter no longer has nested parallelism.

  • vtkmProbe filters now return probed fields as point data rather than cell data.

  • vtkDescriptiveStatistics’s Kurtosis formula had a mistake which is now corrected.

  • vtkDescriptiveStatistics previously supported toggling kurtosis, skewness, and variance over sample or population individually. Now, sample or population can be selected using the SampleEstimate boolean (on by default). This simplifies interactions with the filter and avoids confusion by mixing and matching. The previous APIs still exist, but do not do anything.

  • vtkPlaneCutter now frees the sphere trees if the input changes and can handle vtkUniformGridAMR inputs.

  • vtkPlaneCutter now uses vtkAppendPolyData internally to merge internal results. This avoids complex vtkMultiBlockDataSet inputs from creating complicated sets of vtkMultiPieceDataSet. Inputs and outputs are now transformed as follows:

    • vtkMultiBlockDataSet input becomes vtkMultiBlockDataSet

    • vtkUniformGridAMR input becomes vtkPartitionedDataSetCollection (previously vtkMultiBlockDataSet)

    • vtkPartitionedDataSetCollection input becomes vtkPartitionedDataSetCollection

    • vtkPartitionedDataSet input becomes vtkPartitionedDataSet

    • vtkDataSet input becomes vtkPolyData (previously vtkPartitionedDataSet)

  • vtkCellTreeLocator has moved from VTK::FiltersGeneral to VTK::CommonDataModel

  • vtkArrayCalculator no longer calls Modified() on any value setting because it causes multi-threaded contention.

  • The vtkArrayRename filter may be used to rename data arrays within a data set.

  • vtkGeometryFilter no longer supports the vtkUnstructuredGrid::FastMode using the Degree flag.

  • vtkTemporalDataSetCache no longer crashes when a nonexistent timestep is requested.

  • vtkTableFFT no longer prefixes output array names with “FFT_” like it was in 9.1 and just keep the same name as the input like it was doing before 9.1. A new API has been added to keep 9.1 behavior when needed.

  • vtkContourTriangulator polygon bounds checking now factors in the tolerance.

  • vtkImageDifference calculations have been fixed. Note that this may affect testing results.

  • vtkLagrangianParticleTracker caching invalidation logic fixed.


  • vtkFrustumSelection has been optimized.

  • Selection extraction on vtkUniformGridAMR has been fixed.


  • The vtkIOSSReader now provides DisplacementMagnitude to scale point displacement.

  • The vtkIOSSReader now turns off the LOWER_CASE_VARIABLE_NAMES IOSS property.

  • vtkIOSSReader now reads side sets correctly by avoiding a false positive hit in its internal cache.

  • FFmpeg 5.0 is now supported.

  • vtkXdmfReader no longer caches internal XdmfGrid instances to avoid wasting memory. See #19633.

  • vtkJSONSceneExporter no longer overwrites existing files.

  • vtkGLTFExporter now exports the correct camera transformation matrix. Imported scenes may use vtkGLTFImporter::SetCamera(0) prior to Update() to use the original camera location.

  • vtkPLYWriter may now write the point normals of input meshes, if present.

  • vtkPIOReader now requires dump files to begin with the problem name. This avoids using an unrelated file for partially written dumps.

  • vtkNetCDFCAMReader now properly extracts level data.


  • vtkProp3D actors may now be added using different coordinate frames: WORLD (the default), PHYSICAL (in VR, the physical room’s coordinates, in meters), and DEVICE (relative to the device). When using PHYSICAL or DEVICE, a renderer must be provided via the new SetCoordinateSystemRenderer() and SetCoordinateSystemDevice() methods. Such props should typically use UseBoundsOff() to ignore their bounds when resetting the camera.

  • Unstable volume rendering configurations are detected.

  • Volume rendering now supports more than 6 lights.

  • vtkXOpenGLRenderWindow and vtkXRenderWindowInteractor now properly disconnects from the display when it is not owned.

  • Add a missing GIL lock in vtkMatplotlibMathTextUtilities.

  • Avoid a hard-coded translation when resetting the camera in VR.


  • SDKs for each weekly wheels are now available on vtk.org. Releases will also have them available.

  • vtkmodules.qt now supports PyQt6.

  • Python 3.10 is now supported by vtkpython.

  • Python 3.10 wheels are now supported.

  • VTK’s wrapped classes may now be interposed by using the class’ override decorator:

from vtkmodules.vtkCommonCore import vtkPoints

class foo(vtkPoints):

o = vtkPoints() # o is actually an instance of foo
  • Note that Python subclasses still cannot override C++ virtual functions, cannot alter the C++ class hierarchy, is global, and is ignored when the class uses vtkObjectFactory to provide a subclass from its ::New() method.

  • .pyi files for autocompletion and hinting in editors are now available in VTK builds and wheels. Note that Windows wheels older than 3.8 do not provide .pyi files for platform-specific reasons.

  • Starting with 9.2.3, Python 3.11 is supported and newly-deprecated APIs are avoided.

  • Starting with 9.2.3, Matplotlib 3.6 is now supported.

  • Starting with 9.2.3, vtk[web] is required to get web dependencies with the wheels.


  • Fix a memory leak in vtkWebApplication.

  • The render window serializers were updated to better map VTK options to VTK.js options. This includes font coloring for scalar bars and color transfer function discretization.

  • vtkDataSetSurfaceFilter is used in place of vtkGeometryFilter

  • The generic mapper serializer now uses vtkDataSetSurfaceFilter to always extract a surface from the input dataset.

  • Python print statements were changed to DEBUG logging statements.

Third Party#

  • VTK’s vendored HDF5 library has been updated to 1.13.1.

  • VTK’s vendored verdict library has been updated.

  • VTK’s vendored freetype library has been updated to 2.12.0.

  • VTK’s vendored mpi4py’s Cython updated to support Python 3.11.

  • Avoidance of deprecated APIs in new FFmpeg releases.

  • VTK’s vendored libproj better supports cross-compilation.


  • Modules may now specify license files for the module in their vtk.module file. It will automatically be installed.

New Features#


  • Animations may now be played in reverse using vtkAnimationCue’s direction to vtkAnimationCue::PlayDirection::BACKWARD


  • When VTK::AcceleratorsVTKmFilters is enabled, the VTK_ENABLE_VTKM_OVERRIDES option may be turned on to provide factory overrides for other VTK filters. Note that for these overrides to be used, the relevant VTKm modules must be linked (for C++) or imported (for Python) to be effective.


  • vtkMath::Convolve1D can be used to compute the convolution of two 1D signals using full, same, or valid boundary conditions.

  • vtkReservoirSampler may be used to perform reservoir sampling. It is intended for selecting random fixed-size subsets of integer sequences (e.g., array indices or element IDs).


  • The parallel coordinates chart now supports multiple selections on the same axis. This includes addition, subtraction, and toggle actions.


  • The vtkGenerateTimeSteps filter may be used to add timesteps to shallow-copied data within a pipeline.

  • The vtkHyperTreeGridGradient filter may be used to compute a gradient over a scalar field. The edges of the dual is used, so all neighbors are considered, but coarse cells are ignored.

  • The vtkExtractParticlesOverTime filter may extract particles over time that pass through a given volumetric dataset.

  • vtkMultiObjectMassProperties now also computes the centroids of each object. Centroids are calculated using tetrahedron centroids and uniform density.

  • vtkJoinTables may perform a SQL-style JOIN operation on two vtkTable objects. The columns to keep depend on the mode: intersection (keep columns common to both tables), union (keeps columns present in either table), and left and right (keeping the keys present in the respective input table).

  • vtkComputeQuantiles has been split out of vtkComputeQuartiles as a new superclass. It supports arbitrary numbers of buckets.

  • vtkMeshQuality and vtkCellQuality have:

    • been multithreaded

    • improved documentation

    • no longer supports the AspectBeta tetrahedron metric

    • improved pyramid cell metrics:

      • EquiangleSkew

      • Jacobian

      • ScaledJacobian

      • Shape

      • Volume

    • improved wedge cell metrics:

      • Condition

      • Distortion

      • EdgeRatio

      • EquiangleSkew

      • Jacobian

      • MaxAspectFrobenius

      • MaxStretch

      • MeanAspectFrobenius

      • ScaledJacobian

      • Shape

      • Volume

    • new triangle cell metrics:

      • EquiangleSkew

      • NormalizedInradius

    • new quadrilateral cell metrics:

      • EquiangleSkew

    • new tetrahedron cell metrics:

      • EquiangleSkew

      • EquivolumeSkew

      • MeanRatio

      • NormalizedInradius

      • SquishIndex

    • new hexahedron cell metrics:

      • EquiangleSkew

      • NodalJacobianRatio

  • The new vtkLinearTransformCellLocator is a cell locator adaptor which can calculate a transformation matrix from a base dataset to another dataset. This matrix is then used to perform cell locator operations. The UseAllPoints() method may be used to use either all dataset points (if the transformation might not be linear) or, at most, 100 sample points sampled uniformly from the dataset’s point array.

  • vtkCellLocator, vtkStaticCellLocator, vtkCellTreeLocator, vtkModifiedBSPTree, and vtkLinearTransformCellLocator each have numerous improvements:

    • support for ShallowCopy()

    • caching cell bounds has been multithreaded

    • InsideCellBounds checks are now cached

    • new IntersectWithLine methods sorted by a parametric t; this also provides FindCellsAlongLine for each locator

    • the tolerance parameter may be used to check cell bound intersections

    • The UseExistingSearchStructure parameter may be used to not rebuild locators when component data changes, but the geometry stays the same; use ForceBuildLocator to rebuild as needed in this case

  • vtkCellTreeLocator supports 64bit IDs.

  • vtkCellTreeLocator::IntersectWithLine() and vtkModifiedBSPTree::IntersectWithLine() are now thread-safe.

  • vtkCellLocator is now fully thread-safe.

  • The vtkAlignImageDataSetFilter has been added which can align image datasets to share a single global origin and offset extents in each component image accordingly. All images must use the same spacing.

  • The new vtkLengthDistribution filter may be used to estimate the range of geometric length scales preset in a vtkDataSet.

  • vtkImageMathematics can now perform operations on more than two images. Rather than connecting a second image to port 1, all connections are made to port 0 instead. This unifies behavior with other repeatable image filters such as vtkImageAppend.

  • VTKm’s vtkmContour filter may be used as a factory override for vtkContourFilter.

  • VTKm filter factory overrides may be toggled using vtkmFilterOverrides::SetEnabled().

  • The vtkExtractHistogram filter has been moved from ParaView into VTK.

  • vtkPointDataToCellData now handles categorical data using multiple threads.

  • vtkSuperquadricSource now creates pieces using multiple threads.

  • Particle traces now support vtkDataObjectTree objects to define seed points rather than only vtkDataSet objects.

  • vtkStreamTracer now uses SMP when multiprocessing is not in use.

  • vtkStreamTracer performance and quality have been improved.

  • vtkFindCellStrategy::FindClosestPointWithinRadius() has been added.

  • vtkCompositeInterpolatedVelocityField::SnapPointOnCell() has been refactored from the vtkInterpolatedVelocityField and vtkCellLocatorInterpolatedVelocityField subclasses.

  • vtkParticleTracerBase is now multithreaded (with one MPI rank or more than 100 particles).

  • vtkParticleTracerBase can now use either use a cell locator (the default) or point locator for interpolation.

  • vtkParticleTracerBase supports different levels of mesh changes over time:

    • DIFFERENT: the mesh changes on every timestep.

    • SAME: the mesh is the same on every timestep.

    • LINEAR_TRANSFORMATION: the mesh is a linear transformation of the prior timesteps (partially applies to point locators as only cell links are preserved).

    • SAME_TOPOLOGY: the mesh data changes, but its topology is the same every timestep (only applies to point locators).

  • vtkTemporalInterpolatedVelocityField can now use the FindCellStrategy because it now preserves higher numerical accuracy internally.

  • vtkGeometryFilter is now multi-threaded over more data types including:

    • vtkUnstructuredGrid

    • vtkUnstructuredGridBase

    • vtkImageData (3D)

    • vtkRectilinearGrid

    • vtkStructuredGrid

  • vtkGeometryFilter can now handle ghost and blank cells and points.

  • vtkGeometryFilter can now remove ghost interfaces using the RemoveGhostInterfaces flag (default on).

  • The vtkFiniteElementFieldDistributor filter can now visualize Discontinuous Galerkin (DG) finite element fields of type H(Grad), H(Curl), and H(Div).

    • Note that all cells must be of the same type and the field data must contain a vtkStringArray describing the DG fields, basis types, and reference cells.


  • vtkDisplaySizedImplicitPlaneWidget is now provided. Compared to vtkImplicitPlaneWidget2:

    • the outline is not drawn by default

    • the intersection edges of the outline and the plane may be drawn

    • the normal arrow and plane size are relative to the viewport

      • their sizes may be bounded by the widget bounds

    • the origin may be moved freely rather than constrained to the bounding box

    • the handle sizes are larger

    • the plane is represented as a disc

    • the only option for the perimeter is to be tubed or not

    • the perimeter may be selected and resized to change the disc radius

    • the actors are highlighted only when hovered

      • except the plane surface which is highlighted when any actor is hovered over

    • a new plane origin may be picked using P or p

      • the ctrl modifier will snap to the closest point on an object or the camera plane focal point otherwise

    • a new plane normal may be picked using N or n

      • the ctrl modifier will snap to the closest normal on an object or the camera plane normal otherwise

    • picking tolerance is relative to the viewport size

  • vtkResliceImageViewer may now apply a factor when scrolling.

  • vtkResliceCursorWidgetLineRepresentation supports alt+leftclick to translate along a single axis.

  • vtkVRInteractorStyle now supports the Grounded movement style. The existing movement style is called Flying. Grounded movement is constrained to an xy plane in four directions on one joystick. The other joystick changes elevation.

  • vtkSelection now supports the xor boolean operator.

  • vtkSelectionSource now supports multiple selection nodes.

  • vtkSelectionSource may now define the field option using either FieldType or ElementType.

  • vtkSelectionSource now defines the ProcessId of the selection.

  • vtkAppendSelection can now append multiple selections through an expression using selection input names.

  • vtkConvertSelection may now convert BLOCK and BLOCK_SELECTORS nodes to INDICES.


  • vtkFidesReader reader can now use the Inline engine for in-situ processing.

  • vtkCatalystConduit may be used to adapt Conduit datasets via the Catalyst library’s conduit interactions. This module requires an external catalyst library to be provided. This module includes:

    • vtkConduitSource: a source filter which generates a vtkPartionedDataSet or vtkPartitionedDataSetCollection from a Conduit node (it may also generate vtkMultiBlockDataSet if needed for historical reasons).

    • vtkDataObjectToConduit to convert any vtkDataObject into a Conduit node

    • a Catalyst implementation

  • The vtkHDFReader filter now supports overlapping AMR datasets. The specification can be found in the VTK File Formats documentation.

  • vtkCGNSReader now support reading cell- or face-centered data arrays for meshes with 3D cells. Note that connectivity must be defined using NGON_n in face-based meshes. Data arrays are then defined with a GridLocation_t of either CellCenter or FaceCenter. The behavior may be selected by setting vtkCGNSReader::DataLocation to vtkCGNSReader::CELL_DATA (the default and previous behavior) or vtkCGNSReader::FACE_DATA.

  • vtkPIOReader can now read restart block and even/odd dumps.

  • vtkPIOReader will now add the xdt, ydt, zdt, and rho derived variables and calculate them if they are not already present in the restart file.

  • vtkIOSSReader now caches time values internally to avoid filesystem contention on HPC systems.

  • The new vtkIOSSWriter can write Exodus files using the IOSS library. For now, only element blocks, node sets, and side sets are supported.


  • QVTKTableModelAdapter may be used to provide a QAbstractItemModel model as a vtkTable to use in a pipeline.


  • Basic OpenXR support is supported for virtual reality rendering.

  • The vtkHyperTreeGridMapper mapper may be used to render only visible parts of a vtkHyperTreeGrid in 2D.

  • Rendering point sets may now use OSPRay’s “Particle Volume” when using vtkPointGaussianMapper’s ray tracing backend.

  • vtkColorTransferFunction::AddRGBPoints may now be called with points and colors in batches for much better performance.

  • The WindowLocation API has moved from vtkTextRepresentation to vtkBorderRepresentation so that it can be used by more classes.

  • Volumetric shadows is now supported which allows for a volumetric model to cast shadows on itself. Requires volumetric shading to be enabled. An illumination reach parameter controls how accurate the shadows will be, 0 meaning only local shadows and 1 for shadows across the entire volume.


  • Interactive rendering of most widgets are now supported with OSPRay.

TestOSPRayBoxWidget2 TestOSPRaySplineWidget2 TestOSPRayImplicitPlaneWidget2 TestOSPRayPointHandleRepresentation3D


  • The vtkCoordinateFrameWidget controls 3 orthogonal right-handed planes. Axes are rendered proportionally to the viewport size (and is configurable). Interaction may pick a basis point and choose alignment with a surface normal or another point. See this Discourse thread for discussion.

  • vtkHardwarePicker may be used to pick a point and normal by intersection with a mesh cell or nearest mesh point.

Coordinate Frame Widget


  • The vtkHyperTreeGridPreConfiguredSource may be used to generate different vtkHyperTreeGrid datasets for testing purposes instead of hand-crafting them.


  • Wrapping tools now support Unicode command line arguments.

  • vtkSmartPointer<T> parameters and return values are now supported in wrapped Python APIs. std::vector<vtkSmartPointer<T>> is also supported by appearing as a tuple in Python and conversion from any sequence when converting to C++.

Module System#

  • vtk_module_sources is now provided as a wrapper around target_sources for VTK module targets.

  • vtk_module_add_module now supports a NOWRAP_TEMPLATE_CLASSES keyword for template classes which should not be wrapped.

Deprecated and Removed Features#


The following APIs were deprecated in 9.0 or earlier and are now removed:

  • vtkPlot::GetNearestPoint(const vtkVector2f&, const vtkVector2f&, vtkVector2f*)

  • vtkPlot::LegacyRecursionFlag (used to help subclasses implement the replacement for the prior method)

  • The following APIs have been replaced by vtkOutputWindow::SetDisplayMode():

    • vtkOutputWindow::SetUseStdErrorForAllMessages()

    • vtkOutputWindow::GetUseStdErrorForAllMessages()

    • vtkOutputWindow::UseStdErrorForAllMessagesOn()

    • vtkOutputWindow::UseStdErrorForAllMessagesOff()

    • vtkWin32OutputWindow::SetSendToStdErr()

    • vtkWin32OutputWindow::GetSendToStdErr()

    • vtkWin32OutputWindow::SendToStdErrOn()

    • vtkWin32OutputWindow::SendToStdErrOff()

  • vtkArrayDispatcher, vtkDispatcher, vtkDoubleDispatcher have been replaced by vtkArrayDispatch

  • Fetching edge and face points via int rather than vtkIdType:

    • vtkConvexPointSet::GetEdgePoints(int, int*&)

    • vtkConvexPointSet::GetFacePoints(int, int*&)

    • vtkHexagonalPrism::GetEdgePoints(int, int*&)

    • vtkHexagonalPrism::GetFacePoints(int, int*&)

    • vtkHexahedron::GetEdgePoints(int, int*&)

    • vtkHexahedron::GetFacePoints(int, int*&)

    • vtkPentagonalPrism::GetEdgePoints(int, int*&)

    • vtkPentagonalPrism::GetFacePoints(int, int*&)

    • vtkPolyhedron::GetEdgePoints(int, int*&)

    • vtkPolyhedron::GetFacePoints(int, int*&)

    • vtkPyramid::GetEdgePoints(int, int*&)

    • vtkPyramid::GetFacePoints(int, int*&)

    • vtkTetra::GetEdgePoints(int, int*&)

    • vtkTetra::GetFacePoints(int, int*&)

    • vtkVoxel::GetEdgePoints(int, int*&)

    • vtkVoxel::GetFacePoints(int, int*&)

    • vtkWedge::GetEdgePoints(int, int*&)

    • vtkWedge::GetFacePoints(int, int*&)

  • Querying point cells with an unsigned short count of cells:

    • vtkPolyData::GetPointCells(vtkIdType, unsigned short&, vtkIdType*&)

    • vtkUnstructuredGrid::GetPointCells(vtkIdType, unsigned short&, vtkIdType*&)

  • vtkAlgorithm::SetProgress() has been replaced by vtkAlgorithm::UpdateProgress()

  • The following APIs have been replaced by vtkResourceFileLocator::SetLogVerbosity():

    • vtkResourceFileLocator::SetPrintDebugInformation()

    • vtkResourceFileLocator::GetPrintDebugInformation()

    • vtkResourceFileLocator::PrintDebugInformationOn()

    • vtkResourceFileLocator::PrintDebugInformationOff()

  • vtkIdFilter::SetIdsArrayName() has been replaced by vtkIdFilter::SetPointIdsArrayName() and vtkIdFilter::SetCellIdsArrayName()

  • vtkExtractTemporalFieldData has been replaced by vtkExtractExodusGlobalTemporalVariables

  • vtkTemporalStreamTracer and vtkPTemporalStreamTracer have been replaced by vtkParticleTracerBase, vtkParticleTracer, vtkParticlePathFilter, or vtkStreaklineFilter

  • vtkHyperTreeGridSource::GetMaximumLevel() and vtkHyperTreeGridSource::SetMaximumLevel() have been replaced by vtkHyperTreeGridSource::GetMaxDepth() and vtkHyperTreeGridSource::SetMaxDepth()

  • QVTKOpenGLNativeWidget, QVTKOpenGLStereoWidget, QVTKOpenGLWindow methods have been removed:

    • ::SetRenderWindow() is now ::setRenderWindow()

    • ::GetRenderWindow() is now ::renderWindow()

    • ::GetInteractor() and GetInteractorAdaptor() have been removed

    • ::setQVTKCursor() is now QWidget::setCursor()

    • ::setDefaultQVTKCursor() is now QWidget::setDefaultCursor()

  • QVTKOpenGLWidget is replaced by QVTKOpenGLStereoWidget

  • vtkJSONDataSetWriter::{Get,Set}FileName() is now vtkJSONDataSetWriter::{Get,Set}ArchiveName()

  • vtkLineRepresentation::SetRestrictFlag() has been removed

  • The following vtkRenderWindow methods have been removed:

    • GetIsPicking()

    • SetIsPicking()

    • IsPickingOn()

    • IsPickingOff()

  • The following APIs have been replaced by vtkShaderProperty methods of the same names:

    • vtkOpenGLPolyDataMapper::AddShaderReplacement()

    • vtkOpenGLPolyDataMapper::ClearShaderReplacement()

    • vtkOpenGLPolyDataMapper::ClearAllShaderReplacements()

    • vtkOpenGLPolyDataMapper::ClearAllShaderReplacements()

    • vtkOpenGLPolyDataMapper::SetVertexShaderCode()

    • vtkOpenGLPolyDataMapper::GetVertexShaderCode()

    • vtkOpenGLPolyDataMapper::SetFragmentShaderCode()

    • vtkOpenGLPolyDataMapper::GetFragmentShaderCode()

    • vtkOpenGLPolyDataMapper::SetGeometryShaderCode()

    • vtkOpenGLPolyDataMapper::GetGeometryShaderCode()

  • The following APIs have been removed (they supported the legacy shader replacements):

    • vtkOpenGLPolyDataMapper::GetLegacyShaderProperty()

    • vtkOpenGLPolyDataMapper::LegacyShaderProperty

  • The following APIs have been removed since only FLOATING_POINT mode is now supported:

    • vtkValuePass::SetRenderingMode()

    • vtkValuePass::GetRenderingMode()

    • vtkValuePass::SetInputArrayToProcess()

    • vtkValuePass::SetInputComponentToProcess()

    • vtkValuePass::SetScalarRange()

    • vtkValuePass::IsFloatingPointModeSupported()

    • vtkValuePass::ColorToValue()

  • vtkPythonInterpreter::GetPythonVerboseFlag() has been replaced by vtkPythonInterpreter::GetLogVerbosity()

  • vtkUnicodeString and vtkUnicodeStringArray have been removed. The vtkString and vtkStringArray classes are now fully UTF-8 aware. UTF-16 conversion is no longer possible through VTK APIs.

  • vtkVariant support for __int64 and unsigned __int64 has been removed. They have returned false for years.


  • vtkCellTypes no longer uses LocationArray. It was used for vtkUnstructuredGrid but is now stored with the class instead. As of this deprecation, all supported APIs are now only static methods.

  • vtkUnstructuredGrid::GetCellTypes is deprecated. Instead, vtkUnstructuredGrid::GetDistinctCellTypesArray should be used to access the set of cell types present in the grid.

  • vtkHyperTreeGrid::GetNumberOfVertices() is now vtkHyperTreeGrid::GetNumberOfCells() to align with VTK’s usage of the terminology.

  • Classes may now opt into the garbage collection mechanism by overriding the UsesGarbageCollector() method to return true instead of via the Register() and UnRegister() methods.

  • vtkCriticalSection is deprecated. vtkCriticalSection was intended to be deprecated in VTK 9.1.0, but a warning was never added to it. VTK now has the warning present as it was originally intended.


  • vtkChemistryConfigure.h has been deprecated. It previously only provided information to VTK’s test suite which is now routed internally instead. There is no replacement and any usage can simply be removed.

  • vtkMFCConfigure.h has been deprecated. It used to provide information used during the module’s build that is now passed through command line flags instead. There is no replacement and any usage can simply be removed.

  • vtkMeshQuality’s mechanism to run the filter in legacy mode is deprecated. In particular the CompatibilityMode and Volume members are no longer necessary with the new mode and should not be used anymore.

  • vtkMeshQuality method renames:

    • SetQuadQualityMeasureToMaxEdgeRatios to SetQuadQualityMeasureToMaxEdgeRatio

    • SetHexQualityMeasureToMaxEdgeRatios to SetHexQualityMeasureToMaxEdgeRatio

    • QuadMaxEdgeRatios to QuadMaxEdgeRatio

    • TetShapeandSize to TetShapeAndSize

  • vtkDescriptiveStatistics::UnbiasedVariance, vtkDescriptiveStatistics::G1Skewness, and vtkDescriptiveStatistics::G2Kurtosis are now deprecated in favor of a single vtkDescriptiveStatistics::SampleEstimate instead.

  • vtkCellLocator, vtkStaticCellLocator, vtkCellTreeLocator, vtkModifiedBSPTree, and vtkLinearTransformCellLocator all have deprecated their LazyEvaluation flag due to thread-safety issues. BuildLocatorIfNeeded is also deprecated for those that supported it.

  • vtkStaticCellLocator:UseDiagonalLengthTolerance() has been deprecated because it no longer uses Tolerance.

  • vtkParticleTracerBase::StaticMesh is deprecated in preference to vtkParticleTracerBase::SetMeshOverTime (an enumeration rather than a boolean).

  • vtkCachingInterpolatedVelocityField, vtkCellLocatorInterpolatedVelocityField, and vtkInterpolatedVelocityField filters have been deprecated. Instead, use:

    • vtkCellLocatorInterpolatedVelocityField becomes vtkCompositeInterpolatedVelocityField with vtkCellLocatorStrategy.

    • vtkInterpolatedVelocityField becomes vtkCompositeInterpolatedVelocityField with vtkClosestPointStrategy.

    • vtkCachingInterpolatedVelocityField becomes vtkCompositeInterpolatedVelocityField with the appropriate strategy.


  • vtkExtractSelectedThresholds, vtkExtractSelectedPolyDataIds, vtkExtractSelectedLocations, vtkExtractSelectedIds, and vtkExtractSelectedBlock can now be replaced by vtkExtractSelection.

  • vtkHierarchicalBoxDataIterator is now deprecated in favor of vtkUniformGridAMRDataIterator.


  • vtkOSPRayRendererNode::VOLUME_ANISOTROPY, vtkOSPRayRendererNode::GetVolumeAnisotropy(), and vtkOSPRayRendererNode::SetVolumeAnistropy() are deprecated in favor ofvtkVolumeProperty::SetScatteringAnisotropy() and vtkVolumeProperty::GetScatteringAnisotropy().

Other Changes#