SoLDMResourceParameterstileDimension Property |
Sets the tile size for non-LDM data.
Namespace: OIV.LDM.Nodes
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, it is possible to use this field to specify the tile size and this may affect performance.
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 the value returned by the reader's getTileSize() method and cannot be modified by the application, so this field is ignored.
The default tile size is (128, 128, 128). Specifying a larger tile size than the default can improve performance and reduce the time required to fully refine the image. For example, a larger tile size reduces the total number of tiles that must be managed. However there are some trade-offs and limitations. A larger tile size means that the volume reader must load more data from the disk for each tile requested. That makes a larger tile size potentially more efficient for volume rendering, but means it will take longer to load the data to render a single slice because most of the data in each tile is not relevant for rendering that slice (but see also OIV.VolumeViz.Nodes.SoSlice.largeSliceSupport). In general we recommend setting the tile size to 128 or 256. For relatively small volumes, especially in-memory volumes 512^3 or less, it can be effective to set the tile size equal to the volume size. This allows the entire volume to be handled as a single tile.
Notes:
Tile dimension values must be a power-of-2, e.g. 64, 128, 256, etc.
Maximum tile dimension is 1024.
tileDimension[1] should be equal to tileDimension[0]. If this is not the case a warning message will be generated and LDM will use tileDimension[0] for both the I and J tile dimensions. tileDimension[2] may be smaller than the other two values, for example if the volume's K dimension is smaller than the I and J tile dimension. tileDimension[2] will be exactly 1 for a 2D image.
tileDimension must be set after setting the volume filename or volume reader on an OIV.VolumeViz.Nodes.SoVolumeData node.
Tiles are stored as textures on the GPU. Therefore a tile must not exceed the maximum size allowed by the GPU. This value depends on the GPU, but currently tile dimension should not be larger than 2048 or 4096.
If the tile dimension is set larger than the default value and the OIV.VolumeViz.Nodes.SoVolumeRender.subdivideTile field is set to true, then the subtileDimension should also be set to a larger value to avoid reducing performance. In general we recommend setting OIV.LDM.Nodes.SoLDMResourceParameters.subTileDimension to OIV.LDM.Nodes.SoLDMResourceParameters.tileDimension/4