Open Inventor Release 2024.1.1
 
Loading...
Searching...
No Matches
SoLDMResourceParameters Class Reference

Large Data Management Defines resource parameters constraints of an SoDataSet object. More...

#include <LDM/nodes/SoLDMResourceParameters.h>

+ Inheritance diagram for SoLDMResourceParameters:

Classes

struct  FixedResolutionReport
 This structure returns information to the application when fixedResolution is TRUE and resolution is not -1. More...
 

Public Types

enum  LoadPolicy {
  NO_USER_INTERACTION ,
  ALWAYS ,
  NEVER
}
 Tile Load Policy. More...
 
enum  TileCachePolicy {
  NONE ,
  LOWRES_ONLY ,
  ALL
}
 Tile cache management policy. More...
 
enum  ViewpointRefinementPolicy {
  VIEWPOINT_REFINEMENT_OFF ,
  VIEWPOINT_REFINEMENT_ON ,
  VIEWPOINT_REFINEMENT_INHERITED_FROM_GLOBAL
}
 Viewpoint refinement policies. More...
 
enum  ScreenResolutionCullingPolicy {
  SCREEN_RESOLUTION_CULLING_OFF ,
  SCREEN_RESOLUTION_CULLING_ON ,
  SCREEN_RESOLUTION_CULLING_INHERITED_FROM_GLOBAL
}
 Screen resolution culling policies. More...
 
typedef void FixedResolutionCB(FixedResolutionReport &, void *)
 When fixedResolution is TRUE and resolution is not -1, this callback is used by the application to get a report back from LDM as far as progress achieved and requests made.
 

Public Member Functions

virtual SoType getTypeId () const
 Returns the type identifier for this specific instance.
 
 SoLDMResourceParameters ()
 Constructor.
 
virtual ~SoLDMResourceParameters ()
 Destructor.
 
void setMovingTimeOut (float timeout)
 Sets the amount of time (in seconds) during which LDM continues not loading once a user stops interaction.
 
float getMovingTimeOut ()
 Returns the amount of time during which LDM continues not loading data once a user stops interaction.
 
int getDataSize ()
 Gets the size of a voxel in bytes.
 
void enableFixedResolutionMode (int resolution, FixedResolutionCB *func)
 This method is used to specify a callback that gives feedback while the rendering tries to reach an explicit required fixed resolution.
 
void setGeometryPriority (SoType geometryType, float priority)
 Sets the importance of one type of geometry relative to others.
 
SbBool getGeometryPriority (SoType geometryType, float &priority)
 Returns the priority of the specified geometry type.
 
- Public Member Functions inherited from SoFieldContainer
void setToDefaults ()
 Sets all fields in this object to their default values.
 
SbBool hasDefaultValues () const
 Returns TRUE if all of the object's fields have their default values.
 
SbBool fieldsAreEqual (const SoFieldContainer *fc) const
 Returns TRUE if this object's fields are exactly equal to fc's fields.
 
void copyFieldValues (const SoFieldContainer *fc, SbBool copyConnections=FALSE)
 Copies the contents of fc's fields into this object's fields.
 
SoNONUNICODE SbBool set (const char *fieldDataString)
 Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format.
 
SbBool set (const SbString &fieldDataString)
 Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format.
 
void get (SbString &fieldDataString)
 Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string.
 
virtual int getFields (SoFieldList &list) const
 Appends references to all of this object's fields to resultList, and returns the number of fields appended.
 
virtual int getAllFields (SoFieldList &list) const
 Returns a list of fields, including the eventIn's and eventOut's.
 
virtual SoFieldgetField (const SbName &fieldName) const
 Returns a the field of this object whose name is fieldName.
 
virtual SoFieldgetEventIn (const SbName &fieldName) const
 Returns a the eventIn with the given name.
 
virtual SoFieldgetEventOut (const SbName &fieldName) const
 Returns the eventOut with the given name.
 
SbBool getFieldName (const SoField *field, SbName &fieldName) const
 Returns the name of the given field in the fieldName argument.
 
SbBool enableNotify (SbBool flag)
 Notification at this Field Container is enabled (if flag == TRUE) or disabled (if flag == FALSE).
 
