7#ifndef NVIDIA_INDEX_IPARTICLE_VOLUME_SUBSET_H
8#define NVIDIA_INDEX_IPARTICLE_VOLUME_SUBSET_H
11#include <mi/base/interface_declare.h>
12#include <mi/math/vector.h>
20class IParticle_volume_subset;
21class IParticle_volume_subset_device;
29 public mi::base::Interface_declare<0x27f160e3,0x1412,0x4264,0xa2,0x5b,0x89,0x3d,0xe6,0xaa,0xb3,0x37,
30 IDistributed_data_attribute_set_descriptor>
50 mi::Uint32 attrib_index,
61 mi::Uint32 attrib_index,
79 public mi::base::Interface_declare<0x7694224f,0x93e6,0x4d5c,0x91,0x82,0xad,0x90,0x6a,0xb1,0x12,0x70,
80 IDistributed_data_subset>
107 mi::Size nb_subset_particles,
108 mi::Float32 fixed_particle_radius = -1.0f,
109 bool enable_particle_normals =
false) = 0;
188 public mi::base::Interface_declare<0x7259b57b,0x18e8,0x411e,0x8f,0x28,0xfd,0xad,0x94,0xf0,0x1f,0xd6,
189 IDistributed_data_subset_device>
305 void*
const geometry_device_buffers [],
306 mi::Size
const byte_sizes_of_buffers [],
307 mi::Uint32 nb_buffers) = 0;
318 mi::Uint32 nb_formats)
const = 0;
330 const mi::Uint32* formats,
331 mi::Uint32 nb_formats) = 0;
343 mi::Uint32 attrib_index) = 0;
357 mi::Uint32 attrib_index,
358 void* attribute_storage,
359 mi::Size byte_size_of_storage) = 0;
375 mi::Size storage_sizes[],
376 mi::Uint32 nb_storage_sizes)
const = 0;
383 mi::Uint32 attrib_index)
const = 0;
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 ¶ms)=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 ¶ms, 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 ¶ms)=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