SoVolumeRenderingQualitydeferredLighting Property |
Enable screen space lighting (computed on the GPU).
Namespace: OIV.VolumeViz.Nodes
Default is true. Deferred lighting is computed based on the final image depth buffer instead using the data gradients. It is much faster than gradient based lighting (see the OIV.VolumeViz.Nodes.SoVolumeRenderingQuality.m_lighting field) and supports multiple light sources (up to 8). Because it is not based on data gradients, it does not have problems with small/random gradients and it gives a much better result when using clipping nodes like OIV.VolumeViz.Nodes.SoVolumeClippingGroup or OIV.VolumeViz.Nodes.SoUniformGridClipping. Light sources are defined by Open Inventor OIV.Inventor.Nodes.SoDirectionalLight nodes.
Notes:
Since Open Inventor 9.3, deferred lighting supports up to 8 light sources.
Both deferred lighting and gradient lighting may be enabled at the same time, but the intent is that the application should use one or the other.
Gradient related fields, e.g. surfaceScalarExponent, have no effect on deferred lighting.
In any case, do not use the OIV.VolumeViz.Nodes.SoVolumeRender.m_lighting field.
LIMITATIONS
Only directional lights (OIV.Inventor.Nodes.SoDirectionalLight) are supported.
If you use deferredLighting, you should set the OIV.VolumeViz.Nodes.SoVolumeRender.m_samplingAlignment field to BOUNDARY_ALIGNED or SMOOTH_BOUNDARY_ALIGNED to reduce "slicing" artifacts.
The light color is taken into account, but not the light intensity field. You can get the same effect as reduced intensity by reducing the light color values.
Deferred lighting works best when
The volume data can be considered to contain "surfaces", for example bones (etc) in medical data or metal parts in NDT data, and
The transfer function makes the surface material relatively opaque and the surrounding material relatively transparent.
NOTE: field available since Open Inventor 9.2