7#ifndef NVIDIA_INDEX_IINDEX_DIRECT_H
8#define NVIDIA_INDEX_IINDEX_DIRECT_H
12#include <nv/index/iindex_direct_vulkan.h>
16struct cudaChannelFormatDesc;
23 VOLUME_DIRECT_TYPE_INVALID = 0x00u,
30struct Volume_direct_data;
37 public mi::base::Interface_declare<0x99cd79a5,0x3ad,0x4a93,0x8c,0xca,0xd8,0x8e,0x2b,0xf1,0x19,0xc2,
38 mi::neuraylib::IElement>
47 virtual mi::math::Matrix_struct<mi::Float32, 4, 4>
get_transform()
const = 0;
67class IVolume_direct_resources_device :
68 public mi::base::Interface_declare<0x35b08e00,0xce92,0x41bb,0x9f,0xad,0x54,0x8,0x70,0x48,0x42,0x1d>
76 mi::Size device_data_size;
78 const void* allocation_user_data;
85 cudaArray* device_array;
86 const cudaChannelFormatDesc* device_array_format;
87 mi::math::Vector_struct<mi::Uint32, 3> device_array_extent;
89 const void* allocation_user_data;
93class IVolume_direct_resources_device_sparse_volume :
94 public mi::base::Interface_declare<0x56677429,0xc0c6,0x4db7,0xb6,0x5c,0x40,0x8d,0xf8,0x38,0xd7,0x20,
95 IVolume_direct_resources_device>
98 virtual Buffer get_octree_serialization_buffer()
const = 0;
99 virtual Buffer get_octree_node_data_buffer()
const = 0;
100 virtual Buffer get_uniform_buffer()
const = 0;
102 virtual Array* get_brick_atlas_textures()
const = 0;
103 virtual mi::Uint32 get_brick_atlas_textures_count()
const = 0;
106class IVolume_direct_resources_device_NanoVDB :
107 public mi::base::Interface_declare<0xbfc8514b,0xa153,0x48a5,0x97,0x19,0xe3,0xe9,0xfa,0x1b,0xa5,0x3e,
108 IVolume_direct_resources_device>
111 virtual Buffer get_nanovdb_buffer()
const = 0;
116 public mi::base::Interface_declare<0xb12ed2be,0x80bf,0x4fc8,0xba,0xb9,0x46,0x37,0x81,0x48,0x88,0xc>
125 virtual mi::math::Matrix_struct<mi::Float32, 4, 4>
get_transform()
const = 0;
141 virtual IVolume_direct_resources_device* get_resources()
const = 0;
144class IIndex_direct_config :
145 public mi::base::Interface_declare<0x72acbf4a,0x9abc,0x4e6d,0x8c,0xd3,0xe1,0x8e,0xc0,0x66,0xc3,0x7e>
162 VkInstance vk_instance;
169 virtual Sparse_volume_config default_volume_config()
const = 0;
173 virtual void set_sparse_volume_config(
const Sparse_volume_config& vol_cfg) = 0;
174 virtual Sparse_volume_config get_sparse_volume_config()
const = 0;
176 virtual void set_vulkan_config(
const Vulkan_config& vk_cfg) = 0;
177 virtual Vulkan_config get_vulkan_config()
const = 0;
183 public mi::base::Interface_declare<0x62216bae,0xf97e,0x4dda,0xaa,0xfa,0xe5,0x70,0x14,0xec,0xc0,0x67>
192 const IIndex_direct_config* idx_direct_config) = 0;
258 mi::Uint32 cuda_device_id) = 0;
269 VkPhysicalDevice vk_phys_device,
Import callback mechanism for implementing distributed and parallel data loading from arbitrary sourc...
Definition: idistributed_data_import_callback.h:82
A data subset represent the unique entity representing a distributed dataset inside a single subregio...
Definition: idistributed_data_subset.h:157
Simplified scene management for volumes with direct access to low-level data.
Definition: iindex_direct.h:184
virtual const IIndex_direct_config * get_config() const =0
The current configuration settings.
virtual bool initialize(const IIndex_direct_config *idx_direct_config)=0
Initializes the direct access functionality.
virtual const char * get_product_name() const =0
The NVIDIA IndeX Direct product name.
virtual IVolume_direct_host * load_volume(nv::index::IDistributed_data_import_callback *volume_importer)=0
Loads a volume using the given importer.
virtual bool free_volume(IVolume_direct_host *volume_direct_inst)=0
Frees up all resources of a particular host volume instance.
virtual mi::IString * get_memory_usage_info() const =0
Get an information string containing information about internal memory usage.
virtual bool free_volume(IVolume_direct_cuda *volume_direct_inst)=0
Frees up all resources of a particular device volume instance.
virtual IVolume_direct_cuda * upload_volume_to_device(const IVolume_direct_host *volume_direct, mi::Uint32 cuda_device_id)=0
Upload the volume data to a particular CUDA device.
virtual const char * get_revision() const =0
The NVIDIA IndeX Direct revision number indicates the build.
virtual IVolume_direct_vulkan * upload_volume_to_vulkan(VkPhysicalDevice vk_phys_device, VkDevice vk_device, const IVolume_direct_host *volume_direct)=0
Upload the volume data to a particular Vulkan device.
virtual const char * get_version() const =0
The product version of the NVIDIA IndeX Direct interface.
Provides direct access to volume data on a CUDA device.
Definition: iindex_direct.h:117
virtual mi::math::Matrix_struct< mi::Float32, 4, 4 > get_transform() const =0
Returns the volume transformation from voxel space to world space.
virtual mi::math::Bbox_struct< mi::Float32, 3 > get_bounding_box() const =0
Returns the axis-aligned bounding box of the volume in voxel space.
virtual Distributed_data_attribute_format get_voxel_format() const =0
Returns the voxel format of the volume.
virtual mi::Uint32 get_device_id() const =0
Returns the device id of the GPU the volume was uploaded to.
virtual Volume_direct_data_handle get_direct_handle() const =0
Returns the direct data-handle to the volume representation used by the NVIDIA IndeX_direct data acce...
Provides direct access to volume data.
Definition: iindex_direct.h:39
virtual Volume_direct_data_handle get_direct_handle() const =0
Returns the direct data-handle to the volume representation used by the NVIDIA IndeX_direct data acce...
virtual IDistributed_data_subset * get_data_subset() const =0
Returns the data subst associated with the IVolume_direct_host instance.
virtual Distributed_data_attribute_format get_voxel_format() const =0
Returns the voxel format of the volume.
virtual mi::math::Bbox_struct< mi::Float32, 3 > get_bounding_box() const =0
Returns the axis-aligned bounding box of the volume in voxel space.
virtual mi::math::Matrix_struct< mi::Float32, 4, 4 > get_transform() const =0
Returns the volume transformation from voxel space to world space.
Distributed_data_attribute_format
Attribute formats for distributed dataset types.
Definition: idistributed_data_subset.h:26
The interface class for implementing import callbacks used for distributed large-scale data chunk loa...
Distributed subset interaces for a large-scale distributed datasets.
const Volume_direct_data * Volume_direct_data_handle
Direct access to volume data structure.
Definition: iindex_direct.h:33
Volume_direct_type
Definition: iindex_direct.h:22
@ VOLUME_DIRECT_TYPE_NANOVDB
NanoVDB volume representation.
Definition: iindex_direct.h:26
@ VOLUME_DIRECT_TYPE_SPARSE_VOLUME
NVIDIA IndeX sparse volume-octree (SVO) representation.
Definition: iindex_direct.h:25
Common namespace for all NVIDIA APIs.
Definition: iindex.h:349
Configuration settings for internal volume representation.
Definition: iindex_direct.h:155
mi::Uint32 brick_border
! Shared border size between neighboring bricks.
Definition: iindex_direct.h:157
mi::math::Vector_struct< mi::Uint32, 3 > brick_size
! Volume brick size.
Definition: iindex_direct.h:156