//============================================================================ // 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. //============================================================================ #ifndef vtk_m_rendering_raytracing_ScalarRenderer_h #define vtk_m_rendering_raytracing_ScalarRenderer_h #include #include #include #include #include namespace vtkm { namespace rendering { namespace raytracing { class VTKM_RENDERING_EXPORT ScalarRenderer { private: vtkm::cont::Invoker Invoke; protected: std::unique_ptr Intersector; std::vector Fields; template void RenderOnDevice(Ray& rays, Precision missScalar, vtkm::rendering::raytracing::Camera& cam); template void AddBuffer(Ray& rays, Precision missScalar, const std::string& name); template void AddDepthBuffer(Ray& rays); public: VTKM_CONT void SetShapeIntersector(std::unique_ptr&& intersector); VTKM_CONT void AddField(const vtkm::cont::Field& scalarField); VTKM_CONT void Render(vtkm::rendering::raytracing::Ray& rays, vtkm::Float32 missScalar, vtkm::rendering::raytracing::Camera& cam); VTKM_CONT void Render(vtkm::rendering::raytracing::Ray& rays, vtkm::Float64 missScalar, vtkm::rendering::raytracing::Camera& cam); }; //class RayTracer } } } // namespace vtkm::rendering::raytracing #endif //vtk_m_rendering_raytracing_ScalarRenderer_h