1 //============================================================================ 2 // Copyright (c) Kitware, Inc. 3 // All rights reserved. 4 // See LICENSE.txt for details. 5 // 6 // This software is distributed WITHOUT ANY WARRANTY; without even 7 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 8 // PURPOSE. See the above copyright notice for more information. 9 //============================================================================ 10 #ifndef vtk_m_rendering_raytracing_MeshConnectivityBuilder_h 11 #define vtk_m_rendering_raytracing_MeshConnectivityBuilder_h 12 13 #include <vtkm/cont/DataSet.h> 14 #include <vtkm/rendering/raytracing/MeshConnectivityContainers.h> 15 16 namespace vtkm 17 { 18 namespace rendering 19 { 20 namespace raytracing 21 { 22 23 class MeshConnectivityBuilder 24 { 25 public: 26 MeshConnectivityBuilder(); 27 ~MeshConnectivityBuilder(); 28 29 VTKM_CONT 30 MeshConnContainer* BuildConnectivity(const vtkm::cont::DynamicCellSet& cellset, 31 const vtkm::cont::CoordinateSystem& coordinates); 32 33 VTKM_CONT 34 vtkm::cont::ArrayHandle<vtkm::Id4> ExternalTrianglesStructured( 35 vtkm::cont::CellSetStructured<3>& cellSetStructured); 36 37 vtkm::cont::ArrayHandle<vtkm::Id> GetFaceConnectivity(); 38 39 vtkm::cont::ArrayHandle<vtkm::Id> GetFaceOffsets(); 40 41 vtkm::cont::ArrayHandle<vtkm::Id4> GetTriangles(); 42 43 protected: 44 VTKM_CONT 45 void BuildConnectivity(vtkm::cont::CellSetSingleType<>& cellSetUnstructured, 46 const vtkm::cont::CoordinateSystem::MultiplexerArrayType& coordinates, 47 vtkm::Bounds coordsBounds); 48 49 VTKM_CONT 50 void BuildConnectivity(vtkm::cont::CellSetExplicit<>& cellSetUnstructured, 51 const vtkm::cont::CoordinateSystem::MultiplexerArrayType& coordinates, 52 vtkm::Bounds coordsBounds); 53 54 vtkm::cont::ArrayHandle<vtkm::Id> FaceConnectivity; 55 vtkm::cont::ArrayHandle<vtkm::Id> FaceOffsets; 56 vtkm::cont::ArrayHandle<vtkm::Id4> Triangles; 57 }; 58 } 59 } 60 } //namespace vtkm::rendering::raytracing 61 #endif 62