SbBool isNotifyEnabled () const
 Notification is the process of telling interested objects that this object has changed.
 
virtual void setUserData (void *data)
 Sets application data.
 
void * getUserData (void) const
 Gets user application data.
 
- Public Member Functions inherited from SoBase
virtual void touch ()
 Marks an instance as modified, simulating a change to it.
 
virtual SbName getName () const
 Returns the name of an instance.
 
virtual void setName (const SbName &name)
 Sets the name of an instance.
 
void setSynchronizable (const bool b)
 Sets this to be a ScaleViz synchronizable object.
 
bool isSynchronizable () const
 Gets the ScaleViz synchronizable state of this object.
 
- Public Member Functions inherited from SoRefCounter
void ref () const
 Adds a reference to an instance.
 
void unref () const
 Removes a reference from an instance.
 
void unrefNoDelete () const
 unrefNoDelete() should be called when it is desired to decrement the reference count, but not delete the instance if this brings the reference count to zero.
 
int getRefCount () const
 Returns current reference count.
 
void lock () const
 lock this instance.
 
void unlock () const
 unlock this instance.
 
- Public Member Functions inherited from SoTypedObject
SbBool isOfType (const SoType &type) const
 Returns TRUE if this object is of the type specified in type or is derived from that type.
 
template<typename TypedObjectClass >
SbBool isOfType () const
 Returns TRUE if this object is of the type of class TypedObjectClass or is derived from that class.
 

Static Public Member Functions

static SoType getClassTypeId ()
 Returns the type identifier for this class.
 
- Static Public Member Functions inherited from SoFieldContainer
static SoType getClassTypeId ()
 Returns the type of this class.
 
- Static Public Member Functions inherited from SoBase
static SoType getClassTypeId ()
 Returns type identifier for this class.
 
- Static Public Member Functions inherited from SoTypedObject
static SoType getClassTypeId ()
 Returns the type identifier for this class.
 

Public Attributes

SoSFInt32 maxMainMemory
 Maximum allowed main memory in MB that LDM is allowed to use for this data set.
 
SoSFInt32 maxTexMemory
 Maximum allowed texture (GPU) memory in MB for this data set.
 
SoSFEnum loadPolicy
 Tile loading policy.
 
SoSFEnum tileCachePolicy
 Specify how LDM store the tiles in memory.
 
SoSFInt32 tex3LoadRate
 Maximum number of 3D tiles to be loaded into texture memory per frame for this data set.
 
SoSFInt32 max2DTexMemory
 Maximum of 2D textures memory in MB for this data set.
 
SoSFInt32 tex2LoadRate
 Maximum number of 2D tiles to be loaded in texture memory per frame.
 
SoSFInt32 minResolutionThreshold
 Minimum loading threshold for LDM module.
 
SoSFInt32 maxResolutionThreshold
 Maximum loading threshold for the LDM module.
 
SoSFVec3i32 tileDimension
 Sets the tile size.
 
SoSFVec3i32 subTileDimension
 Size of subtiles used by some accelerated algorithms.
 
SoSFInt32 loadNotificationRate
 Tile loading notification rate.
 
SoSFFloat tileHalfLife
 Tile half-life (seconds).
 
SoSFBool fixedResolution
 Specifies if a single resolution or several resolutions are used when the rendering is stabilized.
 
SoSFInt32 resolution
 Specifies the resolution level when fixedResolution is TRUE.
 
SoSFInt32 numPrefetchThread
 Number of threads used by the tile prefetch mechanism.
 
SoSFBool tileBorders
 Defines whether or not to generate borders around tiles.
 
SoSFInt32 minTilesToLoad
 Minimum number of tiles that must be loaded in memory before rendering.
 
SoSFEnum viewpointRefinementPolicy
 Defines the viewpoint refinement policy.
 
SoSFEnum screenResolutionCullingPolicy
 Defines the screen resolution culling policy.
 

Deprecated

class SoLDMResourceManager
 Sets the tile overlap value (number of voxels) for non-LDM data.
 

Detailed Description

Large Data Management Defines resource parameters constraints of an SoDataSet object.

