7eaedfe84b
A large portion of the VTK-m filters are now compiled into the vtkm_filter library. These pre-built filters now don't include the respective hxx file to remove the amount of template instantiation users do. To verify that this removal reduces compiler memory ( and maybe time) I profiled the compiler while it building filter tests in debug mode. Here is a selection of results: ``` CleanGrid 10.25s => 9.01s, 901MB => 795MB ExternalFaces 13.40s => 5.96s, 1122MB => 744MB ExtractStructured 4.69s => 4.75s, 492MB => 492MB GradientExplicit 22.97s => 5.88s, 1296MB => 740MB ```
72 lines
2.1 KiB
C++
72 lines
2.1 KiB
C++
//============================================================================
|
|
// 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.
|
|
//============================================================================
|
|
#define vtkm_filter_Contour_cxx
|
|
#include <vtkm/filter/Contour.h>
|
|
|
|
namespace vtkm
|
|
{
|
|
namespace filter
|
|
{
|
|
|
|
//-----------------------------------------------------------------------------
|
|
Contour::Contour()
|
|
: vtkm::filter::FilterDataSetWithField<Contour>()
|
|
, IsoValues()
|
|
, GenerateNormals(false)
|
|
, AddInterpolationEdgeIds(false)
|
|
, ComputeFastNormalsForStructured(false)
|
|
, ComputeFastNormalsForUnstructured(true)
|
|
, NormalArrayName("normals")
|
|
, InterpolationEdgeIdsArrayName("edgeIds")
|
|
, Worklet()
|
|
{
|
|
// todo: keep an instance of marching cubes worklet as a member variable
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void Contour::SetNumberOfIsoValues(vtkm::Id num)
|
|
{
|
|
if (num >= 0)
|
|
{
|
|
this->IsoValues.resize(static_cast<std::size_t>(num));
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
vtkm::Id Contour::GetNumberOfIsoValues() const
|
|
{
|
|
return static_cast<vtkm::Id>(this->IsoValues.size());
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void Contour::SetIsoValue(vtkm::Id index, vtkm::Float64 v)
|
|
{
|
|
std::size_t i = static_cast<std::size_t>(index);
|
|
if (i >= this->IsoValues.size())
|
|
{
|
|
this->IsoValues.resize(i + 1);
|
|
}
|
|
this->IsoValues[i] = v;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void Contour::SetIsoValues(const std::vector<vtkm::Float64>& values)
|
|
{
|
|
this->IsoValues = values;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
vtkm::Float64 Contour::GetIsoValue(vtkm::Id index) const
|
|
{
|
|
return this->IsoValues[static_cast<std::size_t>(index)];
|
|
}
|
|
}
|
|
}
|