9.4#
Released on 2024-11-22.
VTK 9.4.0 Release Notes#
Changes made since VTK 9.3.1 include the following.
New Features#
Annotation#
💥 New
vtkPolarAxesActor2D
avaialble for drawing a polar axes overlay.
DataModel#
💥 New
vtkImplicitArray
template class brings memory efficiency to vtk data array applications. Author’s noteThe new
vtkAnnulus
implicit function represents an infinite annulus (two co-axial cylinders). Author’s note💥 VTK now supports higher order Galerkin cells via a new data object
vtkCellGrid
. Author’s note
ExecutionModel#
New information keys added to allow filters to execute without any prior temporal access for in-situ visualization. Author’s note
Filters#
New
vtkAppendPartitionedDataSetCollection
class to append multiple partitioned dataset collections into a single partioned dataset collection. Author’s noteNew
vtkCriticalTime
filter to generate time step values based on user-specified threshold criteria. Author’s notevtkForceStaticMesh
is a new filter that allows assigning varying dataset attributes on a static geometry. Author’s note💥 New filters
vtkForEach
andvtkEndFor
allow logical pipeline execution over avtkExecutionRange
. Author’s noteVTK now supports spatio-temporal harmonics data generation. Author’s note
vtkHyperTreeGrid
dataset is now supported by a broader range of filters:The
vtkRandomAttribute
generator now supports HTGs as input.The
vtkGenerateIds
filter replaces thevtkIdFilter
and now supportvtkHyperTreeGrid
in addition tovtkDataSet
. ThevtkIdFilter
is now deprecated.The dedicated
vtkHyperTreeGridGenerateProcessIds
filter has been added to generate process IDs.The dedicated
vtkHyperTreeGridGenerateGlobalIds
filter has been added to generate global IDs.
Feature edges detection is now supported for
vtkHyperTreeGrid
datasets via the newvtkHyperTreeGridFeatureEdges
filter.vtkHyperTreeGridProbeFilter
obtained aUseImplicitArray
option that makes the filter use indexed arrays to lower memory consumption, albeit with higher computational cost.New
vtkDataObjectMeshCache
allows storing and reusingvtkDataSet
and subclasses. Author’s noteNew
vtkTemporalSmoothingFilter
averages input scalar values over a temporal window.Introduced
vtkBatch
that provides multithreading to improve vtkAlgorithm performance. Author’s noteA new
vtkGoldenBallSource
algorithm has been added to create a solid tetrahedralized ball. Author’s note
Interaction#
The
vtkRenderWindowInteractor::InteractorManagesTheEventLoop
flag can be used to integrate a VTK interactive application within an external event loop. Author’s notevtkBoxRepresentation
has a newSetCorners
/GetCorners
to control 3D coordinate bounds of thevtkBoxWidget
.Using the option
RectangularShape
on thevtkFinitePlaneRepresentation
for thevtkFinitePlaneWidget
, the widget stays rectangular when moving the two control points.The vtkCaptionRepresentation can now be sized using a configurable API
SetFit
. The two options available to the user areVTK_FIT_TO_BORDER
andVTK_FIT_TO_TEXT
.The new
vtkImplicitConeWidget
represents an infinite cone parameterized by an axis, and angle between the sides of the cone and its axis, and an origin point.
I/O#
New
vtkBTSReader
for reading Engys’ HELYX and ELEMENTS format data.Author’s noteNew
vtkERFReader
can be used to read ERF HDF5 files into a VTK application. Author’s noteNew
vtkFDSReader
for reading data produced by Fire Dynamics Simulator. Author’s noteThe
vtkXdmfReader
now supports arbitary polyhedra cell types. Author’s notevtkCGNSReader
is a new reader for CGNS files produced by the CONVERGE CFD (*.cgns).vtkHDFWriter
is a new writer that supports most VTK datasets including temporal and composite data to the VTKHDF file format. Author’s noteThe new
vtkAlembicExporter
exports the current view to the Alembic file format “.abc” file. Author’s noteThe
vtkFLUENTReader
is now also able to read FLUENT mesh files (*.msh).
Python#
💥 VTK now supports a more pythonic style object construction via property arguments. Author’s note
💥 The pythonic API support is also extended to connecting pipelines. Author’s note
In
dataset_adapter
, CompositeDataset can now accessGlobalData
, i.e. theFieldData
of its root.VTK now provides wheels using EGL for rendering available from the VTK Package Registry.
VTK now provides Python 3.13 wheels available from PyPI and the VTK Package Registry.
Added a new
AddUserPythonPath
static method forvtkPythonInterpreter
that can be used to add user python paths.
Rendering#
💥 New ANARI rendering backend available via the
vtkRenderingANARI
module. Author’s noteVTK now loads the appropriate OpenGL library at runtime using
glad
and no longer provides theVTK::opengl
module. Author’s noteNew ability to choose graphics backend preference for WebGPU via
SetBackendType
.Author’s noteThe
vtkCellGridMapper
now supports hardware selection to pick actors mappingvtkCellGrid
datasets. The selection nodes provide additional properties like type of cell selected.💥 VTK now supports OpenGL tessellation shaders. Author’s note
VTK now renders
vtkCellGrid
instances with upto quadratic geometry using dynamic distance-based tessellation shaders.The new
vtkOpenGLLowMemoryPolyDataMapper
is the default factory override forvtkPolyDataMapper
whenVTK_OPENGL_USE_GLES=ON
.vtkArrayRenderer
is a new mapper to prototype OpenGL shader code usingvtkDataArray
bound to texture buffers. Author’s noteA new alternative tone mapping method has been added to
vtkToneMappingPass
based on the reference implementation of Khronos PBR Neutral.💥 New compute shader API allows offloading work from the CPU to the GPU using webGPU compute shaders.
The new
vtkWebGPUComputeFrustumCuller
culls actors to the camera frustum using webGPU compute shaders.The new
vtkWebGPUComputeOcclusionCuller
uses the compute API for hierarchical two-pass occlusion culling. Author’s noteThe new
vtkWebGPUComputePointCloudMapper
is a webGPU compute shader implementation based on the paper from Shütz et. al..💥 VTK now supports zSpace Inspire devices via the new
vtkZSpaceWin32RenderWindow
andvtkZSpaceGenericRenderWindow
.
Testing#
💥 New image testing framework using the Structural Similarity Index (SSIM). Author’s note
ThirdParty#
New
VTK::catalyst
module added to support Catalyst directly. Author’s note
VR#
VTK now supports a collaboration mode when rendering across multiple CAVE systems. Author’s note
VTK OpenXR module supports depth information to allow hologram stability on augmented reality devices like Microsoft Hololens 2.
VTK now supports basic rendering of controller models under OpenXR. Author’s note
WebAssembly#
💥 The new
vtkWebAssemblyOpenGLRenderWindow
andvtkWebAssemblyRenderWindowInteractor
use Emscripten HTML5 API for event handling bringing in wasm64 and web-worker support.You can now enable 64-bit in VTK wasm build with the
VTK_WEBASSEMBLY_64_BIT
CMake option.You can now enable multithreading in VTK wasm build with the
VTK_WEBASSEMBLY_THREADS
option.The new
vtkRemoteInteractionAdapter
maps vtk-js interaction events to vtk in the form of a json-formatted string applied tovtkRenderer
.
Wrapping#
VTK now auto generates (de)serialization code in C++ for classes annotated by the
VTK_MARSHALAUTO
wrapping hint.The new
vtkObjectManager
class allows applications to track the state of marshallable classes.
Changes#
Build#
ABI mangling using
inline namespace
in VTK has matured with better guards and a CI build to catch issues. :warning: BREAKING_CHANGES Author’s note‼️ Some function-like macros now require trailing semi-colons. Author’s note
vtkThreadedTaskQueue
andvtkThreadedCallbackQueue
have been moved from the Parallel/Core module to the Common/Core module to stay consistent with other SMP related tools.
The
_vtk_module_depfile_args
internal command is now available to computeadd_custom_command(DEPFILE)
arguments based on the CMake version and generator.
The
_vtk_module_add_file_set
internal API has been added to add file sets to targets in a CMake-version portable way.The
vtk_module_build
API has learned a newUSE_FILE_SETS
API to control the usage of file sets for projects that are not yet ready to use them.The
vtk_module_link
CMake module API learned theNO_KIT_EXPORT_IF_SHARED
argument to prevent exporting of mentions of imported targets coming from avtk_module_find_package(PRIVATE_IF_SHARED)
call.The
vtk_object_factory_configure
CMake API now supports anINITIAL_CODE_FILE
argument to avoid having to get arbitrary source through CMake’s argument parser.vtkVersionQuick
header now has a newVTK_EPOCH_VERSION
macro defined as the actualVTK_BUILD_VERSION
value for release-track development.
DataModel#
Some of the
vtkDataSet
subclasses now make use ofvtkStructuredPoints
,vtkStructuredCells
to improve vtk performance. Author’s noteYou can now force a value type for the
ValueRange
of a generic data array and access the pointer viaValueRange::data()
. This allows dynamic type casting for unknownvtkDataArray
types.vtkDataArray
tuple access can now allows for 64-bit integer data viaSetIntegerTuple
/GetIntegerTuple
. Author’s notevtkCellArray
default storage type is now configurable at runtime viaSetDefaultStorageIs64Bit()
.
Filters#
The
vtkHyperTreeGridThreshold
now exposes aSetMemoryStrategy
method for choosing the structure of its output in memory. Author’s noteMore
vtkAbstractTransform
subclasses ported to usevtkSMPTools
acceleration. Author’s noteYou can now use the input array magnitude values for thresholding data with
vtkThreshold
by setting the component mode -SetComponentModeToUseSelected
.The
vtkDecimatePolylineFilter
has been refactored to use a strategy pattern for decimation. Author’s note
I/O#
vtkHDFReader
now supports composite datasets likevtkPartitionedDataSetCollection
,vtkMultiBlockDataSet
and temporal overlappingAMR based on user specified parameters.The
vtkHDFReader
andvtkIOSSReader
gained a new caching parameter to enable/disable caching temporal data from time-series datasets.vtkFidesReader
has a newCreateSharedPoints
parameter to create shared points at the interface between blocks of uniform grids. It can also choose which arrays to load.The
vtkFLUENTReader
introduced loading zones from the FLUENT .msh files. :warning: BREAKING_CHANGES Author’s notevtkXMLWriterBase
subclasses can now choose to writeTimeValue
field data withSetWriteTimeValues()
.vtkCityGMLReader::SetField
methods allow setting texture paths or material colors for polydata in a multiblock dataset.The
vtkADIOS2VTXReader
has improved error reporting and build changes. Author’s noteAdded support for AMReX-based simulation codes to pass data to ParaView Catalyst. Author’s note
vtkCesium3DTilesReader
has been extended support additional features. :warning: BREAKING_CHANGES Author’s notevtkGLTFExporter
now has a configurable API for whether to export NaN color or not.
Rendering#
vtkOpenGLPolyDataMapper2D
now supports custom uniforms set using thevtkShaderProperty
for avtkActor2D
.One can now specify
vtkImageData
geometry (origin, spacing, axis directions) from a 4x4 matrix using the newApplyIndexToPhysicalMatrix
andApplyPhysicalToIndexMatrix
methods.vtkWebAssemblyRenderWindowInteractor
andvtkSDL2OpenGLRenderWindow
classes now support hi-dpi screens.The
vtkUnstructuredGridGeometryFilter::MatchBoundariesIgnoringCellOrder
option allows disabling interior faces of different order cells in polyhedral meshes. Author’s notevtkWebGPURenderWindow
supports switching power preference viaPreferHighPerformanceAdapter()
/PreferLowPowerAdapter()
.vtkXWebGPURenderWindow
is now the default factory override forvtkRenderWindow
when using the experimental WebGPU backend on Linux desktops.vtkShaderProgram
now supports OpenGL compute shaders.SDL2 has been disabled by default and new WebAssembly classes are recommended. Author’s note
vtkExtractSelection
can now skip hidden points/cells using theTestGhostArrays
option. It has also been fixed to work forvtkUniformGridAMR
subclasses.vtkScalarBarActor
now supports avtkPiecewiseFunction
as a scalar opacity function in addition to the color lookup table.vtkOpenGLRenderWindow
now allows to blit the depth buffer as well as set the depth buffer bit size of render buffers for working in external OpenGL context environments.
Wrapping#
VTK’s wrapping tools now support depfile output via the
-MF
flag.vtkWrap_WarnEmpty
is now available to warn when empty bindings are generated.
Fixes/improvements#
Accelerators#
Changed the VTK to VTK-m array conversion routines. Author’s note
Annotation#
vtkAxisActor2D
’s tick and label positioning has been improved.
Build#
Optional dependencies now have better logic for detecting the usability of external optional dependencies.
Building packages against static VTK libraries with the MSVC compiler no longer fails due to a missing symbol for
vtkSMPToolsImpl::IsParallelScope
.
Charts#
vtkChartLegend
can now specify the anchor point in normalized point coordinates to preserve across chart resizes.
Core#
New
vtkSMPTools::GetEstimatedDefaultNumberOfThreads
available to introspect the default number of threads that SMP tasks will use.vtkStringToken
has been moved to a third-party library (ThirdParty/token
). Author’s note
DataModel#
vtkCone
now exposes getters and setters for its axis and origin parameters.Fixed normal computation in the
vtkCell::GetFace
method for 3D cells.vtkCell
triangulation api was refactored to improve performance and reduce code redundancy. Author’s notevtkPolygon
triangulation implementation has been improved. Author’s noteMultiple improvements to VTK’s polyhedral cell storage. Author’s note
Filters#
vtkUnstructuredGrid::InsertFace
is improved slightly by avoiding duplicate point searches.The
vtkConduitSource
has been updated to usevtkDataObject
API and it has been improved to output field data at the leaf level of thevtkPartitionedDataSet
.Fixed
vtkMergeArrays
for temporal data.Improved the
vtkOrientPolyData
seed face cell selection algorithm.vtkReflectionFilter
supports theVTK_PIXEL
cell type.Fixed scaling error in
vtkWindowdSincPolyDataFilter
. Author’s notevtkGhostCellsGenerator
can now generate points/cells global and process ids.vtkIntegrateAttributes
has been multithreaded using vtkSMPTools.vtkRedistributeDataSetFilter
was refactored for better modularity. :warning: BREAKING_CHANGES Author’s noteOptimized
vtkUnstructuredGridGeometryFilter
for higher order as well as degenerate cells. Author’s noteRefactored
vtkPolyDataNormals
for better code concurrency. Author’s notevtkDataSetSurfaceFilter
now supports non-linear cells for the subdivision algorithm.
I/O#
vtkDelimitedTextReader
has a much lower memory consumtion overhead and gained performance improvements. Author’s notevtkEnsightGoldCombinedReader
andvtkEnsightSOSGoldReader
have been rewritten for better overall functionality. Author’s noteThe
vtkFDSReader
now correctly supports reading slice & boundaries files (.sf & .bf), for both point and cell-centered data.vtkIOSSReader
has been fixed for 21-node wedge and 18-node pyramid cells. It has also been refactored for performance improvements and code readability.
Interaction#
Multiple improvements have been made to the multi-touch event based gesture handling in VTK. :warning: BREAKING_CHANGES Author’s note
Python#
Better support for single char parameters in vtk functions via python. Author’s note
Improved python concurrency via wrapper hints. Author’s note
Logic to enable module import at vtk module load time. Author’s note
Rendering#
vtkShadowMapBakerPass
exposes setters and getters forExponentialConstant
used in the exponential shadow maps algorithm for shadow rendering.Fixed rendering lines as tubes without lighting with the
vtkOpenGLPolyDataMapper
.Scalar coloring has been fixed for the
vtkCompositePolyDataMapper
.Ensure that the
vtkHardwarePicker
returns the ID from the closest node.Fixed blending issues with the
vtkOrderIndependentTranslucentPass
.vtkLegendScaleActor
improvements. Author’s noteOn Linux (and any platform that uses GLX for OpenGL), VTK will now ask for
GLX_CONTEXT_PROFILE_MASK_ARB
andGLX_CONTEXT_CORE_PROFILE_BIT_ARB
when creating a rendering context.Infinite floor plane support in VTK via
vtkSkybox
. Author’s note
System#
vtkSocket
can now bind to any user-specified address to restrict interfaces thevtkServerSocket
can be accessed from.
VR#
Improved head-mounted display tracking in
vtkVRRenderWindow
. Author’s noteAdd explicit support for PHYSICAL and WORLD coordinate systems via the 4x4 matrix -
PhysicalToWorldMatrix
.
Deprecations/Removals#
Python 3.6 and 3.7 are end-of-life. VTK 9.4 dropped official support for it from CI and wheel builds.
The following APIs were deprecated in 9.2 or earlier and are now removed:
vtkObjectBase
’sRegister
is no longer virtual. To control register counting/garbage collecting behavior overridevtkObjectBase::UsesGarbageCollector
instead. The following classes have been changed to meet this requirement:vtkInformationKey
vtkGarbageCollectorImpl
vtkOpenFOAMReader::SetDecomposePolyhedra
has been removed.vtkCriticalSection
has been removed (usestd::mutex
instead).vtkHierarchicalBoxDataIterator
class removed. UsevtkUniformGridAMRDataIterator
instead.vtkHyperTreeCursor
class removed. Use other Hyper Tree Grid cursors instead.The following classes have been removed in favor of
vtkExtractSelection
:vtkExtractSelectedBlock
vtkExtractSelectedIds
vtkExtractSelectedLocations
vtkExtractSelectedPolyDataIds
vtkExtractSelectedThresholds
vtkCompositeInterpolatedVelocityField
replaces the following classes:vtkCachingInterpolatedVelocityField
vtkCellLocatorInterpolatedVelocityField
vtkInterpolatedVelocityField
vtkAbstractCellLocator
has the following members removed for thread safety:SetLazyEvaluation
GetLazyEvaluation
LazyEvaluationOn
LazyEvaluationOff
vtkCellLocator::BuildLocatorIfNeeded
removed because LazyEvaluation has been deprecated.vtkCellTree::BuildLocatorIfNeeded
removed because LazyEvaluation has been deprecated.vtkInteractorEventRecorder::ReadEvent()
has been moved toReadEvent(const std::string&)
.vtkHyperTreeGrid::GetNumberOfVertices
deprecated in favor ofGetNumberOfCells()
.vtkVRCamera
’sGetTrackingToDCMatrix
removed. UseGetPhysicalToProjectionMatrix
instead.vtkTemporalInterpolatedVelocityField
SetDataSetAtTime
removed, useSetMeshOverTime
instead.IsStatic
removed, useGetMeshOverTime
instead.
vtkParticleTracerBase
SetStaticMesh
removed, useSetMeshOverTime
instead.GetStaticMesh
removed, useGetMeshOverTime
instead.
vtkTableFFT
’sPrefixOutputArrays
has been deprecated in favor of always keeping the output array names the same as the input.vtkGeometryFilter
’sSetDegree
,GetDegreeMinValue
,GetDegreeMaxValue
,GetDegree
,SetLocator
,GetLocator
, andCreateDefaultLocator
have been removed.vtkCellTypes
location information has been removed:SetCellTypes(vtkIdType ncells, vtkUnsignedCharArray* cellTypes, vtkIdTypeArray* cellLocations)
use versionSetCellTypes
withoutcellLocations
instead.GetCellLocation
removed.
vtkStaticCellLocator
no longer usesTolerance
which has deprecated theUseDiagonalLengthTolerance
flag.vtkDescriptiveStatistics
’sUnbiasedVariance
,G1Skewness
, andG2Kurtosis
parameters have been removed. UseSampleEstimate
instead.vtkBorderRepresentation::SetBWActorDisplayOverlay
is deprecated. Use SetBWActorDisplayOverlayEdges
orSetBWActorDisplayOverlayPolygon
instead.vtkOSPRayRendererNode
’sVolumeAnisotropy
parameter has been removed.vtkMeshQuality
has removed the following flags:Volume
CompatibilityMode
Removed
_InteractionState
typedef from the following classes:vtkQWidgetRepresentation
vtkAffineRepresentation
vtkBalloonRepresentation
vtkBorderRepresentation
vtkButtonRepresentation
vtkCompassRepresentation
vtkContinuousValueWidgetRepresentation
vtkCoordinateFrameRepresentation
vtkCurveRepresentation
vtkDisplaySizedImplicitPlaneRepresentation
vtkFinitePlaneRepresentation
vtkHandleRepresentation
vtkImplicitCylinderRepresentation
vtkImplicitPlaneRepresentation
vtkMagnifierRepresentation
vtkParallelopipedRepresentation
vtkPointCloudRepresentation
vtkRectilinearWipeRepresentation
vtkSliderRepresentation
vtkVRPanelRepresentation
Removed
_WidgetState
typedef from the following classes:vtkQWidgetWidget
vtkAffineWidget
vtkAxesTransformWidget
vtkBorderWidget
vtkBoxWidget2
vtkButtonWidget
vtkCameraPathWidget
vtkCenteredSliderWidget
vtkCompassWidget
vtkContinuousValueWidget
vtkCoordinateFrameWidget
vtkDisplaySizedImplicitPlaneWidget
vtkFinitePlaneWidget
vtkHandleWidget
vtkImplicitCylinderWidget
vtkImplicitPlaneWidget2
vtkLineWidget2
vtkMagnifierWidget
vtkPointCloudWidget
vtkPolyLineWidget
vtkRectilinearWipeWidget
vtkResliceCursorWidget
vtkSliderWidget
vtkSphereWidget2
vtkSplineWidget2
vtkTensorWidget
vtkVRMenuWidget
vtkVRPanelWidget
Removed
_HighlightState
typedef fromvtkButtonRepresentation
.Removed
_Picking_Mode
typedef fromvtkPointCloudRepresentation
.Removed
_SliderShape
typedef fromvtkSliderRepresentation3D
.vtkChemistryConfigure.h
has been removed.vtkMFCConfigure.h
has been removed.