Viskores  1.0
ANARIMapperTriangles.h
Go to the documentation of this file.
1 //============================================================================
2 // The contents of this file are covered by the Viskores license. See
3 // LICENSE.txt for details.
4 //
5 // By contributing to this file, all contributors agree to the Developer
6 // Certificate of Origin Version 1.1 (DCO 1.1) as stated in DCO.txt.
7 //============================================================================
8 
9 //============================================================================
10 // Copyright (c) Kitware, Inc.
11 // All rights reserved.
12 // See LICENSE.txt for details.
13 //
14 // This software is distributed WITHOUT ANY WARRANTY; without even
15 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 // PURPOSE. See the above copyright notice for more information.
17 //============================================================================
18 
19 #ifndef viskores_interop_anari_ANARIMapperTriangles_h
20 #define viskores_interop_anari_ANARIMapperTriangles_h
21 
23 
24 namespace viskores
25 {
26 namespace interop
27 {
28 namespace anari
29 {
30 
34 {
35  struct VertexData
36  {
37  anari_cpp::Array1D Position{ nullptr };
38  anari_cpp::Array1D Normal{ nullptr };
39  std::array<anari_cpp::Array1D, 4> Attribute;
40  std::array<std::string, 4> AttributeName;
41  } Vertex{};
42 
44  {
45  anari_cpp::Array1D Index{ nullptr };
46  } Primitive{};
47 
48  unsigned int NumPrimitives{ 0 };
49 };
50 
54 {
57  std::shared_ptr<viskores::cont::Token> Token{ new viskores::cont::Token };
58 };
59 
63 {
65  std::string Field1Name;
67  std::string Field2Name;
69  std::string Field3Name;
71  std::string Field4Name;
72  std::shared_ptr<viskores::cont::Token> Token{ new viskores::cont::Token };
73 };
74 
80 struct VISKORES_ANARI_EXPORT ANARIMapperTriangles : public ANARIMapper
81 {
85  anari_cpp::Device device,
86  const ANARIActor& actor = {},
87  const std::string& name = "<triangles>",
89 
92  ~ANARIMapperTriangles() override;
93 
97  void SetActor(const ANARIActor& actor) override;
98 
102  void SetMapFieldAsAttribute(bool enabled) override;
103 
107  void SetANARIColorMap(anari_cpp::Array1D color,
108  anari_cpp::Array1D opacity,
109  bool releaseArrays = true) override;
110 
113  void SetANARIColorMapValueRange(const viskores::Vec2f_32& valueRange) override;
114 
117  void SetCalculateNormals(bool enabled);
118 
119  anari_cpp::Geometry GetANARIGeometry() override;
120  anari_cpp::Surface GetANARISurface() override;
121 
122 private:
123  bool NeedToGenerateData() const;
127  void ConstructArrays(bool regenerate = false);
129  void UpdateGeometry();
131  void UpdateMaterial();
132 
135  {
136  anari_cpp::Device Device{ nullptr };
137  anari_cpp::Geometry Geometry{ nullptr };
138  anari_cpp::Sampler Sampler{ nullptr };
139  anari_cpp::Material Material{ nullptr };
140  anari_cpp::Surface Surface{ nullptr };
142  ~ANARIHandles();
143  void ReleaseArrays();
144  };
145 
146  std::shared_ptr<ANARIHandles> Handles;
147 
148  bool CalculateNormals{ false };
149  viskores::IdComponent PrimaryField{ 0 };
152 };
153 
154 } // namespace anari
155 } // namespace interop
156 } // namespace viskores
157 
158 #endif
viskores::interop::anari::TriangleFieldArrays::Field1
viskores::cont::ArrayHandle< viskores::Float32 > Field1
Definition: ANARIMapperTriangles.h:64
anari
Definition: ViskoresANARITypes.h:38
ANARIMapper.h
viskores::interop::anari::TrianglesParameters::VertexData::Attribute
std::array< anari_cpp::Array1D, 4 > Attribute
Definition: ANARIMapperTriangles.h:39
viskores::interop::anari::TriangleArrays
Viskores data arrays underlying the ANARIArray handles created by the mapper.
Definition: ANARIMapperTriangles.h:53
viskores::interop::anari::ANARIMapperTriangles
Mapper which triangulates cells into ANARI triangle geometry.
Definition: ANARIMapperTriangles.h:80
viskores::interop::anari::TrianglesParameters::VertexData::AttributeName
std::array< std::string, 4 > AttributeName
Definition: ANARIMapperTriangles.h:40
viskores::interop::anari::TriangleFieldArrays
Viskores data arrays underlying the ANARIArray handles created by the mapper for field attributes.
Definition: ANARIMapperTriangles.h:62
viskores::interop::anari::TrianglesParameters::PrimitiveData::Index
anari_cpp::Array1D Index
Definition: ANARIMapperTriangles.h:45
viskores::interop::anari::ANARIMapperTriangles::ANARIHandles::Parameters
TrianglesParameters Parameters
Definition: ANARIMapperTriangles.h:141
viskores::interop::anari::TriangleFieldArrays::Field4Name
std::string Field4Name
Definition: ANARIMapperTriangles.h:71
viskores::cont::ColorTable::Preset::Default
@ Default
viskores::cont::ArrayHandle
Manages an array-worth of data.
Definition: ArrayHandle.h:313
viskores::IdComponent
viskores::Int32 IdComponent
Base type to use to index small lists.
Definition: Types.h:202
viskores::interop::anari::ANARIActor
Collects cells, coords, and 0-4 fields for ANARI mappers to consume.
Definition: ANARIActor.h:60
viskores::interop::anari::TriangleFieldArrays::Field1Name
std::string Field1Name
Definition: ANARIMapperTriangles.h:65
viskores::interop::anari::TriangleFieldArrays::Field3Name
std::string Field3Name
Definition: ANARIMapperTriangles.h:69
viskores::interop::anari::ANARIMapperTriangles::Handles
std::shared_ptr< ANARIHandles > Handles
Definition: ANARIMapperTriangles.h:146
viskores::interop::anari::TriangleFieldArrays::Field2
viskores::cont::ArrayHandle< viskores::Float32 > Field2
Definition: ANARIMapperTriangles.h:66
viskores
Groups connected points that have the same field value.
Definition: Atomic.h:27
viskores::cont::ColorTable
Color Table for coloring arbitrary fields.
Definition: cont/ColorTable.h:97
viskores::interop::anari::TriangleArrays::Token
std::shared_ptr< viskores::cont::Token > Token
Definition: ANARIMapperTriangles.h:57
viskores::interop::anari::TriangleFieldArrays::Field3
viskores::cont::ArrayHandle< viskores::Float32 > Field3
Definition: ANARIMapperTriangles.h:68
viskores::interop::anari::TrianglesParameters::PrimitiveData
Definition: ANARIMapperTriangles.h:43
viskores::interop::anari::TriangleArrays::Normals
viskores::cont::ArrayHandle< viskores::Vec3f_32 > Normals
Definition: ANARIMapperTriangles.h:56
viskores::interop::anari::TriangleFieldArrays::Field2Name
std::string Field2Name
Definition: ANARIMapperTriangles.h:67
viskores::interop::anari::ANARIMapperTriangles::FieldArrays
TriangleFieldArrays FieldArrays
Definition: ANARIMapperTriangles.h:151
viskores::interop::anari::TrianglesParameters::Primitive
struct viskores::interop::anari::TrianglesParameters::PrimitiveData Primitive
viskores::interop::anari::TrianglesParameters::Vertex
struct viskores::interop::anari::TrianglesParameters::VertexData Vertex
viskores::interop::anari::TriangleArrays::Vertices
viskores::cont::ArrayHandle< viskores::Vec3f_32 > Vertices
Definition: ANARIMapperTriangles.h:55
viskores::interop::anari::TrianglesParameters::VertexData::Normal
anari_cpp::Array1D Normal
Definition: ANARIMapperTriangles.h:38
viskores::interop::anari::TrianglesParameters::NumPrimitives
unsigned int NumPrimitives
Definition: ANARIMapperTriangles.h:48
viskores::interop::anari::ANARIMapperTriangles::Arrays
TriangleArrays Arrays
Definition: ANARIMapperTriangles.h:150
viskores::interop::anari::ANARIMapperTriangles::ANARIHandles
Container of all relevant ANARI scene object handles.
Definition: ANARIMapperTriangles.h:134
viskores::interop::anari::ANARIMapper
This is the base class used for all ANARI mappers.
Definition: ANARIMapper.h:45
viskores::interop::anari::TrianglesParameters::VertexData
Definition: ANARIMapperTriangles.h:35
viskores::interop::anari::TrianglesParameters::VertexData::Position
anari_cpp::Array1D Position
Definition: ANARIMapperTriangles.h:37
viskores::interop::anari::TrianglesParameters
Raw ANARI arrays and parameter values set on the ANARIGeometry.
Definition: ANARIMapperTriangles.h:33
viskores::interop::anari::TriangleFieldArrays::Token
std::shared_ptr< viskores::cont::Token > Token
Definition: ANARIMapperTriangles.h:72
viskores::Vec< viskores::Float32, 2 >
viskores::cont::Token
A token to hold the scope of an ArrayHandle or other object.
Definition: Token.h:43
viskores::interop::anari::TriangleFieldArrays::Field4
viskores::cont::ArrayHandle< viskores::Float32 > Field4
Definition: ANARIMapperTriangles.h:70