The InvAlgorithms module provides useful algorithms for arithmetic operations, data conversions, data extraction, etc.
All the algorithms are located in the directory Inventor/algorithms. They can be used on any type of SoBufferObject SoBufferObject SoBufferObject :
SoArithmetic SoArithmetic SoArithmetic : The arithmetic class provides methods to perform arithmetic operations on buffer objects like Add, Mult, Scale, etc.
SoConversion SoConversion SoConversion : The conversion class provides methods to perform data type conversions on buffer objects. For example to convert a buffer of bytes to a buffer of floats.
SoConvolution SoConvolution SoConvolution : The convolution class provides methods to perform separable convolutions on the data stored in a buffer object.
SoSeismic SoSeismic SoSeismic : The seismic class provides methods specific to seismic trace data, for example computing complex trace attributes on a buffer of data.
The class SoAlgorithms SoAlgorithms SoAlgorithms is a class designed to provide generic access to algorithms developed for specific hardware using a “plugin” mechanism described in the following section.
The InvAlgorithms module provides a mechanism to develop different versions of the algorithms for specific hardware. This mechanism is provided by the class SoAlgorithms SoAlgorithms SoAlgorithms .
See: $OIVHOME/src/Inventor/examples/Features/CUDA/TextureConvolution.
The CUDA algorithms module InvCuda is a separate module which can be loaded dynamically or using the headers from the module. When this module is loaded (using the class SoAlgorithms SoAlgorithms SoAlgorithms ) it returns an overloaded version of the class SoAlgorithms SoAlgorithms SoAlgorithms which can be used to return an instance of the algorithms class implemented for CUDA.
The CUDA version of the algorithms provides access to the SoCudaBufferObject SoCudaBufferObject and SoCpuBufferObject SoCpuBufferObject SoCpuBufferObject version of the APIs.
The standard algorithms, provided by the InvAlgorithms module, use the SSE2 instruction set for fast conversions (used internally for example by the SoDataRange SoDataRange SoDataRange node in VolumeViz). SSE2 instructions are used by default but it’s possible to disable this by setting the preference OIV_NO_SSE to 1.