This class specifies the resource parameters of an instance of the class SoDataSet. See the field SoDataset::ldmResourceParameters.

You can set global resource parameters using static methods in class SoLDMGlobalResourceParameters. See the SoLDMGlobalResourceParameters class description for an overview of LDM memory management.

SEE ALSO

SoDataSet, SoVolumeData, SoLDMGlobalResourceParameters

Definition at line 72 of file SoLDMResourceParameters.h.

Member Typedef Documentation

◆ FixedResolutionCB

typedef void SoLDMResourceParameters::FixedResolutionCB(FixedResolutionReport &, void *)

When fixedResolution is TRUE and resolution is not -1, this callback is used by the application to get a report back from LDM as far as progress achieved and requests made.

Definition at line 151 of file SoLDMResourceParameters.h.

Member Enumeration Documentation

◆ LoadPolicy

Tile Load Policy.

Enumerator
NO_USER_INTERACTION 

Load tiles only when when there is no user interaction, i.e., application idles.

(Default)

ALWAYS 

Always load tiles.

NEVER 

No tile loading.

Allows suspension of the loading process.

Definition at line 156 of file SoLDMResourceParameters.h.

◆ ScreenResolutionCullingPolicy

Screen resolution culling policies.

Used by screenResolutionCullingPolicy.

Enumerator
SCREEN_RESOLUTION_CULLING_OFF 

Screen resolution culling is disabled.

SCREEN_RESOLUTION_CULLING_ON 

Screen resolution culling is enabled.

Only tiles for which the projection of a voxel is greater than or equal to 1 pixel on screen will be loaded. This avoids unnecessary loading of high resolution data for large volumes. However if you "zoom out" from a volume, it does not force lower resolution tiles to be used (high resolution tiles already in memory will still be used). If necessary use the fixedResolution field to force use of lower resolution tiles.

SCREEN_RESOLUTION_CULLING_INHERITED_FROM_GLOBAL 

Screen resolution culling will be enabled or not according to the flag returned by SoLDMGlobalResourceParameters::getScreenResolutionCulling()

Definition at line 610 of file SoLDMResourceParameters.h.

◆ TileCachePolicy

Tile cache management policy.

This enum is used by the field tileCachePolicy.

It specifies when and how the tiles are stored in CPU memory.

For non-compressed tiled data, the cache policy has no effect. The tiles are stored as-is in the first level CPU cache during data loading.

See SoLDMGlobalResourceParameters for detail on the first and second level CPU tile cache.

Enumerator
NONE 

For non-tiled data such as DICOM or SEGY or an in-memory volume, tiles are created when needed (to send data to the GPU) and stored in the second level CPU tile cache.

For tiled data that is compressed (e.g. an LDM file created with compression), the compressed tiles are stored in the first level CPU tile cache "as is" to reduce the memory footprint (the first level tile cache contains only compressed data). When a tile must be sent to the GPU, it is uncompressed and the resulting uncompressed tile is stored in the second level CPU tile cache.

This mode saves memory but can reduce interactivity.

LOWRES_ONLY 

For non-tiled data such as DICOM or SEGY or in-memory volume, tiles are created when needed (to send data to the GPU): full resolution tiles are stored in the second level CPU tile cache and all the other created tiles (lower resolution) are stored in the first level CPU tile cache.

For tiled data that is compressed (e.g. an LDM file created with compression), the full resolution tiles are stored compressed in the first level CPU tile cache (to reduce the CPU memory footprint) and the other created tiles are stored uncompressed in the first level CPU tile cache. When compressed tiles must be sent to the GPU, they are uncompressed and stored in the second level CPU tile cache.

This setting uses more memory but saves time when low resolution tiles need to be sent to the GPU.

ALL 

For non-tiled data such as DICOM or SEGY or in-memory volume, tiles are created when needed (to send data to the GPU) and both low resolution and full resolution tiles are stored in the first level CPU tile cache.

This mode is recommended for non-tiled volumes loaded from disk when the volume will fit in memory (generally true for medical volumes).
NOTE: For an in-memory volume, this setting will duplicate the data in memory. For an in-memory volume it is better to use the LOWRES_ONLY or NONE setting.

