Skip to content
Snippets Groups Projects
Commit daba6b49 authored by Sankhesh Jhaveri's avatar Sankhesh Jhaveri :speech_balloon: Committed by Kitware Robot
Browse files

Merge topic 'release-notes-9.4' into release


74974da0 VTK v9.4.0 release notes

Acked-by: default avatarKitware Robot <kwrobot@kitware.com>
Tested-by: default avatarbuildbot <buildbot@kitware.com>
Merge-request: !11674
parents 5e94e8a3 74974da0
No related branches found
No related tags found
No related merge requests found
Showing
with 0 additions and 159 deletions
## Add implicit array support to HTG probe filter
vtkHyperTreeGridProbeFilter now exposes the UseImplictArray option.
When on, the filter will use indexed arrays internally to improve the memory consumption of the filter,
at the price of a higher computational cost.
This option is disabled on vtkPHyperTreeGridProbeFilter until vtkHyperTreeGrid fully supports global IDs.
# Add marshal wrap hints
VTK now auto generates (de)serialization code in C++ for classes annotated by
the `VTK_MARSHALAUTO` wrapping hint.
# Add object manager
You can now track the state of marshallable classes derived from `vtkObjectBase`
in `json` format using the `vtkObjectManager` class.
# Add WriteTimeValues option for vtkXMLWriterBase
You can now choose to write or not field data `TimeValue` with
`SetWriteTimeValues()` / `GetWriteTimeValues()` methods for
vtkXMLWriterBase and subclasses.
## Add optional value type for ValueRange
You can now force a value type for the `ValueRange` of a generic data array.
You can also get a pointer to the underlying data with the `ValueRange::data()` member function. This allows code in VTK
which used `GetPointer(0)` on an array under the assumption that it was available as `vtkGenericDataArrayTemplate` or derived from it.
This is helpful when all you have is a `vtkDataArray` and the knowledge of underlying data type.
Ex:
```c++
vtkNew<MyCustomDataArrayThatIsNotDerivedFromAoSDataArrayTemplate<vtkTypeUInt32>> arr;
arr->SetNumberOfValues(2);
arr->FillValue(0);
auto range = vtk::DataArrayValueRange<1, vtkTypeUInt32>(arr);
static_assert(std::is_same<typename vtk::detail::StripPointers<decltype(range.data())>::type, vtkTypeUInt32>::value); // always true.
static_assert(std::is_same<typename decltype(range[0]), vtkTypeUInt32>::value); // always true.
```
## Add Power Preference Option For WebGPU Render Window
`vtkWebGPURenderWindow` now provides a way to choose power preference
before initialization. The default preference is high-performance.
You may indicate preference like so:
1. High performance
```c++
vtkNew<vtkRenderWindow> renWin
// requests webgpu implementation for a high performance adapter
renderWindow->PreferHighPerformanceAdapter();
//..
renderWindow->Render();
```
2. Power savings
```c++
vtkNew<vtkRenderWindow> renWin
// requests webgpu implementation for a low-power adapter
renderWindow->PreferLowPowerAdapter();
//..
renderWindow->Render();
```
# Add properties for python wrappers
The properties of a VTK object can now be accessed in a pythonic style.
Ex:
```python
i = vtk.vtkImageData()
print(i.dimensions) # prints (0, 0, 0)
i.dimensions = [2, 2, 3]
print(i.dimensions) # prints (2, 2, 3)
print(i.reference_count) # prints 1
```
## Add option RectangularShape to vtkFinitePlaneRepresentation
Using the option `RectangularShape` on the
`vtkFinitePlaneRepresentation` for the `vtkFinitePlaneWidget`, the
widget stays rectangular when moving the two control points v1 and
v1. In this way, the user can adjust the width and height of the
widget rather than changing its shape to be a parallelogram.
# Add methods to printand serialize values of a vtkAbstractArray
You can now print the values of a `vtkAbstractArray` to a stream object by invoking
`PrintValues(stream)`.
Ex:
```c++
vtkNew<vtkFloatArray> array;
array->InsertNextValue(1.0);
array->PrintValues(std::cout);
```
You can also serialize the values of a `vtkAbstractArray` into `json` with
`nlohmann::json vtkAbstractArray::SerializeValues()`
# Add new method to set elements for vtkMatrix3x3 and vtkMatrix4x4
You can now call `vtkMatrix3x3::SetData(const double[9])` or `vtkMatrix4x4::SetData(const double[16])`
to initialize the elements of the matrices from external memory.
# Add support for non-linear vtkCellGrid rendering
VTK now renders vtkCellGrid instances with up-to quadratic geometry using dynamic distance-based tessellation shaders.
![quadratic-vtkcellgrid-tessellation](quadratic-vtkcellgrid-tessellation.png)
# Add support for using threads in vtk.wasm
You can now enable multithreading in VTK wasm build by turning on the
`VTK_WEBASSEMBLY_THREADS` option during CMake configuration.
# Add support for 64-bit in vtk.wasm
You can now enable 64-bit in VTK wasm build by turning on the
`VTK_WEBASSEMBLY_64_BIT` option during CMake configuration.
# Add support for WebGL power settings
You can now set the power preference for WebGL similarly to what you can do for WebGPU
- Added a new `AddUserPythonPath` static method for `vtkPythonInterpreter` that can be used to add user python paths.
## Add temporal OverlappingAMR support in vtkHDFReader
The vtkHDFReader has been updated to support temporal overlappingAMR
based on new specification of the VTKHDF File Format regarding this use case.
# Add a new temporal smoothing filter
Adds vtkTemporalSmoothingFilter which smooths point and cell data from a temporal source by averaging the values over a user-provided temporal window
## Add CONVERGE CFD CGNS reader
A new reader for CGNS files produced by CONVERGE CFD (`.cgns` extension) is now available.
Mesh, boundaries and parcels are read and stored as partitioned datasets
of a partitioned dataset collection to manipulate them separately.
The module `VTK::IOCGNSReader` is required to use this reader.
# New OpenGL polydata mapper for devices and environments with low memory
The new `vtkOpenGLLowMemoryPolyDataMapper` is the default factory override
for `vtkPolyDataMapper` when `VTK_OPENGL_USE_GLES=ON`. This mapper is helpful because:
1. `vtkOpenGLPolyDataMapper` uses geometry shaders which are unavailable in GLES 3.0.
2. The `vtkOpenGLES30PolyDataMapper` consumes 10x more memory than the mesh size.
This mapper uses [vertex-pulling](https://webglfundamentals.org/webgl/lessons/webgl-pulling-vertices.html)
in the vertex shader to draw primitives and fragment shading to evaluate normals and colors.
## Add a magnitude option to vtkThreshold
You can now use input array's magnitude values for thresholding data.
To do so, you just need to set the selected component (when on SELECTED
mode) as the number of component of the input array.
```cpp
// let's say you have a source with a 'Speed' array
// which has 3 components
vtkNew<vtkThreshold> threshold;
threshold->SetInputConnection(source->GetOutputPort());
threshold->SetInputArrayToProcess(0, 0, 0, 0, "Speed");
threshold->SetThresholdFunction(vtkThreshold::THRESHOLD_UPPER);
threshold->SetUpperThreshold(4.2);
threshold->SetComponentModeToUseSelected();
threshold->SetSelectedComponent(3); // Select magnitude
threshold->Update();
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment