//============================================================================ // 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 #include #include namespace vtkm { namespace filter { //----------------------------------------------------------------------------- inline VTKM_CONT WarpScalar::WarpScalar(vtkm::FloatDefault scaleAmount) : vtkm::filter::FilterField() , Worklet() , NormalFieldName("normal") , NormalFieldAssociation(vtkm::cont::Field::Association::ANY) , ScalarFactorFieldName("scalarfactor") , ScalarFactorFieldAssociation(vtkm::cont::Field::Association::ANY) , ScaleAmount(scaleAmount) { this->SetOutputFieldName("warpscalar"); } //----------------------------------------------------------------------------- template inline VTKM_CONT vtkm::cont::DataSet WarpScalar::DoExecute( const vtkm::cont::DataSet& inDataSet, const vtkm::cont::ArrayHandle, StorageType>& field, const vtkm::filter::FieldMetadata& fieldMetadata, vtkm::filter::PolicyBase policy) { using vecType = vtkm::Vec; auto normalF = inDataSet.GetField(this->NormalFieldName, this->NormalFieldAssociation); auto sfF = inDataSet.GetField(this->ScalarFactorFieldName, this->ScalarFactorFieldAssociation); vtkm::cont::ArrayHandle result; this->Worklet.Run( field, vtkm::filter::ApplyPolicy(normalF, policy, vtkm::filter::FilterTraits()), vtkm::filter::ApplyPolicy( sfF, policy, vtkm::filter::FilterTraits()), this->ScaleAmount, result); return internal::CreateResult(inDataSet, result, this->GetOutputFieldName(), fieldMetadata.GetAssociation(), fieldMetadata.GetCellSetName()); } } }