For tiled data that is compressed (e.g. an LDM file created with compression), both full resolution and low resolution tiles are uncompressed when loaded and stored uncompressed in the first level CPU tile cache.

This setting uses the most memory, but saves time when tiles need to be sent to the GPU. It does not use the second level CPU tile cache.

Definition at line 178 of file SoLDMResourceParameters.h.

◆ ViewpointRefinementPolicy

Viewpoint refinement policies.

Used by viewpointRefinementPolicy.

Enumerator
VIEWPOINT_REFINEMENT_OFF 

Viewpoint will not affect tile loading priorities.

VIEWPOINT_REFINEMENT_ON 

The refinement of tiles will depend on the viewpoint.

In other words, the closest tiles to the camera have the highest priority and will be loaded first. This can be useful for large volumes that cannot be completely loaded in memory.

VIEWPOINT_REFINEMENT_INHERITED_FROM_GLOBAL 

The refinement of tiles will depend on the viewpoint or not according to the flag returned by SoLDMGlobalResourceParameters::getViewpointRefinement().

Definition at line 575 of file SoLDMResourceParameters.h.

Constructor & Destructor Documentation

◆ SoLDMResourceParameters()

SoLDMResourceParameters::SoLDMResourceParameters ( )

Constructor.

◆ ~SoLDMResourceParameters()

virtual SoLDMResourceParameters::~SoLDMResourceParameters ( )
virtual

Destructor.

Member Function Documentation

◆ enableFixedResolutionMode()

void SoLDMResourceParameters::enableFixedResolutionMode ( int  resolution,
FixedResolutionCB func 
)

This method is used to specify a callback that gives feedback while the rendering tries to reach an explicit required fixed resolution.

This method sets the field fixedResolution to TRUE and the field resolution to the first argument.

Use this method only if a callback is specified and if an explicit resolution is required (0 or any positive value). Otherwise use the fields fixedResolution and resolution.

Parameters
resolutionthis value is assigned to the field resolution
functhis callback is ignored if the resolution argument is -1. See resolution and fixedResolution for detail.

◆ getClassTypeId()

static SoType SoLDMResourceParameters::getClassTypeId ( )
static

Returns the type identifier for this class.


◆ getDataSize()

int SoLDMResourceParameters::getDataSize ( )

Gets the size of a voxel in bytes.

◆ getGeometryPriority()

SbBool SoLDMResourceParameters::getGeometryPriority ( SoType  geometryType,
float &  priority 
)

Returns the priority of the specified geometry type.

The function will return FALSE if the geometry is of unknown type. See setGeometryPriority().

◆ getMovingTimeOut()

float SoLDMResourceParameters::getMovingTimeOut ( )

Returns the amount of time during which LDM continues not loading data once a user stops interaction.

Considered only in NO_USER_INTERACTION mode. See setMovingTimeOut().

◆ getTypeId()

virtual SoType SoLDMResourceParameters::getTypeId ( ) const
virtual

Returns the type identifier for this specific instance.

Implements SoTypedObject.

◆ setGeometryPriority()

void SoLDMResourceParameters::setGeometryPriority ( SoType  geometryType,
float  priority 
)

Sets the importance of one type of geometry relative to others.

The geometry type should be one of the VolumeViz geometry classes. For example, SoOrthoSlice::getClassTypeId().

The priority passed must be between 0 and 1, 0 being lowest priority and 1 the highest. LDM will refine tiles first where geometries are the most important. For example, if an SoVolumeRender node has a higher priority than slices, then the tiles required for this SoVolumeRender node will be refined first.

Default is 0.5 for a volume, 0.9 for other geometry.

◆ setMovingTimeOut()

void SoLDMResourceParameters::setMovingTimeOut ( float  timeout)

Sets the amount of time (in seconds) during which LDM continues not loading once a user stops interaction.

In other words, LDM will start loading again timeOut seconds after the user stops interaction. Considered only in NO_USER_INTERACTION mode. Default is 0.3 seconds.

Friends And Related Symbol Documentation

◆ SoLDMResourceManager

