use NewFilterField

This commit is contained in:
Li-Ta Lo 2022-08-18 08:35:30 -06:00
parent a9d569f79c
commit 3d07503af1
4 changed files with 8 additions and 39 deletions

@ -20,7 +20,6 @@ set(headers
set(device_sources
Amr.cxx
Oscillator.cxx
Source.cxx
Tangle.cxx
Wavelet.cxx
PerlinNoise.cxx

@ -11,7 +11,7 @@
#include <random>
#include <vtkm/VectorAnalysis.h>
#include <vtkm/filter/FilterField.h>
#include <vtkm/filter/NewFilterField.h>
#include <vtkm/source/PerlinNoise.h>
#include <vtkm/worklet/WorkletMapTopology.h>
@ -124,7 +124,7 @@ struct PerlinNoiseWorklet : public vtkm::worklet::WorkletVisitPointsWithCells
vtkm::Id Repeat;
};
class PerlinNoiseField : public vtkm::filter::FilterField<PerlinNoiseField>
class PerlinNoiseField : public vtkm::filter::NewFilterField
{
public:
VTKM_CONT PerlinNoiseField(vtkm::IdComponent tableSize, vtkm::Id seed)
@ -135,22 +135,16 @@ public:
this->SetUseCoordinateSystemAsField(true);
}
template <typename FieldType, typename DerivedPolicy>
VTKM_CONT vtkm::cont::DataSet DoExecute(
const vtkm::cont::DataSet& input,
const FieldType& vtkmNotUsed(field),
const vtkm::filter::FieldMetadata& fieldMetadata,
vtkm::filter::PolicyBase<DerivedPolicy> vtkmNotUsed(policy))
private:
VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input) override
{
vtkm::cont::ArrayHandle<vtkm::FloatDefault> noise;
PerlinNoiseWorklet worklet{ this->TableSize };
this->Invoke(
worklet, input.GetCellSet(), input.GetCoordinateSystem(), this->Permutations, noise);
return vtkm::filter::CreateResult(input, noise, this->GetOutputFieldName(), fieldMetadata);
return this->CreateResultFieldPoint(input, this->GetOutputFieldName(), noise);
}
private:
VTKM_CONT void GeneratePermutations()
{
std::mt19937_64 rng;

@ -1,24 +0,0 @@
//============================================================================
// Copyright (c) Kitware, Inc.
// All rights reserved.
// See LICENSE.txt for details.
//
// This software is distributed WITHOUT ANY WARRANTY; without even
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
// PURPOSE. See the above copyright notice for more information.
//============================================================================
#include <vtkm/source/Source.h>
namespace vtkm
{
namespace source
{
//Fix the vtable for Source to be in the vtkm_source library
Source::Source() = default;
Source::~Source() = default;
} // namespace source
} // namespace vtkm

@ -14,6 +14,7 @@
#include <vtkm/cont/DataSet.h>
#include <vtkm/cont/Invoker.h>
#include <vtkm/source/vtkm_source_export.h>
namespace vtkm
{
namespace source
@ -23,14 +24,13 @@ class VTKM_SOURCE_EXPORT Source
{
public:
VTKM_CONT
Source();
virtual ~Source() = default;
VTKM_CONT
virtual ~Source();
vtkm::cont::DataSet Execute() const { return this->DoExecute(); }
protected:
VTKM_CONT
virtual vtkm::cont::DataSet DoExecute() const = 0;
vtkm::cont::Invoker Invoke;