NVIDIA IndeX API nvidia_logo_transpbg.gif Up
idistributed_data_import_callback.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright 2023 NVIDIA Corporation. All rights reserved.
3 *****************************************************************************/
6
7#ifndef NVIDIA_INDEX_IDISTRIBUTED_DATA_IMPORT_CALLBACK_H
8#define NVIDIA_INDEX_IDISTRIBUTED_DATA_IMPORT_CALLBACK_H
9
10#include <mi/dice.h>
11#include <mi/base/interface_declare.h>
12
14
15namespace nv
16{
17namespace index
18{
19
32 public mi::base::Interface_declare<0x78a31b0c,0x5691,0x4278,0x98,0xba,0xa6,0x82,0xab,0xd7,0x31,0xdf,
33 mi::neuraylib::ISerializable>
34{
35public:
40 virtual mi::math::Bbox_struct<mi::Float32, 3> get_bounding_box() const = 0;
41
46 virtual mi::math::Matrix_struct<mi::Float32, 4, 4> get_transform() const = 0;
47};
48
49
80 public mi::base::Interface_declare<0x61a87e48,0x910a,0x4f48,0xba,0xca,0x04,0x3b,0x9b,0xe2,0x62,0xec,
81 mi::neuraylib::ISerializable>
82{
83public:
94 virtual mi::Size estimate(
95 const mi::math::Bbox_struct<mi::Float32, 3>& bounding_box,
96 mi::neuraylib::IDice_transaction* dice_transaction) const = 0;
97
112 const mi::math::Bbox_struct<mi::Float32, 3>& bounding_box,
113 IData_subset_factory* factory,
114 mi::neuraylib::IDice_transaction* dice_transaction) const = 0;
115
131 const mi::math::Bbox_struct<mi::Float32, 3>& bounding_box,
132 mi::Uint32 time_step,
133 IData_subset_factory* factory,
134 mi::neuraylib::IDice_transaction* dice_transaction) const = 0;
135
146 virtual mi::base::Uuid subset_id() const = 0;
147
159
173 virtual const char* get_configuration() const = 0;
174};
175
185template <mi::Uint32 id1, mi::Uint16 id2, mi::Uint16 id3,
186 mi::Uint8 id4, mi::Uint8 id5, mi::Uint8 id6, mi::Uint8 id7,
187 mi::Uint8 id8, mi::Uint8 id9, mi::Uint8 id10, mi::Uint8 id11,
190 public mi::neuraylib::Base<id1,id2,id3,id4,id5,id6,id7,id8,id9,id10,id11,I>
191{
192public:
203 virtual mi::Size estimate(
204 const mi::math::Bbox_struct<mi::Sint32, 3>& bounding_box,
205 mi::neuraylib::IDice_transaction* dice_transaction) const = 0;
206
216 virtual mi::Size estimate(
217 const mi::math::Bbox_struct<mi::Float32, 3>& bounding_box,
218 mi::neuraylib::IDice_transaction* dice_transaction) const /*override final*/
219 {
220 mi::math::Bbox_struct<mi::Sint32, 3> bbox;
221 bbox.min.x = static_cast<mi::Sint32>(mi::math::floor(bounding_box.min.x));
222 bbox.min.y = static_cast<mi::Sint32>(mi::math::floor(bounding_box.min.y));
223 bbox.min.z = static_cast<mi::Sint32>(mi::math::floor(bounding_box.min.z));
224 bbox.max.x = static_cast<mi::Sint32>(mi::math::ceil(bounding_box.max.x));
225 bbox.max.y = static_cast<mi::Sint32>(mi::math::ceil(bounding_box.max.y));
226 bbox.max.z = static_cast<mi::Sint32>(mi::math::ceil(bounding_box.max.z));
227 return estimate(bbox, dice_transaction);
228 }
229
230 using mi::neuraylib::Base<id1, id2, id3, id4, id5, id6, id7, id8, id9, id10, id11, I>::create;
231
246 const mi::math::Bbox_struct<mi::Sint32, 3>& bounding_box,
247 IData_subset_factory* factory,
248 mi::neuraylib::IDice_transaction* dice_transaction) const = 0;
249
264 const mi::math::Bbox_struct<mi::Float32, 3>& bounding_box,
265 IData_subset_factory* factory,
266 mi::neuraylib::IDice_transaction* dice_transaction) const /*override final*/
267 {
268 mi::math::Bbox_struct<mi::Sint32, 3> bbox;
269 bbox.min.x = static_cast<mi::Sint32>(mi::math::floor(bounding_box.min.x));
270 bbox.min.y = static_cast<mi::Sint32>(mi::math::floor(bounding_box.min.y));
271 bbox.min.z = static_cast<mi::Sint32>(mi::math::floor(bounding_box.min.z));
272 bbox.max.x = static_cast<mi::Sint32>(mi::math::ceil(bounding_box.max.x));
273 bbox.max.y = static_cast<mi::Sint32>(mi::math::ceil(bounding_box.max.y));
274 bbox.max.z = static_cast<mi::Sint32>(mi::math::ceil(bounding_box.max.z));
275 return create(bbox, factory, dice_transaction);
276 }
277
293 const mi::math::Bbox_struct<mi::Sint32, 3>& bounding_box,
294 mi::Uint32 time_step,
295 IData_subset_factory* factory,
296 mi::neuraylib::IDice_transaction* dice_transaction) const
297 {
298 (void) bounding_box; // avoid unused warnings
299 (void) time_step; // avoid unused warnings
300 (void) factory; // avoid unused warnings
301 (void) dice_transaction; // avoid unused warnings
302
303 return 0;
304 }
305
321 const mi::math::Bbox_struct<mi::Float32, 3>& bounding_box,
322 mi::Uint32 time_step,
323 IData_subset_factory* factory,
324 mi::neuraylib::IDice_transaction* dice_transaction) const /*override final*/
325 {
326 mi::math::Bbox_struct<mi::Sint32, 3> bbox;
327 bbox.min.x = static_cast<mi::Sint32>(mi::math::floor(bounding_box.min.x));
328 bbox.min.y = static_cast<mi::Sint32>(mi::math::floor(bounding_box.min.y));
329 bbox.min.z = static_cast<mi::Sint32>(mi::math::floor(bounding_box.min.z));
330 bbox.max.x = static_cast<mi::Sint32>(mi::math::ceil(bounding_box.max.x));
331 bbox.max.y = static_cast<mi::Sint32>(mi::math::ceil(bounding_box.max.y));
332 bbox.max.z = static_cast<mi::Sint32>(mi::math::ceil(bounding_box.max.z));
333 return create(bbox, time_step, factory, dice_transaction);
334 }
335
338 virtual void serialize( mi::neuraylib::ISerializer* serializer) const
339 {
340 // avoid warnings
341 (void) serializer;
342 }
343
346 virtual void deserialize( mi::neuraylib::IDeserializer* deserializer)
347 {
348 // avoid warnings
349 (void) deserializer;
350 }
351
354
356 virtual const char* get_configuration() const { return 0; }
357};
358
359
369template <mi::Uint32 id1, mi::Uint16 id2, mi::Uint16 id3,
370 mi::Uint8 id4, mi::Uint8 id5, mi::Uint8 id6, mi::Uint8 id7,
371 mi::Uint8 id8, mi::Uint8 id9, mi::Uint8 id10, mi::Uint8 id11,
372 class I = IDistributed_data_import_callback>
374 public mi::neuraylib::Base<id1,id2,id3,id4,id5,id6,id7,id8,id9,id10,id11,I>
375{
376public:
377 using mi::neuraylib::Base<id1, id2, id3, id4, id5, id6, id7, id8, id9, id10, id11, I>::create;
378
386 const mi::math::Bbox_struct<mi::Float32, 3>& bbox,
387 mi::Uint32 time_step,
388 IData_subset_factory* factory,
389 mi::neuraylib::IDice_transaction* dice_transaction) const
390 {
391 (void)bbox; // avoid unused warnings
392 (void)time_step; // avoid unused warnings
393 (void)factory; // avoid unused warnings
394 (void)dice_transaction; // avoid unused warnings
395
396 return 0;
397 }
398
401 virtual void serialize(mi::neuraylib::ISerializer* serializer) const
402 {
403 // avoid warnings
404 (void)serializer;
405 }
406
409 virtual void deserialize(mi::neuraylib::IDeserializer* deserializer)
410 {
411 // avoid warnings
412 (void)deserializer;
413 }
414
417
419 virtual const char* get_configuration() const { return 0; }
420};
421
422} // namespace index
423} // namespace nv
424
425#endif // NVIDIA_INDEX_IDISTRIBUTED_DATA_IMPORT_CALLBACK_H
This mixin class can be used to implement the IDistributed_data_import_callback interface.
Definition: idistributed_data_import_callback.h:375
virtual void serialize(mi::neuraylib::ISerializer *serializer) const
Empty body, i.e., no member data is serialized.
Definition: idistributed_data_import_callback.h:401
virtual IDistributed_data_subset * create(const mi::math::Bbox_struct< mi::Float32, 3 > &bbox, mi::Uint32 time_step, IData_subset_factory *factory, mi::neuraylib::IDice_transaction *dice_transaction) const
Empty body, i.e., no data import required based on floating-point bounding boxes.
Definition: idistributed_data_import_callback.h:385
virtual const char * get_configuration() const
Empty body, i.e., no configuration for the session exporter given.
Definition: idistributed_data_import_callback.h:419
virtual void deserialize(mi::neuraylib::IDeserializer *deserializer)
Empty body, i.e., no member data is deserialized.
Definition: idistributed_data_import_callback.h:409
const IDistributed_data_properties * get_dataset_properties() const
Empty body, i.e., no data properties exposed.
Definition: idistributed_data_import_callback.h:416
This mixin class can be used to implement the IDistributed_data_import_callback interface.
Definition: idistributed_data_import_callback.h:191
virtual IDistributed_data_subset * create(const mi::math::Bbox_struct< mi::Float32, 3 > &bounding_box, mi::Uint32 time_step, IData_subset_factory *factory, mi::neuraylib::IDice_transaction *dice_transaction) const
Implementation maps floating-point bounding box to a signed integer bounding box and call respective ...
Definition: idistributed_data_import_callback.h:320
virtual mi::Size estimate(const mi::math::Bbox_struct< mi::Float32, 3 > &bounding_box, mi::neuraylib::IDice_transaction *dice_transaction) const
Implementation maps floating-point bounding box to a signed integer bounding box and call respective ...
Definition: idistributed_data_import_callback.h:216
virtual void serialize(mi::neuraylib::ISerializer *serializer) const
Empty body, i.e., no member data is serialized.
Definition: idistributed_data_import_callback.h:338
virtual IDistributed_data_subset * create(const mi::math::Bbox_struct< mi::Float32, 3 > &bounding_box, IData_subset_factory *factory, mi::neuraylib::IDice_transaction *dice_transaction) const
Implementation maps floating-point bounding box to a signed integer bounding box and call respective ...
Definition: idistributed_data_import_callback.h:263
virtual IDistributed_data_subset * create(const mi::math::Bbox_struct< mi::Sint32, 3 > &bounding_box, mi::Uint32 time_step, IData_subset_factory *factory, mi::neuraylib::IDice_transaction *dice_transaction) const
Shall create and provide the dataset subset contained in the given bounding box for a given time step...
Definition: idistributed_data_import_callback.h:292
const IDistributed_data_properties * get_dataset_properties() const
Empty body, i.e., no data properties exposed.
Definition: idistributed_data_import_callback.h:353
virtual IDistributed_data_subset * create(const mi::math::Bbox_struct< mi::Sint32, 3 > &bounding_box, IData_subset_factory *factory, mi::neuraylib::IDice_transaction *dice_transaction) const =0
Shall create and provide the dataset subset contained in the given bounding box.
virtual void deserialize(mi::neuraylib::IDeserializer *deserializer)
Empty body, i.e., no member data is deserialized.
Definition: idistributed_data_import_callback.h:346
virtual const char * get_configuration() const
Empty body, i.e., no configuration for the session exporter given.
Definition: idistributed_data_import_callback.h:356
virtual mi::Size estimate(const mi::math::Bbox_struct< mi::Sint32, 3 > &bounding_box, mi::neuraylib::IDice_transaction *dice_transaction) const =0
Shall provide the size of the dataset that is contained in the given bounding box.
Factory for creating an empty data subset for a specific distributed dataset type.
Definition: idistributed_data_subset.h:259
Import callback mechanism for implementing distributed and parallel data loading from arbitrary sourc...
Definition: idistributed_data_import_callback.h:82
virtual IDistributed_data_subset * create(const mi::math::Bbox_struct< mi::Float32, 3 > &bounding_box, IData_subset_factory *factory, mi::neuraylib::IDice_transaction *dice_transaction) const =0
Shall create and provide the dataset subset contained in the given bounding box.
virtual mi::base::Uuid subset_id() const =0
Shall provide the interface id that tells the NVIDIA IndeX library the kind of IDistributed_data_subs...
virtual mi::Size estimate(const mi::math::Bbox_struct< mi::Float32, 3 > &bounding_box, mi::neuraylib::IDice_transaction *dice_transaction) const =0
Shall provide the size of the dataset that is contained in the given bounding box.
virtual IDistributed_data_subset * create(const mi::math::Bbox_struct< mi::Float32, 3 > &bounding_box, mi::Uint32 time_step, IData_subset_factory *factory, mi::neuraylib::IDice_transaction *dice_transaction) const =0
Shall create and provide the dataset subset contained in the given bounding box for a given time step...
virtual const char * get_configuration() const =0
Returns optional configuration settings that may be used by the library for the session export mechan...
virtual const IDistributed_data_properties * get_dataset_properties() const =0
Shall provide an instance of IDistributed_data_properties giving basic property information about the...
This class gives basic properties of distributed datasets imported using the parallel data loading of...
Definition: idistributed_data_import_callback.h:34
virtual mi::math::Matrix_struct< mi::Float32, 4, 4 > get_transform() const =0
Returns an optional transformation inherently attached to the dataset.
virtual mi::math::Bbox_struct< mi::Float32, 3 > get_bounding_box() const =0
Returns the axis-aligned bounding box of the dataset in its local object space.
A data subset represent the unique entity representing a distributed dataset inside a single subregio...
Definition: idistributed_data_subset.h:157
Distributed subset interaces for a large-scale distributed datasets.
Common namespace for all NVIDIA APIs.
Definition: iindex.h:349