friend class SoLDMResourceManager
friend

Sets the tile overlap value (number of voxels) for non-LDM data.

0 is the only supported value since Open Inventor 9.0.

Definition at line 881 of file SoLDMResourceParameters.h.

Member Data Documentation

◆ fixedResolution

SoSFBool SoLDMResourceParameters::fixedResolution

Specifies if a single resolution or several resolutions are used when the rendering is stabilized.

When TRUE, this single resolution level is specified by the field resolution.

Default is FALSE, which specifies that the field resolution is ignored.

Definition at line 485 of file SoLDMResourceParameters.h.

◆ loadNotificationRate

SoSFInt32 SoLDMResourceParameters::loadNotificationRate

Tile loading notification rate.

Default is 50 tiles. When rate tiles have been loaded in main memory, a redraw will be scheduled. Which means, for the default rate, that if each voxel is one byte and the tile size is 64x64x64, a redraw will be scheduled whenever 13 MB of data has been loaded.

Default value is -1, meaning LDM is in charge of the automatic sharing of a given resource. Automatic sharing means LDM will compute, by itself, the amount of associated resource it allocates to each dataset. The automatic allocation takes into account all nodes in scenegraph.

If value is not -1 (default) LDM will not consider this node in automatic allocation, and allocated Notification rate for this node will be the exact value set in the field. In this case, the fixed value of notification rate is then removed from Global value. All other dataset will share (SoLDMGlobalResourceParameters::getLoadNotificationRate - ( Sum of memory of all datasets with * loadNotificationRate != -1 )) / ( number of datasets with loadNotificationRate == -1 )

Definition at line 464 of file SoLDMResourceParameters.h.

◆ loadPolicy

SoSFEnum SoLDMResourceParameters::loadPolicy

Tile loading policy.

Use enum LoadPolicy. Default is NO_USER_INTERACTION. NO_USER_INTERACTION means the asynchronous loading threads will only load tiles when the user is not interacting with the scene (i.e. the application is idle).

The loading occurs as long as there is something to load if ALWAYS is passed. No loading occurs if NEVER is passed, however at least the resolution 0 is loaded.

Definition at line 283 of file SoLDMResourceParameters.h.

◆ max2DTexMemory

SoSFInt32 SoLDMResourceParameters::max2DTexMemory

Maximum of 2D textures memory in MB for this data set.

This field is only considered for SoSlice nodes.

Each tile needed to render a slice (SoOrthoSlice, SoVolumeSkin, etc) must be stored in GPU memory as a 2D texture. This method limits the amount of GPU memory that can be used by (for example) SoOrthoSlice and SoVolumeSkin nodes. This can be useful when combining slices and volume rendering because the 3D textures used by volume rendering require much more GPU memory.

Default value is -1, meaning LDM is in charge of the automatic sharing of a given resource. Automatic sharing means LDM will compute, by itself, the amount of associated resource it allocates to each dataset. The automatic allocation takes into account all nodes in scenegraph.

If value is not -1 (default) LDM will not consider this node in memory allocation, and allocated CPU memory for this node will be the exact value set in the field. In this case, the amount of memory is removed from Global value. All other dataset will share (SoLDMGlobalResourceParameters::setMax2DTexMemory - ( Sum of memory of all datasets with max2DTexMemory != -1 )) / ( number of datasets with max2DTexMemory == -1 )

NOTE: field available since Open Inventor 9.6.0

Definition at line 342 of file SoLDMResourceParameters.h.

◆ maxMainMemory

SoSFInt32 SoLDMResourceParameters::maxMainMemory

Maximum allowed main memory in MB that LDM is allowed to use for this data set.

Default value is -1, meaning LDM is in charge of the automatic sharing of a given resource. Automatic sharing means LDM will compute, by itself, the amount of associated resource it allocates to each dataset. The automatic allocation take in account all nodes in scenegraph.

If value is not -1 (default) LDM will not consider this node in memory allocation, and allocated CPU memory for this node will be the exact value set in the field. In this case, the amount of memory is removed from Global value. All other dataset will share (SoLDMGlobalResourceParameters::getMaxMainMemory - ( Sum of memory of all datasets with maxMainMemory != -1 )) / ( number of datasets with maxMainMemory == -1 )

