NVIDIA IndeX API nvidia_logo_transpbg.gif Up
idistributed_compute_destination_buffer.h
Go to the documentation of this file.
1 /******************************************************************************
2 * Copyright 2023 NVIDIA Corporation. All rights reserved.
3 *****************************************************************************/
6
7#ifndef NVIDIA_INDEX_IDISTRIBUTED_COMPUTE_DESTINATION_BUFFER_H
8#define NVIDIA_INDEX_IDISTRIBUTED_COMPUTE_DESTINATION_BUFFER_H
9
10#include <mi/dice.h>
11#include <mi/base/interface_declare.h>
12
14
20
21namespace nv {
22namespace index {
23
42 public mi::base::Interface_declare<0xfaae5c5,0x2701,0x442e,0x8f,0x77,0xe3,0x3,0xed,0xd,0x6f,0x5c>
43{
44public:
53 virtual mi::math::Bbox_struct<mi::Float32, 3> get_subregion_bbox() const = 0;
54
64 virtual mi::math::Bbox_struct<mi::Uint32, 2> get_screen_space_area() const = 0;
65
70 virtual mi::Sint32 get_gpu_device_id() const = 0;
71
74 mi::Uint32 frame_id;
75 mi::Uint32 scope_id;
76 mi::Uint32 host_id;
77 };
78
84
93 virtual void notify_compute_completion() const = 0;
94};
95
105 public mi::base::Interface_declare<0x9da831bb,0x8425,0x4590,0xaa,0x10,0x8,0xcc,0x8d,0x5f,0x90,0xc1,
106 nv::index::IDistributed_compute_destination_buffer>
107{
108public:
117 virtual mi::math::Bbox_struct<mi::Sint32, 3> get_volume_subset_data_bbox() const = 0;
118
132 virtual mi::math::Bbox_struct<mi::Sint32, 3> get_clipped_volume_subset_data_bbox() const = 0;
133
147 virtual mi::math::Bbox_struct<mi::Sint32, 3> get_already_computed_volume_subset_data_bbox() const = 0;
148
155};
156
166 public mi::base::Interface_declare<0x384f6eca,0xd09c,0x47a1,0xa0,0x91,0x1e,0x5f,0xc3,0xfb,0x47,0x6,
167 nv::index::IDistributed_compute_destination_buffer>
168{
169public:
178 virtual mi::math::Bbox_struct<mi::Float32, 3> get_volume_subset_data_bbox() const = 0;
179
186};
187
197 public mi::base::Interface_declare<0x8993a772,0xbde1,0x4424,0x9b,0xec,0xc7,0x86,0xa1,0x38,0x85,0xac,
198 nv::index::IDistributed_compute_destination_buffer>
199{
200public:
209 virtual mi::math::Bbox_struct<mi::Float32, 3> get_volume_subset_data_bbox() const = 0;
210
217};
218
228 public mi::base::Interface_declare<0x131bc471, 0xb557, 0x4e80, 0x8e, 0x71, 0xa1, 0x3a, 0x58, 0xd5, 0xa5, 0x1f,
229 nv::index::IDistributed_compute_destination_buffer>
230{
231public:
240 virtual mi::math::Bbox_struct<mi::Float32, 3> get_volume_subset_data_bbox() const = 0;
241
248};
249
250
269 public mi::base::Interface_declare<0xd985cb6a,0xe5c2,0x4c40,0x95,0xe3,0x29,0xa7,0x22,0x3e,0x35,0x9f,
270 mi::neuraylib::ISerializable>
271{
272public:
288 virtual const mi::math::Vector_struct<mi::Float32, 3>* generate_intersection_points(
289 mi::Uint32& nb_points) = 0;
290};
291
305 public mi::base::Interface_declare<0x1ea87c20,0xdae0,0x4b81,0xa3,0x16,0xa0,0x52,0x2d,0xf7,0xb4,0x3c,
306 nv::index::IDistributed_compute_destination_buffer>
307{
308public:
328 {
331 };
332
338 {
339 FORMAT_INVALID = 0x00,
342 FORMAT_RGBA_FLOAT32 = 0x03
343 };
344
369 {
373 mi::math::Bbox_struct<mi::Float32, 2> covered_area;
374 mi::math::Vector_struct<mi::Uint32, 2> resolution;
375 };
376
388 virtual bool generate_buffer_storage(const Buffer_config& buffer_cfg) = 0;
389
398 virtual const Buffer_config& get_buffer_config() const = 0;
399
408 virtual mi::Uint8* get_buffer_storage() const = 0;
409
418
419
431 virtual mi::math::Bbox_struct<mi::Float32, 2> get_surface_area() const = 0;
432
445};
446
452 public mi::base::Interface_declare<0xfb33be9,0x8b65,0x400d,0xb3,0xfe,0xc2,0x3a,0x47,0x2d,0x4e,0xcf>
453{
454public:
457 {
458 mi::math::Vector_struct<mi::Uint32, 2> mip_level_image_resolution;
459 mi::math::Bbox_struct<mi::Uint32, 2> mip_level_image_tile_bounds;
461 };
462
467 virtual mi::Uint32 get_nb_mipmap_levels() const = 0;
472 virtual void set_nb_mipmap_levels(mi::Uint32 nb_mipmaps) = 0;
473
480 virtual LOD_level_info get_mip_level_info(mi::Uint32 mip_level) const = 0;
487 virtual void set_mip_level_info(
488 mi::Uint32 mip_level,
489 const LOD_level_info& mip_level_info) = 0;
490};
491
535 public mi::base::Interface_declare<0xb25d2721,0xab95,0x450c,0x8d,0x64,0xd0,0xc5,0xd1,0xaa,0xac,0xca,
536 nv::index::IDistributed_compute_destination_buffer>
537{
538public:
544 {
545 FORMAT_INVALID = 0x00,
548 FORMAT_RGBA_FLOAT32 = 0x03
549 };
550
583 const mi::math::Vector_struct<mi::Uint32, 2>& global_texture_resolution,
584 const mi::math::Bbox_struct<mi::Float32, 2>& texture_tile_surface_area,
585 mi::Uint32 texture_tile_border) const = 0;
586
604 Buffer_format texture_buffer_format) = 0;
605
610 virtual bool is_LOD_buffer_storage_initialized() const = 0;
611
622
623
630
639 const mi::math::Vector_struct<mi::Uint32, 2>& lod_level_range) = 0;
640
645 virtual mi::math::Vector_struct<mi::Uint32, 2> get_active_LOD_level_range() const = 0;
646
653 mi::Uint32& nb_required_levels,
654 mi::Uint32*& required_levels) const = 0;
655
667 mi::Uint32 lod_level) = 0;
668
677
689 virtual mi::math::Bbox_struct<mi::Float32, 2> get_surface_area() const = 0;
690};
691
692class IDistributed_compute_destination_buffer_container :
693 public mi::base::Interface_declare<0xdb6a75e3,0x86c0,0x494a,0xac,0xd9,0x4a,0xd9,0x68,0x56,0xb7,0x3c>
694{
695public:
696 virtual mi::Uint32 get_nb_destination_buffers() const = 0;
697 virtual IDistributed_compute_destination_buffer* get_destination_buffer(mi::Uint32 buffer_idx) const = 0;
698};
699
700} // namespace index
701} // namespace nv
702
703#endif // NVIDIA_INDEX_IDISTRIBUTED_COMPUTE_DESTINATION_BUFFER_H
Definition: idistributed_compute_destination_buffer.h:453
virtual LOD_level_info get_mip_level_info(mi::Uint32 mip_level) const =0
Information regarding the mipmap-levels in the configuration.
virtual mi::Uint32 get_nb_mipmap_levels() const =0
Number of mipmap-levels in the configuration.
virtual void set_mip_level_info(mi::Uint32 mip_level, const LOD_level_info &mip_level_info)=0
Information regarding the mipmap-levels in the configuration.
virtual void set_nb_mipmap_levels(mi::Uint32 nb_mipmaps)=0
Number of mipmap-levels in the configuration.
Compute-destination buffer for 2D LOD-texture generation techniques.
Definition: idistributed_compute_destination_buffer.h:537
Buffer_format
Texture destination buffer format description.
Definition: idistributed_compute_destination_buffer.h:544
@ FORMAT_SCALAR_UINT8
8-bit integer used for indexing a color table of 256 entries
Definition: idistributed_compute_destination_buffer.h:546
@ FORMAT_RGBA_UINT8
8-bit integer per RGBA component
Definition: idistributed_compute_destination_buffer.h:547
@ FORMAT_RGBA_FLOAT32
32-bit float per RGBA component
Definition: idistributed_compute_destination_buffer.h:548
virtual const IDistributed_compute_destination_buffer_2d_texture_LOD_configuration * get_active_LOD_configuration() const =0
Returns the currently active IDistributed_compute_destination_buffer_2d_texture_LOD_configuration.
virtual void set_active_LOD_level_range(const mi::math::Vector_struct< mi::Uint32, 2 > &lod_level_range)=0
Set the active LOD-level range to be used by NVIDIA IndeX.
virtual mi::math::Vector_struct< mi::Uint32, 2 > get_active_LOD_level_range() const =0
Returns the currently active LOD-level range to be used by NVIDIA IndeX.
virtual void get_required_LOD_levels(mi::Uint32 &nb_required_levels, mi::Uint32 *&required_levels) const =0
Query the required LOD-levels for which to generate and write data to this LOD-texture instance.
virtual IDistributed_compute_destination_buffer_2d_texture_LOD_configuration * generate_LOD_configuration(const mi::math::Vector_struct< mi::Uint32, 2 > &global_texture_resolution, const mi::math::Bbox_struct< mi::Float32, 2 > &texture_tile_surface_area, mi::Uint32 texture_tile_border) const =0
Generate an instance of IDistributed_compute_destination_buffer_2d_texture_LOD_configuration.
virtual mi::math::Bbox_struct< mi::Float32, 2 > get_surface_area() const =0
Returns the 2D surface area for which the generation of the texture buffer is requested.
virtual bool generate_LOD_buffer_storage(const IDistributed_compute_destination_buffer_2d_texture_LOD_configuration *lod_config, Buffer_format texture_buffer_format)=0
Generate LOD-buffer storage.
virtual const IDistributed_data_subset * get_subregion_geometry_data() const =0
Returns the per-subregion data of the geometry associated with this buffer.
virtual bool is_LOD_buffer_storage_initialized() const =0
Query if the LOD-buffer storage is initialized.
virtual mi::Uint8 * get_LOD_level_buffer_storage(mi::Uint32 lod_level)=0
Query the currently valid texture buffer storage for a particular compute-tile LOD-level.
virtual Buffer_format get_texture_buffer_format() const =0
Returns the currently active Buffer_format.
Compute-destination buffer for 2D texture generation techniques.
Definition: idistributed_compute_destination_buffer.h:307
virtual IDistributed_compute_intersection_points * get_intersection_points() const =0
The texture generation can rely on pre-computed ray/geometry intersections.
virtual mi::Uint8 * get_buffer_storage() const =0
Get the current valid texture buffer storage.
virtual mi::math::Bbox_struct< mi::Float32, 2 > get_surface_area() const =0
Returns the 2D surface area for which the generation of the texture buffer is requested.
virtual const Buffer_config & get_buffer_config() const =0
Get the texture buffer config parameters of the currently valid buffer storage.
Buffer_format
Texture destination buffer format description.
Definition: idistributed_compute_destination_buffer.h:338
@ FORMAT_RGBA_FLOAT32
32-bit float per RGBA component
Definition: idistributed_compute_destination_buffer.h:342
@ FORMAT_RGBA_UINT8
8-bit integer per RGBA component
Definition: idistributed_compute_destination_buffer.h:341
@ FORMAT_SCALAR_UINT8
8-bit integer used for indexing a color table of 256 entries
Definition: idistributed_compute_destination_buffer.h:340
virtual bool generate_buffer_storage(const Buffer_config &buffer_cfg)=0
Generate buffer storage.
virtual const IDistributed_data_subset * get_subregion_geometry_data() const =0
Returns the per-subregion data of the geometry associated with this buffer.
Buffer_layout
The layout of the buffer.
Definition: idistributed_compute_destination_buffer.h:328
@ ONE_DIMENSIONAL_ARRAY
Buffer layout that corresponds to a 1D array of ray/geometry intersections.
Definition: idistributed_compute_destination_buffer.h:329
@ TWO_DIMENSIONAL_ARRAY
Buffer layout that corresponds to a 2D array.
Definition: idistributed_compute_destination_buffer.h:330
Compute-destination buffer for 3D sparse-volume generation techniques.
Definition: idistributed_compute_destination_buffer.h:107
virtual mi::math::Bbox_struct< mi::Sint32, 3 > get_already_computed_volume_subset_data_bbox() const =0
Returns the bounding box of the volume subset for which the compute technique is required to generate...
virtual mi::math::Bbox_struct< mi::Sint32, 3 > get_clipped_volume_subset_data_bbox() const =0
Returns the clipped bounding box of the volume subset for which the compute technique is required to ...
virtual ISparse_volume_subset * get_distributed_data_subset()=0
Returns the volume data-subset for which the compute technique is required to generate voxel values.
virtual mi::math::Bbox_struct< mi::Sint32, 3 > get_volume_subset_data_bbox() const =0
Returns the bounding box of the volume subset for which the compute technique is required to generate...
Compute-destination buffer for VDB (NanoVDB) volume generation techniques.
Definition: idistributed_compute_destination_buffer.h:199
virtual mi::math::Bbox_struct< mi::Float32, 3 > get_volume_subset_data_bbox() const =0
Returns the bounding box of the volume subset for which the compute technique is required to generate...
virtual IVDB_subset * get_distributed_data_subset()=0
Returns the VDB volume data-subset for which the compute technique is required to generate data value...
Compute-destination buffer for irregular volume generation techniques.
Definition: idistributed_compute_destination_buffer.h:168
virtual IIrregular_volume_subset * get_distributed_data_subset()=0
Returns the volume data-subset for which the compute technique is required to generate data values.
virtual mi::math::Bbox_struct< mi::Float32, 3 > get_volume_subset_data_bbox() const =0
Returns the bounding box of the volume subset for which the compute technique is required to generate...
Compute-destination buffer for particle volumes (point sets).
Definition: idistributed_compute_destination_buffer.h:230
virtual IParticle_volume_subset * get_distributed_data_subset()=0
Returns the particle volume data-subset for which the compute technique is required to generate data ...
virtual mi::math::Bbox_struct< mi::Float32, 3 > get_volume_subset_data_bbox() const =0
Returns the bounding box of the volume subset for which the compute technique is required to generate...
The interface class enables the asynchronous generation of 2D texture buffers and 3D volume data.
Definition: idistributed_compute_destination_buffer.h:43
virtual mi::math::Bbox_struct< mi::Uint32, 2 > get_screen_space_area() const =0
Returns the 2D area that the subregion covers in screen space.
virtual void notify_compute_completion() const =0
Notity IndeX about the completion of the compute operation performed on an instance of IDistributed_c...
virtual mi::Sint32 get_gpu_device_id() const =0
GPU-device id if the destination buffer is located on a GPU-device.
virtual mi::math::Bbox_struct< mi::Float32, 3 > get_subregion_bbox() const =0
The interface method returns the bounding box of the subregion for which the compute technique has be...
virtual Compute_frame_id get_compute_frame_id() const =0
Compute operations run asynchronous to a frame, which is uniquely defined by an id.
The interface class exposes intersection points that can be used, for instance, to texture or shade t...
Definition: idistributed_compute_destination_buffer.h:271
virtual const mi::math::Vector_struct< mi::Float32, 3 > * generate_intersection_points(mi::Uint32 &nb_points)=0
The interface method computes the intersections of rays with the geometry and returns a buffer of all...
A data subset represent the unique entity representing a distributed dataset inside a single subregio...
Definition: idistributed_data_subset.h:157
Distributed data storage class for irregular volume subsets.
Definition: iirregular_volume_subset.h:39
Distributed data storage class for particle volume subsets.
Definition: iparticle_volume_subset.h:81
Distributed data storage class for sparse volume subsets.
Definition: isparse_volume_subset.h:286
Distributed data storage class for VDB subsets.
Definition: ivdb_subset.h:34
Distributed subset interaces for a large-scale distributed datasets.
Distributed subsets of irregular volume datasets.
Distributed subsets of particle volume datasets.
Distributed subsets of sparse volume datasets.
Distributed subsets of VDB datasets.
Common namespace for all NVIDIA APIs.
Definition: iindex.h:349
Unique identifier that corresponds to the frame for which the compute was issued.
Definition: idistributed_compute_destination_buffer.h:73
mi::Uint32 frame_id
Globally unique frame identifier.
Definition: idistributed_compute_destination_buffer.h:74
mi::Uint32 scope_id
Scope id the compute task is issued under.
Definition: idistributed_compute_destination_buffer.h:75
mi::Uint32 host_id
Host-id of the host issuing the compute task.
Definition: idistributed_compute_destination_buffer.h:76
Texture buffer configuration.
Definition: idistributed_compute_destination_buffer.h:369
mi::math::Vector_struct< mi::Uint32, 2 > resolution
! Resolution of the buffer.
Definition: idistributed_compute_destination_buffer.h:374
Buffer_layout layout
! The buffer layout can be either 1- or 2-dimensional.
Definition: idistributed_compute_destination_buffer.h:370
mi::math::Bbox_struct< mi::Float32, 2 > covered_area
! Covered 2d area in screen space.
Definition: idistributed_compute_destination_buffer.h:373
Buffer_format format
Texture destination buffer format.
Definition: idistributed_compute_destination_buffer.h:372
Structural information regarding the level-of-detail data.
Definition: idistributed_compute_destination_buffer.h:457
mi::math::Vector_struct< mi::Uint32, 2 > mip_level_image_resolution
Image resolution for specified mipmap-level.
Definition: idistributed_compute_destination_buffer.h:458
mi::math::Bbox_struct< mi::Uint32, 2 > mip_level_image_tile_bounds
Image-tile bounds for specified mipmap-level.
Definition: idistributed_compute_destination_buffer.h:459
mi::Float32 mip_level_selection_distance
World-distance for selection of specified mipmap-level.
Definition: idistributed_compute_destination_buffer.h:460