Quote:
Originally Posted by jishengxie
Open Inventor can render 8-bit and 32-bit volume. So user can pass the data as 8-bit or 32-bit data. I am wondering for 32-bit rendering, does Open Inventor implement true 32-bit rendering or just scale 32-bit data to 8-bit then do the 8-bit rendering?
|
By default, VolumeViz scales data values of all types down to 8-bit unsigned integer values on the GPU. For rendering purposes this is often sufficient and maximizes the amount of data that can be loaded in the available memory on the GPU. If necessary you can tell VolumeViz to use 12-bit values by setting the
texturePrecision field on the SoVolumeData node. That's the upper limit at the moment. Note that the 12-bit option actually uses 16-bit textures to store the data on the GPU, so the memory requirement is double.
Quote:
|
Is there any big benefit to use 32-bit rendering, like greatly improved image quality? What's the cost(performance, storage etc.)?
|
Conceptually the issue to consider is that (depending on your data) some range of data values is "aliased" onto each GPU value. In other words, all the data values in the range 32 to 47 might end up as 32 in the GPU data. Purely for rendering, the main advantage of using a larger data type on the GPU is that it allows a larger, more precise, color map. You could consider this an improvement in image quality, but it's more about (possibly) being able to perceive small differences in data values that would be lost with a smaller color map. Whether this is important or not depends very much on the range of values in the data, actual accuracy of the data acquisition, etc. In summary, the default data storage allows 256 different values and 12-bit storage allows 4096 values.
There is one special case for rendering. If you use the isosurface rendering feature you may (depending on your data) get better / more accurate surfaces with 12-bit data storage. This is mainly a concern for medical and NDT data.
RGBA data is also a special case, but quite different. If you give VolumeViz a volume containing 32-bit RGBA values, it will store those 32-bit values on the GPU. Of course in this case there is no color map.