Definition at line 255 of file SoLDMResourceParameters.h.

◆ maxResolutionThreshold

SoSFInt32 SoLDMResourceParameters::maxResolutionThreshold

Maximum loading threshold for the LDM module.

LDM will never load tiles below this resolution threshold. Threshold is the power of 2 of the desired subsample level. For instance, passing 1 means never load tiles of full resolution. Default is 0, full resolution, i.e., load everything.

Definition at line 392 of file SoLDMResourceParameters.h.

◆ maxTexMemory

SoSFInt32 SoLDMResourceParameters::maxTexMemory

Maximum allowed texture (GPU) memory in MB for this data set.

This field is only considered for SoVolumeRender nodes.

Default value is -1, meaning LDM is in charge of the automatic sharing of a given resource. Automatic sharing means LDM will compute, by itself, the amount of associated resource it allocates to each dataset. The automatic allocation take in account all nodes in scenegraph.

If value is not -1 (default) LDM will not consider this node in memory allocation, and allocated CPU memory for this node will be the exact value set in the field. In this case, the amount of memory is removed from Global value. All other dataset will share (SoLDMGlobalResourceParameters::getMaxTexMemory - ( Sum of memory of all datasets with maxTexMemory != -1 )) / ( number of datasets with maxTexMemory == -1 )

Definition at line 271 of file SoLDMResourceParameters.h.

◆ minResolutionThreshold

SoSFInt32 SoLDMResourceParameters::minResolutionThreshold

Minimum loading threshold for LDM module.

Specifies to LDM to never unload tiles below this resolution threshold. Threshold is the power of 2 of the desired subsample level. For instance, passing 2 means never unload tiles of resolution 1/4. Default is -1, meaning the minimum subsample level.

If used with an ROI enabled, only tiles below the min resolution threshold and within the ROI subvolume will never be unloaded. All tiles outside the ROI subvolume will be unloaded. The ROI box allows you to specify where it is the most important to increase the resolution within the subvolume. By default, (subvolume ROI flag enabled) this would be within the box. If for example using the exclusion box mode, then lower resolution tiles will be within the box and higher resolution ones outside the box and within the subvolume.

Definition at line 383 of file SoLDMResourceParameters.h.

◆ minTilesToLoad

SoSFInt32 SoLDMResourceParameters::minTilesToLoad

Minimum number of tiles that must be loaded in memory before rendering.

For example, if this number is 50 and 40 tiles are currently loaded, then at least 10 new tiles must be loaded before the next rendering.

This can be used as a "minimum quality" parameter, where the quality is defined by the number of loaded tiles in memory. No rendering will be done until this minimum number of tiles is loaded in memory.

The tiles are selected according to their weight, which depends in particular on their hierarchy level in the octree topology.

If this number of tiles requires a memory amount that exceeds maxMainMemory, then it will be internally clamped to the maximum value that respects maxMainMemory.

The default value is 1 (root tile only).

NOTE: field available since Open Inventor 10.9.0

Definition at line 568 of file SoLDMResourceParameters.h.

◆ numPrefetchThread

SoSFInt32 SoLDMResourceParameters::numPrefetchThread

Number of threads used by the tile prefetch mechanism.

Tile prefetch is activated when LDM_USE_PREFETCH_OPTIM is true and tileCachePolicy is NONE. Default value is -1, meaning the maximum number of threads will be used.

Definition at line 515 of file SoLDMResourceParameters.h.

◆ resolution

SoSFInt32 SoLDMResourceParameters::resolution

Specifies the resolution level when fixedResolution is TRUE.

  • When the value of this field is greater or equal to 0, it specifies the volume resolution used for rendering: 0 for full resolution and higher for sub-resolutions. The resolution value may be incompatible with the hardware configuration (e.g. not enough memory) or with the LDM settings (i.e. see maxMainMemory, maxTexMemory and SoLDMGlobalResourceParameters for more details). In this case, this field and fixedResolution are ignored.
    Note that there is no rendering until the given resolution is reached.
  • When this field value is set to -1, the fixed resolution is adaptive, and is computed to be the highest one according to:
    • the memory resources
    • the position of the camera
    • the region of interest (see SoROI for more details)
    Note that several resolutions are displayed during the loading and before reaching this adaptive fixed resolution.

