Merge topic 'rt_use_shared'
8a38717c3 have make_shared call default constructor 3fae21fa7 no pointers 4cd4637c1 ray tracing now using shared pointers for intersectors Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1556
This commit is contained in:
commit
076a7311ca
@ -50,21 +50,17 @@ namespace benchmarking
|
|||||||
template <typename Precision>
|
template <typename Precision>
|
||||||
struct BenchRayTracing
|
struct BenchRayTracing
|
||||||
{
|
{
|
||||||
|
vtkm::rendering::raytracing::RayTracer Tracer;
|
||||||
|
vtkm::rendering::raytracing::Camera RayCamera;
|
||||||
|
vtkm::cont::ArrayHandle<vtkm::Vec<vtkm::Id, 4>> Indices;
|
||||||
|
vtkm::rendering::raytracing::Ray<Precision> Rays;
|
||||||
|
vtkm::cont::CoordinateSystem Coords;
|
||||||
|
vtkm::cont::DataSet Data;
|
||||||
|
|
||||||
VTKM_CONT ~BenchRayTracing() {}
|
VTKM_CONT ~BenchRayTracing() {}
|
||||||
|
|
||||||
VTKM_CONT BenchRayTracing() {}
|
VTKM_CONT BenchRayTracing()
|
||||||
|
|
||||||
VTKM_CONT
|
|
||||||
vtkm::Float64 operator()()
|
|
||||||
{
|
{
|
||||||
vtkm::rendering::raytracing::RayTracer Tracer;
|
|
||||||
vtkm::rendering::raytracing::Camera RayCamera;
|
|
||||||
vtkm::cont::ArrayHandle<vtkm::Vec<vtkm::Id, 4>> Indices;
|
|
||||||
vtkm::rendering::raytracing::Ray<Precision> Rays;
|
|
||||||
vtkm::cont::CoordinateSystem Coords;
|
|
||||||
vtkm::cont::DataSet Data;
|
|
||||||
|
|
||||||
vtkm::Id3 dims(128, 128, 128);
|
vtkm::Id3 dims(128, 128, 128);
|
||||||
vtkm::cont::testing::MakeTestDataSet maker;
|
vtkm::cont::testing::MakeTestDataSet maker;
|
||||||
Data = maker.Make3DUniformDataSet3(dims);
|
Data = maker.Make3DUniformDataSet3(dims);
|
||||||
@ -79,8 +75,8 @@ struct BenchRayTracing
|
|||||||
vtkm::rendering::raytracing::TriangleExtractor triExtractor;
|
vtkm::rendering::raytracing::TriangleExtractor triExtractor;
|
||||||
triExtractor.ExtractCells(cellset);
|
triExtractor.ExtractCells(cellset);
|
||||||
|
|
||||||
vtkm::rendering::raytracing::TriangleIntersector* triIntersector =
|
auto triIntersector = std::make_shared<vtkm::rendering::raytracing::TriangleIntersector>(
|
||||||
new vtkm::rendering::raytracing::TriangleIntersector();
|
vtkm::rendering::raytracing::TriangleIntersector());
|
||||||
|
|
||||||
triIntersector->SetData(Coords, triExtractor.GetTriangles());
|
triIntersector->SetData(Coords, triExtractor.GetTriangles());
|
||||||
Tracer.AddShapeIntersector(triIntersector);
|
Tracer.AddShapeIntersector(triIntersector);
|
||||||
@ -117,6 +113,12 @@ struct BenchRayTracing
|
|||||||
|
|
||||||
Tracer.SetColorMap(colors);
|
Tracer.SetColorMap(colors);
|
||||||
Tracer.Render(Rays);
|
Tracer.Render(Rays);
|
||||||
|
}
|
||||||
|
|
||||||
|
VTKM_CONT
|
||||||
|
vtkm::Float64 operator()()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
vtkm::cont::Timer timer;
|
vtkm::cont::Timer timer;
|
||||||
timer.Start();
|
timer.Start();
|
||||||
@ -125,7 +127,6 @@ struct BenchRayTracing
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
Tracer.Render(Rays);
|
Tracer.Render(Rays);
|
||||||
Tracer.Render(Rays);
|
|
||||||
}
|
}
|
||||||
catch (vtkm::cont::ErrorBadValue& e)
|
catch (vtkm::cont::ErrorBadValue& e)
|
||||||
{
|
{
|
||||||
|
@ -184,7 +184,7 @@ void MapperCylinder::RenderCells(const vtkm::cont::DynamicCellSet& cellset,
|
|||||||
|
|
||||||
if (cylExtractor.GetNumberOfCylinders() > 0)
|
if (cylExtractor.GetNumberOfCylinders() > 0)
|
||||||
{
|
{
|
||||||
raytracing::CylinderIntersector* cylIntersector = new raytracing::CylinderIntersector();
|
auto cylIntersector = std::make_shared<raytracing::CylinderIntersector>();
|
||||||
cylIntersector->SetData(coords, cylExtractor.GetCylIds(), cylExtractor.GetRadii());
|
cylIntersector->SetData(coords, cylExtractor.GetCylIds(), cylExtractor.GetRadii());
|
||||||
this->Internals->Tracer.AddShapeIntersector(cylIntersector);
|
this->Internals->Tracer.AddShapeIntersector(cylIntersector);
|
||||||
shapeBounds.Include(cylIntersector->GetShapeBounds());
|
shapeBounds.Include(cylIntersector->GetShapeBounds());
|
||||||
|
@ -182,7 +182,7 @@ void MapperPoint::RenderCells(const vtkm::cont::DynamicCellSet& cellset,
|
|||||||
|
|
||||||
if (sphereExtractor.GetNumberOfSpheres() > 0)
|
if (sphereExtractor.GetNumberOfSpheres() > 0)
|
||||||
{
|
{
|
||||||
raytracing::SphereIntersector* sphereIntersector = new raytracing::SphereIntersector();
|
auto sphereIntersector = std::make_shared<raytracing::SphereIntersector>();
|
||||||
sphereIntersector->SetData(coords, sphereExtractor.GetPointIds(), sphereExtractor.GetRadii());
|
sphereIntersector->SetData(coords, sphereExtractor.GetPointIds(), sphereExtractor.GetRadii());
|
||||||
this->Internals->Tracer.AddShapeIntersector(sphereIntersector);
|
this->Internals->Tracer.AddShapeIntersector(sphereIntersector);
|
||||||
shapeBounds.Include(sphereIntersector->GetShapeBounds());
|
shapeBounds.Include(sphereIntersector->GetShapeBounds());
|
||||||
|
@ -104,7 +104,7 @@ void MapperQuad::RenderCells(const vtkm::cont::DynamicCellSet& cellset,
|
|||||||
quadExtractor.ExtractCells(cellset);
|
quadExtractor.ExtractCells(cellset);
|
||||||
if (quadExtractor.GetNumberOfQuads() > 0)
|
if (quadExtractor.GetNumberOfQuads() > 0)
|
||||||
{
|
{
|
||||||
raytracing::QuadIntersector* quadIntersector = new raytracing::QuadIntersector();
|
auto quadIntersector = std::make_shared<raytracing::QuadIntersector>();
|
||||||
quadIntersector->SetData(coords, quadExtractor.GetQuadIds());
|
quadIntersector->SetData(coords, quadExtractor.GetQuadIds());
|
||||||
this->Internals->Tracer.AddShapeIntersector(quadIntersector);
|
this->Internals->Tracer.AddShapeIntersector(quadIntersector);
|
||||||
shapeBounds.Include(quadIntersector->GetShapeBounds());
|
shapeBounds.Include(quadIntersector->GetShapeBounds());
|
||||||
|
@ -108,7 +108,7 @@ void MapperRayTracer::RenderCells(const vtkm::cont::DynamicCellSet& cellset,
|
|||||||
triExtractor.ExtractCells(cellset);
|
triExtractor.ExtractCells(cellset);
|
||||||
if (triExtractor.GetNumberOfTriangles() > 0)
|
if (triExtractor.GetNumberOfTriangles() > 0)
|
||||||
{
|
{
|
||||||
raytracing::TriangleIntersector* triIntersector = new raytracing::TriangleIntersector();
|
auto triIntersector = std::make_shared<raytracing::TriangleIntersector>();
|
||||||
triIntersector->SetData(coords, triExtractor.GetTriangles());
|
triIntersector->SetData(coords, triExtractor.GetTriangles());
|
||||||
this->Internals->Tracer.AddShapeIntersector(triIntersector);
|
this->Internals->Tracer.AddShapeIntersector(triIntersector);
|
||||||
shapeBounds.Include(triIntersector->GetShapeBounds());
|
shapeBounds.Include(triIntersector->GetShapeBounds());
|
||||||
|
@ -469,15 +469,15 @@ void CylinderIntersector::IntersectRaysImp(Ray<Precision>& rays, bool vtkmNotUse
|
|||||||
|
|
||||||
template <typename Precision>
|
template <typename Precision>
|
||||||
void CylinderIntersector::IntersectionDataImp(Ray<Precision>& rays,
|
void CylinderIntersector::IntersectionDataImp(Ray<Precision>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
ShapeIntersector::IntersectionPoint(rays);
|
ShapeIntersector::IntersectionPoint(rays);
|
||||||
|
|
||||||
// TODO: if this is nodes of a mesh, support points
|
// TODO: if this is nodes of a mesh, support points
|
||||||
bool isSupportedField =
|
bool isSupportedField =
|
||||||
(scalarField->GetAssociation() == vtkm::cont::Field::Association::POINTS ||
|
(scalarField.GetAssociation() == vtkm::cont::Field::Association::POINTS ||
|
||||||
scalarField->GetAssociation() == vtkm::cont::Field::Association::CELL_SET);
|
scalarField.GetAssociation() == vtkm::cont::Field::Association::CELL_SET);
|
||||||
if (!isSupportedField)
|
if (!isSupportedField)
|
||||||
throw vtkm::cont::ErrorBadValue("Field not accociated with a cell set");
|
throw vtkm::cont::ErrorBadValue("Field not accociated with a cell set");
|
||||||
|
|
||||||
@ -493,18 +493,18 @@ void CylinderIntersector::IntersectionDataImp(Ray<Precision>& rays,
|
|||||||
vtkm::worklet::DispatcherMapField<detail::GetScalar<Precision>>(
|
vtkm::worklet::DispatcherMapField<detail::GetScalar<Precision>>(
|
||||||
detail::GetScalar<Precision>(vtkm::Float32(scalarRange.Min), vtkm::Float32(scalarRange.Max)))
|
detail::GetScalar<Precision>(vtkm::Float32(scalarRange.Min), vtkm::Float32(scalarRange.Max)))
|
||||||
.Invoke(
|
.Invoke(
|
||||||
rays.HitIdx, rays.Scalar, scalarField->GetData().ResetTypes(ScalarRenderingTypes()), CylIds);
|
rays.HitIdx, rays.Scalar, scalarField.GetData().ResetTypes(ScalarRenderingTypes()), CylIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CylinderIntersector::IntersectionData(Ray<vtkm::Float32>& rays,
|
void CylinderIntersector::IntersectionData(Ray<vtkm::Float32>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
IntersectionDataImp(rays, scalarField, scalarRange);
|
IntersectionDataImp(rays, scalarField, scalarRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CylinderIntersector::IntersectionData(Ray<vtkm::Float64>& rays,
|
void CylinderIntersector::IntersectionData(Ray<vtkm::Float64>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
IntersectionDataImp(rays, scalarField, scalarRange);
|
IntersectionDataImp(rays, scalarField, scalarRange);
|
||||||
|
@ -58,15 +58,15 @@ public:
|
|||||||
|
|
||||||
template <typename Precision>
|
template <typename Precision>
|
||||||
void IntersectionDataImp(Ray<Precision>& rays,
|
void IntersectionDataImp(Ray<Precision>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange);
|
const vtkm::Range& scalarRange);
|
||||||
|
|
||||||
void IntersectionData(Ray<vtkm::Float32>& rays,
|
void IntersectionData(Ray<vtkm::Float32>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange) override;
|
const vtkm::Range& scalarRange) override;
|
||||||
|
|
||||||
void IntersectionData(Ray<vtkm::Float64>& rays,
|
void IntersectionData(Ray<vtkm::Float64>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange) override;
|
const vtkm::Range& scalarRange) override;
|
||||||
|
|
||||||
vtkm::Id GetNumberOfShapes() const override;
|
vtkm::Id GetNumberOfShapes() const override;
|
||||||
|
@ -437,15 +437,15 @@ void QuadIntersector::IntersectRaysImp(Ray<Precision>& rays, bool vtkmNotUsed(re
|
|||||||
|
|
||||||
template <typename Precision>
|
template <typename Precision>
|
||||||
void QuadIntersector::IntersectionDataImp(Ray<Precision>& rays,
|
void QuadIntersector::IntersectionDataImp(Ray<Precision>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
ShapeIntersector::IntersectionPoint(rays);
|
ShapeIntersector::IntersectionPoint(rays);
|
||||||
|
|
||||||
// TODO: if this is nodes of a mesh, support points
|
// TODO: if this is nodes of a mesh, support points
|
||||||
bool isSupportedField =
|
bool isSupportedField =
|
||||||
(scalarField->GetAssociation() == vtkm::cont::Field::Association::POINTS ||
|
(scalarField.GetAssociation() == vtkm::cont::Field::Association::POINTS ||
|
||||||
scalarField->GetAssociation() == vtkm::cont::Field::Association::CELL_SET);
|
scalarField.GetAssociation() == vtkm::cont::Field::Association::CELL_SET);
|
||||||
if (!isSupportedField)
|
if (!isSupportedField)
|
||||||
throw vtkm::cont::ErrorBadValue("Field not accociated with a cell set");
|
throw vtkm::cont::ErrorBadValue("Field not accociated with a cell set");
|
||||||
|
|
||||||
@ -456,19 +456,19 @@ void QuadIntersector::IntersectionDataImp(Ray<Precision>& rays,
|
|||||||
detail::GetScalar<Precision>(vtkm::Float32(scalarRange.Min), vtkm::Float32(scalarRange.Max)))
|
detail::GetScalar<Precision>(vtkm::Float32(scalarRange.Min), vtkm::Float32(scalarRange.Max)))
|
||||||
.Invoke(rays.HitIdx,
|
.Invoke(rays.HitIdx,
|
||||||
rays.Scalar,
|
rays.Scalar,
|
||||||
scalarField->GetData().ResetTypes(vtkm::TypeListTagFieldScalar()),
|
scalarField.GetData().ResetTypes(vtkm::TypeListTagFieldScalar()),
|
||||||
QuadIds);
|
QuadIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QuadIntersector::IntersectionData(Ray<vtkm::Float32>& rays,
|
void QuadIntersector::IntersectionData(Ray<vtkm::Float32>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
IntersectionDataImp(rays, scalarField, scalarRange);
|
IntersectionDataImp(rays, scalarField, scalarRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QuadIntersector::IntersectionData(Ray<vtkm::Float64>& rays,
|
void QuadIntersector::IntersectionData(Ray<vtkm::Float64>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
IntersectionDataImp(rays, scalarField, scalarRange);
|
IntersectionDataImp(rays, scalarField, scalarRange);
|
||||||
|
@ -56,15 +56,15 @@ public:
|
|||||||
|
|
||||||
template <typename Precision>
|
template <typename Precision>
|
||||||
void IntersectionDataImp(Ray<Precision>& rays,
|
void IntersectionDataImp(Ray<Precision>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange);
|
const vtkm::Range& scalarRange);
|
||||||
|
|
||||||
void IntersectionData(Ray<vtkm::Float32>& rays,
|
void IntersectionData(Ray<vtkm::Float32>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange) override;
|
const vtkm::Range& scalarRange) override;
|
||||||
|
|
||||||
void IntersectionData(Ray<vtkm::Float64>& rays,
|
void IntersectionData(Ray<vtkm::Float64>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange) override;
|
const vtkm::Range& scalarRange) override;
|
||||||
|
|
||||||
vtkm::Id GetNumberOfShapes() const override;
|
vtkm::Id GetNumberOfShapes() const override;
|
||||||
|
@ -230,7 +230,7 @@ Camera& RayTracer::GetCamera()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void RayTracer::AddShapeIntersector(ShapeIntersector* intersector)
|
void RayTracer::AddShapeIntersector(std::shared_ptr<ShapeIntersector> intersector)
|
||||||
{
|
{
|
||||||
NumberOfShapes += intersector->GetNumberOfShapes();
|
NumberOfShapes += intersector->GetNumberOfShapes();
|
||||||
Intersectors.push_back(intersector);
|
Intersectors.push_back(intersector);
|
||||||
@ -238,7 +238,7 @@ void RayTracer::AddShapeIntersector(ShapeIntersector* intersector)
|
|||||||
|
|
||||||
void RayTracer::SetField(const vtkm::cont::Field& scalarField, const vtkm::Range& scalarRange)
|
void RayTracer::SetField(const vtkm::cont::Field& scalarField, const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
ScalarField = &scalarField;
|
ScalarField = scalarField;
|
||||||
ScalarRange = scalarRange;
|
ScalarRange = scalarRange;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,12 +269,6 @@ vtkm::Id RayTracer::GetNumberOfShapes() const
|
|||||||
|
|
||||||
void RayTracer::Clear()
|
void RayTracer::Clear()
|
||||||
{
|
{
|
||||||
size_t numShapes = Intersectors.size();
|
|
||||||
for (size_t i = 0; i < numShapes; ++i)
|
|
||||||
{
|
|
||||||
delete Intersectors[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
Intersectors.clear();
|
Intersectors.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#ifndef vtk_m_rendering_raytracing_RayTracer_h
|
#ifndef vtk_m_rendering_raytracing_RayTracer_h
|
||||||
#define vtk_m_rendering_raytracing_RayTracer_h
|
#define vtk_m_rendering_raytracing_RayTracer_h
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include <vtkm/cont/DataSet.h>
|
#include <vtkm/cont/DataSet.h>
|
||||||
@ -36,9 +37,9 @@ namespace raytracing
|
|||||||
class VTKM_RENDERING_EXPORT RayTracer
|
class VTKM_RENDERING_EXPORT RayTracer
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
std::vector<ShapeIntersector*> Intersectors;
|
std::vector<std::shared_ptr<ShapeIntersector>> Intersectors;
|
||||||
Camera camera;
|
Camera camera;
|
||||||
const vtkm::cont::Field* ScalarField;
|
vtkm::cont::Field ScalarField;
|
||||||
vtkm::cont::ArrayHandle<vtkm::Float32> Scalars;
|
vtkm::cont::ArrayHandle<vtkm::Float32> Scalars;
|
||||||
vtkm::Id NumberOfShapes;
|
vtkm::Id NumberOfShapes;
|
||||||
vtkm::cont::ArrayHandle<vtkm::Vec<vtkm::Float32, 4>> ColorMap;
|
vtkm::cont::ArrayHandle<vtkm::Vec<vtkm::Float32, 4>> ColorMap;
|
||||||
@ -58,7 +59,7 @@ public:
|
|||||||
Camera& GetCamera();
|
Camera& GetCamera();
|
||||||
|
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
void AddShapeIntersector(ShapeIntersector* intersector);
|
void AddShapeIntersector(std::shared_ptr<ShapeIntersector> intersector);
|
||||||
|
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
void SetField(const vtkm::cont::Field& scalarField, const vtkm::Range& scalarRange);
|
void SetField(const vtkm::cont::Field& scalarField, const vtkm::Range& scalarRange);
|
||||||
|
@ -63,11 +63,11 @@ public:
|
|||||||
// becomes the new max distance.
|
// becomes the new max distance.
|
||||||
//
|
//
|
||||||
virtual void IntersectionData(Ray<vtkm::Float32>& rays,
|
virtual void IntersectionData(Ray<vtkm::Float32>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange) = 0;
|
const vtkm::Range& scalarRange) = 0;
|
||||||
|
|
||||||
virtual void IntersectionData(Ray<vtkm::Float64>& rays,
|
virtual void IntersectionData(Ray<vtkm::Float64>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange) = 0;
|
const vtkm::Range& scalarRange) = 0;
|
||||||
|
|
||||||
|
|
||||||
|
@ -345,14 +345,14 @@ void SphereIntersector::IntersectRaysImp(Ray<Precision>& rays, bool vtkmNotUsed(
|
|||||||
|
|
||||||
template <typename Precision>
|
template <typename Precision>
|
||||||
void SphereIntersector::IntersectionDataImp(Ray<Precision>& rays,
|
void SphereIntersector::IntersectionDataImp(Ray<Precision>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
ShapeIntersector::IntersectionPoint(rays);
|
ShapeIntersector::IntersectionPoint(rays);
|
||||||
|
|
||||||
bool isSupportedField =
|
bool isSupportedField =
|
||||||
(scalarField->GetAssociation() == vtkm::cont::Field::Association::POINTS ||
|
(scalarField.GetAssociation() == vtkm::cont::Field::Association::POINTS ||
|
||||||
scalarField->GetAssociation() == vtkm::cont::Field::Association::CELL_SET);
|
scalarField.GetAssociation() == vtkm::cont::Field::Association::CELL_SET);
|
||||||
if (!isSupportedField)
|
if (!isSupportedField)
|
||||||
throw vtkm::cont::ErrorBadValue(
|
throw vtkm::cont::ErrorBadValue(
|
||||||
"SphereIntersector: Field not accociated with a cell set or field");
|
"SphereIntersector: Field not accociated with a cell set or field");
|
||||||
@ -370,19 +370,19 @@ void SphereIntersector::IntersectionDataImp(Ray<Precision>& rays,
|
|||||||
detail::GetScalar<Precision>(vtkm::Float32(scalarRange.Min), vtkm::Float32(scalarRange.Max)))
|
detail::GetScalar<Precision>(vtkm::Float32(scalarRange.Min), vtkm::Float32(scalarRange.Max)))
|
||||||
.Invoke(rays.HitIdx,
|
.Invoke(rays.HitIdx,
|
||||||
rays.Scalar,
|
rays.Scalar,
|
||||||
scalarField->GetData().ResetTypes(vtkm::TypeListTagFieldScalar()),
|
scalarField.GetData().ResetTypes(vtkm::TypeListTagFieldScalar()),
|
||||||
PointIds);
|
PointIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SphereIntersector::IntersectionData(Ray<vtkm::Float32>& rays,
|
void SphereIntersector::IntersectionData(Ray<vtkm::Float32>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
IntersectionDataImp(rays, scalarField, scalarRange);
|
IntersectionDataImp(rays, scalarField, scalarRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SphereIntersector::IntersectionData(Ray<vtkm::Float64>& rays,
|
void SphereIntersector::IntersectionData(Ray<vtkm::Float64>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
IntersectionDataImp(rays, scalarField, scalarRange);
|
IntersectionDataImp(rays, scalarField, scalarRange);
|
||||||
|
@ -54,15 +54,15 @@ public:
|
|||||||
|
|
||||||
template <typename Precision>
|
template <typename Precision>
|
||||||
void IntersectionDataImp(Ray<Precision>& rays,
|
void IntersectionDataImp(Ray<Precision>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange);
|
const vtkm::Range& scalarRange);
|
||||||
|
|
||||||
void IntersectionData(Ray<vtkm::Float32>& rays,
|
void IntersectionData(Ray<vtkm::Float32>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange) override;
|
const vtkm::Range& scalarRange) override;
|
||||||
|
|
||||||
void IntersectionData(Ray<vtkm::Float64>& rays,
|
void IntersectionData(Ray<vtkm::Float64>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange) override;
|
const vtkm::Range& scalarRange) override;
|
||||||
|
|
||||||
vtkm::Id GetNumberOfShapes() const override;
|
vtkm::Id GetNumberOfShapes() const override;
|
||||||
|
@ -340,15 +340,15 @@ public:
|
|||||||
VTKM_CONT void Run(Ray<Precision>& rays,
|
VTKM_CONT void Run(Ray<Precision>& rays,
|
||||||
vtkm::cont::ArrayHandle<vtkm::Vec<vtkm::Id, 4>> triangles,
|
vtkm::cont::ArrayHandle<vtkm::Vec<vtkm::Id, 4>> triangles,
|
||||||
vtkm::cont::CoordinateSystem coordsHandle,
|
vtkm::cont::CoordinateSystem coordsHandle,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
bool isSupportedField =
|
bool isSupportedField =
|
||||||
(scalarField->GetAssociation() == vtkm::cont::Field::Association::POINTS ||
|
(scalarField.GetAssociation() == vtkm::cont::Field::Association::POINTS ||
|
||||||
scalarField->GetAssociation() == vtkm::cont::Field::Association::CELL_SET);
|
scalarField.GetAssociation() == vtkm::cont::Field::Association::CELL_SET);
|
||||||
if (!isSupportedField)
|
if (!isSupportedField)
|
||||||
throw vtkm::cont::ErrorBadValue("Field not accociated with cell set or points");
|
throw vtkm::cont::ErrorBadValue("Field not accociated with cell set or points");
|
||||||
bool isAssocPoints = scalarField->GetAssociation() == vtkm::cont::Field::Association::POINTS;
|
bool isAssocPoints = scalarField.GetAssociation() == vtkm::cont::Field::Association::POINTS;
|
||||||
|
|
||||||
// Find the triangle normal
|
// Find the triangle normal
|
||||||
vtkm::worklet::DispatcherMapField<CalculateNormals>(CalculateNormals())
|
vtkm::worklet::DispatcherMapField<CalculateNormals>(CalculateNormals())
|
||||||
@ -364,7 +364,7 @@ public:
|
|||||||
rays.U,
|
rays.U,
|
||||||
rays.V,
|
rays.V,
|
||||||
rays.Scalar,
|
rays.Scalar,
|
||||||
scalarField->GetData().ResetTypes(ScalarRenderingTypes()),
|
scalarField.GetData().ResetTypes(ScalarRenderingTypes()),
|
||||||
triangles);
|
triangles);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -373,7 +373,7 @@ public:
|
|||||||
NodalScalar<Precision>(vtkm::Float32(scalarRange.Min), vtkm::Float32(scalarRange.Max)))
|
NodalScalar<Precision>(vtkm::Float32(scalarRange.Min), vtkm::Float32(scalarRange.Max)))
|
||||||
.Invoke(rays.HitIdx,
|
.Invoke(rays.HitIdx,
|
||||||
rays.Scalar,
|
rays.Scalar,
|
||||||
scalarField->GetData().ResetTypes(ScalarRenderingTypes()),
|
scalarField.GetData().ResetTypes(ScalarRenderingTypes()),
|
||||||
triangles);
|
triangles);
|
||||||
}
|
}
|
||||||
} // Run
|
} // Run
|
||||||
@ -525,14 +525,14 @@ VTKM_CONT void TriangleIntersector::IntersectRaysImp(Ray<Precision>& rays, bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
VTKM_CONT void TriangleIntersector::IntersectionData(Ray<vtkm::Float32>& rays,
|
VTKM_CONT void TriangleIntersector::IntersectionData(Ray<vtkm::Float32>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
IntersectionDataImp(rays, scalarField, scalarRange);
|
IntersectionDataImp(rays, scalarField, scalarRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
VTKM_CONT void TriangleIntersector::IntersectionData(Ray<vtkm::Float64>& rays,
|
VTKM_CONT void TriangleIntersector::IntersectionData(Ray<vtkm::Float64>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
IntersectionDataImp(rays, scalarField, scalarRange);
|
IntersectionDataImp(rays, scalarField, scalarRange);
|
||||||
@ -540,7 +540,7 @@ VTKM_CONT void TriangleIntersector::IntersectionData(Ray<vtkm::Float64>& rays,
|
|||||||
|
|
||||||
template <typename Precision>
|
template <typename Precision>
|
||||||
VTKM_CONT void TriangleIntersector::IntersectionDataImp(Ray<Precision>& rays,
|
VTKM_CONT void TriangleIntersector::IntersectionDataImp(Ray<Precision>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange)
|
const vtkm::Range& scalarRange)
|
||||||
{
|
{
|
||||||
ShapeIntersector::IntersectionPoint(rays);
|
ShapeIntersector::IntersectionPoint(rays);
|
||||||
|
@ -55,11 +55,11 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
VTKM_CONT void IntersectionData(Ray<vtkm::Float32>& rays,
|
VTKM_CONT void IntersectionData(Ray<vtkm::Float32>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange) override;
|
const vtkm::Range& scalarRange) override;
|
||||||
|
|
||||||
VTKM_CONT void IntersectionData(Ray<vtkm::Float64>& rays,
|
VTKM_CONT void IntersectionData(Ray<vtkm::Float64>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange) override;
|
const vtkm::Range& scalarRange) override;
|
||||||
|
|
||||||
template <typename Precision>
|
template <typename Precision>
|
||||||
@ -67,7 +67,7 @@ public:
|
|||||||
|
|
||||||
template <typename Precision>
|
template <typename Precision>
|
||||||
VTKM_CONT void IntersectionDataImp(Ray<Precision>& rays,
|
VTKM_CONT void IntersectionDataImp(Ray<Precision>& rays,
|
||||||
const vtkm::cont::Field* scalarField,
|
const vtkm::cont::Field scalarField,
|
||||||
const vtkm::Range& scalarRange);
|
const vtkm::Range& scalarRange);
|
||||||
|
|
||||||
}; // class intersector
|
}; // class intersector
|
||||||
|
Loading…
Reference in New Issue
Block a user