Interface class for user-defined techniques for computing data (2D textures on plane and heightfield shapes and 3D volume data) on demand. More...
#include <idistributed_compute_technique.h>
Inherits mi::base::Interface_declare< 0xfbde8f4c, ... >.
Public Types | |
enum | Invocation_mode { INDIVIDUAL , GROUPED_PER_DEVICE , GROUPED_PER_HOST } |
Public Member Functions | |
virtual void | launch_compute (IDistributed_compute_destination_buffer_container *dst_buffer_container, mi::neuraylib::IDice_transaction *dice_transaction) const =0 |
Launches the user-defined compute technique. More... | |
virtual bool | is_gpu_operation () const =0 |
Return whether the compute technique will work on the potentially exposed device data directly. More... | |
virtual Invocation_mode | get_invocation_mode () const =0 |
This mode controls how IndeX is providing the destination buffers for multiple data subsets to an instance of the compute technique implementation. More... | |
virtual const char * | get_configuration () const |
Returns optional configuration settings that may be used by the library for the session export mechanism provided by ISession::export_session() . More... | |
Interface class for user-defined techniques for computing data (2D textures on plane and heightfield shapes and 3D volume data) on demand.
An implementation of this class can be assigned as a scene description attribute to an compute-enabled scene element, such as IPlane
, IRegular_heightfield
or ISparse_volume_scene_element
. When rendering a certain area of the scene primitive (defined by the renderer), the compute technique is called and an instance of an IDistributed_compute_destination_buffer
is passed. The compute technique fills this buffer for the required subregions of the distributed dataset. The renderer then maps either the generated data directly (ISparse_volume_scene_element
) or uses it as a texture mapped onto the defined 2D area (c IPlane and IRegular_heightfield
).
Typical use cases for the compute technique are to visualize data that result from complex, possibly distributed, computing processes either as 2D textures or 3D volumes.
Enumerator | |
---|---|
INDIVIDUAL | The launch_compute() callback will be invoked for each data-subset individually. |
GROUPED_PER_DEVICE | The launch_compute() callback will be invoked with a list of all data-subsets grouped per device. |
GROUPED_PER_HOST | The launch_compute() callback will be invoked with a list of all data-subsets grouped per host. |
|
inlinevirtual |
Returns optional configuration settings that may be used by the library for the session export mechanism provided by ISession::export_session()
.
|
pure virtual |
This mode controls how IndeX is providing the destination buffers for multiple data subsets to an instance of the compute technique implementation.
The application can control whether to receive all jobs individually and in parallel, or grouped per device or host.
|
pure virtual |
Return whether the compute technique will work on the potentially exposed device data directly.
Some NVIDIA IndeX data-access interfaces exposed by the particular IDistributed_compute_destination_buffer
interfaces allow manipulation of GPU-located data directly (e.g., ISparse_volume_subset
). This function communicates to IndeX if the device data is accessed or manipulated in order to change the internal data residency scheduling during the NVIDIA IndeX rendering operation when the compute task is invoked.
true
if the compute technique will operate on the potentially exposed device data directly.
|
pure virtual |
Launches the user-defined compute technique.
This method is called by the rendering system in a separate thread to trigger the computation of the buffers data asynchronously and in parallel to the rendering of subregion data.
[in,out] | dst_buffer_container | A set of instances of a IDistributed_compute_destination_buffer representing either a IDistributed_compute_destination_buffer_2d_texture for generating 2D texture data or a specialization of IDistributed_compute_destination_buffer_3d_volume for generating 3D volume data. Part of destination buffers attributes are set by the rendering system. These include, for instance, the bounding box of the subregion or the 2D screen space area covered by the subregion. The destination buffers are created by and will be cached inside the rendering system. |
[in] | dice_transaction | The current DiCE transaction. |