Default is 1, i.e, 1 voxel out of 2 of the full resolution.

Definition at line 508 of file SoLDMResourceParameters.h.

◆ screenResolutionCullingPolicy

SoSFEnum SoLDMResourceParameters::screenResolutionCullingPolicy

Defines the screen resolution culling policy.

Use enum ScreenResolutionCullingPolicy. The default value is SCREEN_RESOLUTION_CULLING_INHERITED_FROM_GLOBAL.

NOTE: field available since Open Inventor 10.10.0

Definition at line 641 of file SoLDMResourceParameters.h.

◆ subTileDimension

SoSFVec3i32 SoLDMResourceParameters::subTileDimension

Size of subtiles used by some accelerated algorithms.

Default is (32, 32, 32). This field is only considered when field SoVolumeRender::subdivideTile is set to TRUE. Notes:

  • The subTileDimension values must be a power-of-2, e.g. 32, 64, 128, etc.
  • It takes time to build subtiles, in general we recommend setting subTileDimension to tileDimension/4.
  • The default subTileDimension (32) is appropriate for the default tileDimension (128), but should be set to a larger value if the tileDimension is a larger value.
    Using too small a value will reduce performance.

Definition at line 445 of file SoLDMResourceParameters.h.

◆ tex2LoadRate

SoSFInt32 SoLDMResourceParameters::tex2LoadRate

Maximum number of 2D tiles to be loaded in texture memory per frame.

This affects rendering nodes that use 2D textures, for example SoOrthoSlice and SoVolumeSkin. Default is SoLDMGlobalResourceParameters::getTex2LoadRate(). This field is only considered for SoSlice nodes.

Each tile needed to render a slice (SoOrthoSlice, SoVolumeSkin, etc) must be loaded into GPU memory as a 2D texture. Increasing the loadRate value reduces the number of frames required to reach maximum resolution. But the render traversal has to wait for the data transfer to finish, so each frame may take longer to render, increasing the total time to reach maximum resolution.

Default value is -1, meaning LDM is in charge of the automatic sharing of a given resource. Automatic sharing means LDM will compute, by itself, the amount of associated resource it allocates to each dataset. The automatic allocation takes into account all nodes in scenegraph.

If value is not -1 (default) LDM will not consider this node in automatic allocation, and allocated 2D texture for this node will be the exact value set in the field. In this case, the amount of LoadRate is removed from Global value. All other dataset will share (SoLDMGlobalResourceParameters::getTex2LoadRate - ( Sum of memory of all datasets with tex2LoadRate != -1 )) / ( number of datasets with tex2LoadRate == -1 )

Definition at line 366 of file SoLDMResourceParameters.h.

◆ tex3LoadRate

SoSFInt32 SoLDMResourceParameters::tex3LoadRate

Maximum number of 3D tiles to be loaded into texture memory per frame for this data set.

You can set this number for all data sets by calling SoLDMGlobalResourceParameters::setTex3LoadRate(). This field is only considered for SoVolumeRender nodes.

Each tile needed for volume rendering (SoVolumeRender) and volume geometry must be transfered to GPU memory as a 3D texture. So, for example, transfering 1000 tiles at the loadRate 10 requires 100 frames. (How many seconds this takes depends on the frames per second possible, which in turn depends on many factors including the complexity of the scene graph.) Increasing the loadRate value reduces the number of frames required to reach maximum resolution. But the render traversal has to wait for the data transfer to finish, so each frame may take longer to render, increasing the total time to reach maximum resolution.

Default value is -1, meaning LDM is in charge of the automatic sharing of a given resource. Automatic sharing means LDM will compute, by itself, the amount of associated resource it allocates to each dataset. The automatic allocation takes into account all nodes in scenegraph.

