VSG Logo   OpenInventor Forum

Go Back   Open Inventor Forum > Open Inventor Main Forum

Open Inventor Main Forum General discussions about Open Inventor from VSG

Reply
 
Thread Tools Display Modes
  #1  
Old 05-03-2012, 08:10 PM
jishengxie jishengxie is offline
Junior Member
 
Join Date: Apr 2012
Location: Houston, Texas, USA
Posts: 2
Default Volume rendering question

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?

Is there any big benefit to use 32-bit rendering, like greatly improved image quality? What's the cost(performance, storage etc.)?

I tried to get the answer from the documents, but could not find such information.

Thanks.
Reply With Quote
  #2  
Old 05-04-2012, 05:39 PM
mikeheck's Avatar
mikeheck mikeheck is offline
Moderator
 
Join Date: Sep 2008
Location: Carlsbad, CA, USA
Posts: 809
Default

Quote:
Originally Posted by jishengxie View Post
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.
Reply With Quote
  #3  
Old 05-04-2012, 08:08 PM
jishengxie jishengxie is offline
Junior Member
 
Join Date: Apr 2012
Location: Houston, Texas, USA
Posts: 2
Default

Thanks! So the bottleneck is the transfer function which limits to 12bit only. 4096 colors might be good enough for most people.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 05:38 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2013, vBulletin Solutions, Inc.
Copyright VSG, SAS, 2008.