This project is archived. Its data is read-only.
Consistent field mapping
The `MapFieldOntoOutput` implementations for the filters are often missing or inconsistent. Let's refactor the implementations so that: - Any filter that modifies points should remap point fields. - Any filter that modifies cells should remap cell fields. - The worklet method that remaps point fields should be named `ProcessPointField`. - The worklet method that remaps cell fields should be named `ProcessCellField`. - The remapping fields should take an input `ArrayHandle` and `DeviceAdapterTag` and return an `ArrayHandle<ValueType>` with default storage (no fancy array handles), e.g. ``` template <typename ValueType, typename StorageTagIn, typename DeviceAdapterTag> using MapSignature = ArrayHandle<ValueType>(const ArrayHandle<ValueType, StorageTagIn>&, const DeviceAdapterTag &) const ``` Questions: - If a filter doesn't modify points, should `DoMapField` return `false` or pass the input through and return true? - Does the proposed signature capture all of the possible data needed for remapping? (Policies, etc?) - Should the output storage type for mapped fields match the input, or use the default storage? Current state of the filters: - [x] `CellAverage` No modifications to points or cells. - [x] `CleanGrid` No modification to cells, removes points. - [x] `ClipWithField` Modifies points and cells. !799 - [x] `ClipWithImplicitFunction` Modifies points and cells. !799 - [x] `ContourTreeUniform` No modification to points or cells. - [x] `Entropy` No modification to points or cells. - [x] `ExternalFaces` Modifies points and cells. (skipping) - [x] `ExtractGeometry` Modifies cells. !803 - [x] `ExtractPoints` Modifies cells and points. Cells are not mappable. - [x] `ExtractStructured` Modifies cells and points. Everything looks good! - [x] `Gradient` Field only. - [x] `Histogram` Field only. - [x] `MarchingCubes` !793 vtk/vtk!2924 - [x] `Mask` Modifies cells. !805 - [x] `MaskPoints` Modifies points and cells. Cells are not mappable. - [x] `PointAverage` Field only. - [x] `PointElevation` Field only. - [x] `Tetrahedralize` Modifies cells. !806 - [x] `Threshold` Modifies cells. !808 - [x] `ThresholdPoints` Modifies points and cells. Cells not mappable. - [x] `Triangulate` Modifies cells. !810 - [x] `VectorMagnitude` Field only. - [x] `VertexClustering` Modifies points and cells. Skipping for now (See #161)
issue