If value is not -1 (default) LDM will not consider this node in automatic allocation, and allocated 3D texture LoadRate for this node will be the exact value set in the field. In this case, the amount of memory is removed from Global value. All other dataset will share (SoLDMGlobalResourceParameters::getTex3LoadRate - ( Sum of memory of all datasets with tex3LoadRate != -1 )) / ( number of datasets with tex3LoadRate == -1 )

Definition at line 318 of file SoLDMResourceParameters.h.

◆ tileBorders

SoSFBool SoLDMResourceParameters::tileBorders

Defines whether or not to generate borders around tiles.

Borders are used to accelerate the interpolation of voxel values at the boundary of adjacent tiles.

  • If set to TRUE:
    • Borders are generated around tiles. When interpolation between adjacent tiles is enabled (see SoVolumeShader::interpolateOnMove), a rendering performance gain can be observed (compared to when tileBorders is FALSE), at the cost of a precomputation that is done each time a tile is sent to the GPU. Using borders will also slightly increase the size of the tile textures on the GPU.
  • If set to FALSE:
    • No borders are generated around tiles. No precomputation is required before sending a tile to the GPU. Interpolation between adjacent tiles is computed "on the fly" (slower compared to when tileBorders is TRUE, but the cost might be negligible on modern GPUs).

Limitations:

  • Volume projection and rectilinear coordinates are not supported when this value is set to FALSE (artifacts appear at the intersection between tiles). Set to TRUE instead in those cases.

The default value is TRUE.

NOTE: field available since Open Inventor 10.9.0

Definition at line 545 of file SoLDMResourceParameters.h.

◆ tileCachePolicy

SoSFEnum SoLDMResourceParameters::tileCachePolicy

Specify how LDM store the tiles in memory.

Please refer to TileCachePolicy for the different options. Default value is ALL.

NOTE: field available since Open Inventor 10.0

Definition at line 292 of file SoLDMResourceParameters.h.

◆ tileDimension

SoSFVec3i32 SoLDMResourceParameters::tileDimension

Sets the tile size.

VolumeViz always manages volume data in CPU memory as a hierarchy of tiles and data is transferred to GPU memory as tiles.

When using VolumeViz with in-memory data or a file format other than LDM, the data is converted to tiles "on the fly". In this case, the default tile size is (128, 128, 128).

When loading data using an LDM volume reader, e.g. loading an LDM format file or using a custom volume reader that implements the readTile() method, the tile size is initialized with the value returned by the reader's getTileSize() method. The application can specify a different tile size, in which case the tiles are automatically generated using the data from the reader's tiles, with the following limitation: If the reader's readTile() method returns uniform or compressed buffers (SoCpuBufferUniform or SoCpuBufferCompressed), they are converted to regular buffers and the memory optimization is lost.

Changing the default tile size may affects the rendering or data loading performances. Basically, a larger tile size is usually better for rendering performance or to quickly obtain the highest resolution thanks to more optimal GPU utilization. On the other hand, it may penalize the data fetching on the CPU side from slow hard disk drives or over the network. Experimentation is generally required to find a good trade-off between rendering efficiency and data fetching time.

Notes:

Definition at line 432 of file SoLDMResourceParameters.h.

◆ tileHalfLife

SoSFFloat SoLDMResourceParameters::tileHalfLife

Tile half-life (seconds).

Default is 2 seconds. When calling SoDataSet::getLdmDataAccess::getData(), once a tile is unlocked by the application (call to SoDataSet::getLdmDataAccess::releaseData), its weight will decrease until the tile is weighted again by LDM. This function allows you to set how long it takes for the tile's weight to be divided by 2 (initial weight is 1). The tile weight will be set to 0 when the weight becomes less than 0.05.

Definition at line 475 of file SoLDMResourceParameters.h.

◆ viewpointRefinementPolicy

SoSFEnum SoLDMResourceParameters::viewpointRefinementPolicy

Defines the viewpoint refinement policy.

Use enum ViewpointRefinementPolicy. The default value is VIEWPOINT_REFINEMENT_INHERITED_FROM_GLOBAL.

NOTE: field available since Open Inventor 10.9.0

Definition at line 603 of file SoLDMResourceParameters.h.


The documentation for this class was generated from the following file: