NVIDIA IndeX API nvidia_logo_transpbg.gif Up
iparticle_volume_subset.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright 2023 NVIDIA Corporation. All rights reserved.
3 *****************************************************************************/
6
7#ifndef NVIDIA_INDEX_IPARTICLE_VOLUME_SUBSET_H
8#define NVIDIA_INDEX_IPARTICLE_VOLUME_SUBSET_H
9
10#include <mi/dice.h>
11#include <mi/base/interface_declare.h>
12#include <mi/math/vector.h>
13
15
16namespace nv {
17namespace index {
18
19// forward declarations
20class IParticle_volume_subset;
21class IParticle_volume_subset_device;
22
29 public mi::base::Interface_declare<0x27f160e3,0x1412,0x4264,0xa2,0x5b,0x89,0x3d,0xe6,0xaa,0xb3,0x37,
30 IDistributed_data_attribute_set_descriptor>
31{
32public:
38 {
40 };
41
49 virtual bool setup_attribute(
50 mi::Uint32 attrib_index,
51 const Attribute_parameters& attrib_params) = 0;
52
61 mi::Uint32 attrib_index,
62 Attribute_parameters& attrib_params) const = 0;
63
65 virtual mi::Uint32 get_attribute_count_limit() const = 0;
66
67};
68
79 public mi::base::Interface_declare<0x7694224f,0x93e6,0x4d5c,0x91,0x82,0xad,0x90,0x6a,0xb1,0x12,0x70,
80 IDistributed_data_subset>
81{
82public:
86
107 mi::Size nb_subset_particles,
108 mi::Float32 fixed_particle_radius = -1.0f,
109 bool enable_particle_normals = false) = 0;
110
115 virtual mi::Size get_number_of_particles() const = 0;
116
124 virtual mi::math::Vector_struct<mi::Float32, 3>* get_positions_buffer() const = 0;
125
136 virtual mi::Float32* get_radii_buffer() const = 0;
137
145 virtual mi::Float32 get_fixed_radius() const = 0;
146
154 virtual mi::math::Vector_struct<mi::Float32, 3>* get_normals_buffer() const = 0;
155
156
167 virtual void* get_attribute_buffer(mi::Uint32 attrib_index) const = 0;
168
169
176
177};
178
179
188 public mi::base::Interface_declare<0x7259b57b,0x18e8,0x411e,0x8f,0x28,0xfd,0xad,0x94,0xf0,0x1f,0xd6,
189 IDistributed_data_subset_device>
190{
191public:
194 {
197 };
198
201 {
205 };
206
209 {
213 };
214
216 {
221 };
222
225 {
226 mi::Uint32 nb_particles;
230 mi::Uint32 element_stride;
234 };
235
238 {
239 mi::Float32 fixed_radius;
240 //mi::Float32 min_radius;
241 //mi::Float32 max_radius;
242 };
243
244
247
250
257 const Particle_size_parameters& params) = 0;
258
267 virtual void* get_geometry_storage(
268 Particle_geometry_buffer buffer_selector) = 0;
269
270
283 virtual bool resize_storage(
284 const Geometry_parameters& params) = 0;
285
286
304 const Geometry_parameters& params,
305 void* const geometry_device_buffers [],
306 mi::Size const byte_sizes_of_buffers [],
307 mi::Uint32 nb_buffers) = 0;
308
309
317 mi::Uint32* formats,
318 mi::Uint32 nb_formats) const = 0;
319
330 const mi::Uint32* formats,
331 mi::Uint32 nb_formats) = 0;
332
333
343 mi::Uint32 attrib_index) = 0;
344
357 mi::Uint32 attrib_index,
358 void* attribute_storage,
359 mi::Size byte_size_of_storage) = 0;
360
363 virtual bool is_internal_geometry_storage() const = 0;
364
367 virtual bool is_internal_attribute_storage() const = 0;
368
375 mi::Size storage_sizes[],
376 mi::Uint32 nb_storage_sizes) const = 0;
377
383 mi::Uint32 attrib_index) const = 0;
384
385
387 //virtual void signal_data_change(bool geometry, bool attributes) = 0;
388};
389
390} // namespace index
391} // namespace nv
392
393#endif // NVIDIA_INDEX_IPARTICLE_VOLUME_SUBSET_H
Attribute-set descriptor for particle volume subsets.
Definition: iparticle_volume_subset.h:31
virtual mi::Uint32 get_attribute_count_limit() const =0
Get maximum number of attributes.
virtual bool setup_attribute(mi::Uint32 attrib_index, const Attribute_parameters &attrib_params)=0
Configure the parameters for an attribute for a particle volume subset.
virtual bool get_attribute_parameters(mi::Uint32 attrib_index, Attribute_parameters &attrib_params) const =0
Get the attribute parameters of a currently valid attribute for a given index.
Distributed data storage class for particle volume subsets hosted on a GPU device.
Definition: iparticle_volume_subset.h:190
virtual bool set_particle_size_parameters(const Particle_size_parameters &params)=0
Change parameters of particle size.
virtual Particle_size_parameters get_particle_size_parameters() const =0
Get parameters of particle size.
virtual bool is_internal_geometry_storage() const =0
Get location of geometry storage.
virtual void get_geometry_storage_byte_size(mi::Size storage_sizes[], mi::Uint32 nb_storage_sizes) const =0
Get size in bytes of geometry storage.
Particle_normals_format
Data format of particle normals.
Definition: iparticle_volume_subset.h:201
@ PVOL_normals_compressed_1_32
particle normals in compressed format 1 (sizeof(uint32), 'compress_normal_uint_sphere')
Definition: iparticle_volume_subset.h:204
@ PVOL_normals_f32_3
particle normals in float3 format (mi::math::Vector_struct< mi::Float32, 3 >)
Definition: iparticle_volume_subset.h:203
@ PVOL_normals_none
no particle normals present
Definition: iparticle_volume_subset.h:202
Particle_geometry_buffer
Definition: iparticle_volume_subset.h:216
@ PVOL_buffer_positions
buffer for particle positions
Definition: iparticle_volume_subset.h:218
@ PVOL_buffer_normals
buffer for particle normals
Definition: iparticle_volume_subset.h:220
@ PVOL_buffer_base
base buffer, used for combined or interleaved storage formats
Definition: iparticle_volume_subset.h:217
@ PVOL_buffer_radii
buffer for particle radii
Definition: iparticle_volume_subset.h:219
virtual bool set_attribute_formats(const mi::Uint32 *formats, mi::Uint32 nb_formats)=0
Set particle attribute formats.
virtual bool adopt_geometry_storage(const Geometry_parameters &params, void *const geometry_device_buffers[], mi::Size const byte_sizes_of_buffers[], mi::Uint32 nb_buffers)=0
Adopt external geometry storage using Geometry_parameters.
Particle_storage_format
Organization of particle geometry buffers for positions, radii and normals.
Definition: iparticle_volume_subset.h:209
@ PVOL_geometry_storage_interleaved
geometry buffers are interleaved, element components in order: position, radius, normal
Definition: iparticle_volume_subset.h:212
@ PVOL_geometry_storage_separate
geometry buffers are separate
Definition: iparticle_volume_subset.h:210
@ PVOL_geometry_storage_combined
geometry buffers are consecutive arrays in order: positions, radii, normals
Definition: iparticle_volume_subset.h:211
virtual void * get_attribute_storage(mi::Uint32 attrib_index)=0
Get current attribute device buffer for given attribute index.
virtual mi::Size get_attribute_storage_byte_size(mi::Uint32 attrib_index) const =0
Get size in bytes of attribute storage.
virtual Geometry_parameters get_geometry_parameters() const =0
Get parameters of particle geometry.
Particle_radii_format
Data format of particle radii.
Definition: iparticle_volume_subset.h:194
@ PVOL_radii_none
no particle radii present
Definition: iparticle_volume_subset.h:195
@ PVOL_radii_f32
particle radii in float format (mi::Float32)
Definition: iparticle_volume_subset.h:196
virtual void * get_geometry_storage(Particle_geometry_buffer buffer_selector)=0
Get current geometry device buffer.
virtual bool resize_storage(const Geometry_parameters &params)=0
Resize internal geometry/attribute storage using Geometry_parameters.
virtual bool is_internal_attribute_storage() const =0
Get location of attribute storage.
virtual bool get_attribute_formats(mi::Uint32 *formats, mi::Uint32 nb_formats) const =0
Get particle attribute formats.
virtual bool adopt_attribute_storage(mi::Uint32 attrib_index, void *attribute_storage, mi::Size byte_size_of_storage)=0
Adopt external attribute device buffer for given attribute index.
Distributed data storage class for particle volume subsets.
Definition: iparticle_volume_subset.h:81
virtual mi::Float32 * get_radii_buffer() const =0
Get the particle radii buffer.
virtual mi::math::Vector_struct< mi::Float32, 3 > * get_positions_buffer() const =0
Get the particle positions buffer.
virtual const IParticle_volume_attribute_set_descriptor * get_attribute_set_descriptor() const =0
Returns the attribute-set descriptor of the subset.
virtual IParticle_volume_subset_device * get_device_subset() const =0
Access the device particle volume subset for direct access to device resources.
virtual bool generate_volume_storage(mi::Size nb_subset_particles, mi::Float32 fixed_particle_radius=-1.0f, bool enable_particle_normals=false)=0
Generate the subsets particle volume data storage.
virtual mi::Size get_number_of_particles() const =0
Returns the number of particles in the current subset.
virtual void * get_attribute_buffer(mi::Uint32 attrib_index) const =0
Get a particle attributes buffer.
virtual mi::math::Vector_struct< mi::Float32, 3 > * get_normals_buffer() const =0
Get the particle normals buffer.
virtual mi::Float32 get_fixed_radius() const =0
Get the fixed radius set for the particle volume.
Distributed_data_attribute_format
Attribute formats for distributed dataset types.
Definition: idistributed_data_subset.h:26
Distributed subset interaces for a large-scale distributed datasets.
Common namespace for all NVIDIA APIs.
Definition: iindex.h:349
Particle volume attribute parameters.
Definition: iparticle_volume_subset.h:38
Distributed_data_attribute_format format
Attribute format. See Distributed_data_attribute_format.
Definition: iparticle_volume_subset.h:39
Parameters of particle geometry.
Definition: iparticle_volume_subset.h:225
mi::Uint32 nb_particles
number of particles in subset
Definition: iparticle_volume_subset.h:226
mi::Uint32 component_offset_positions
byte offset for positions per element in interleaved data
Definition: iparticle_volume_subset.h:231
mi::Uint32 component_offset_radii
byte offset for radii per element in interleaved data
Definition: iparticle_volume_subset.h:232
Particle_storage_format storage_format
buffer organization of geometry storage
Definition: iparticle_volume_subset.h:229
mi::Uint32 component_offset_normals
byte offset for normals per element in interleaved data
Definition: iparticle_volume_subset.h:233
Particle_radii_format radii_format
format and presence of radii
Definition: iparticle_volume_subset.h:227
mi::Uint32 element_stride
element stride in bytes for interleaved data (4-byte aligned)
Definition: iparticle_volume_subset.h:230
Particle_normals_format normals_format
format and presence of normals
Definition: iparticle_volume_subset.h:228
Parameters of particle size.
Definition: iparticle_volume_subset.h:238
mi::Float32 fixed_radius
fixed particle radius
Definition: iparticle_volume_subset.h:239