SoPostEffectTransparentGeometry

InventorModule
author MeVis Medical Solutions AG
package MeVisLab/Standard
dll SoRenderers
definition SoRenderers.def
keywords OIT, order, independent, blending

Purpose

The SoPostEffectTransparentGeometry offers to correctly render transparent meshes/geometry for the SoPostEffectRenderer.

This module is a modern replacement for the SoDepthPeelRenderer when using the SoPostEffectRenderer.

It provides the following modes:

Depth Peeling

The geometry is rendered in multiple passes, starting from the front. The number of layers is given using the Layers field. If Use Occlusion Query is enabled, the layers specify the maximum amount of peeled layers. If it is disabled, all layers are rendered.

For implementation details, see “Interactive Order-Independent Transparency”, Cass Everitt NVIDIA

Dual Depth Peeling

The geometry is rendered in multiple passes, starting from the front and back. Two layers are peeled at a time, requiring only (N/2+1) passes instead of N passes. The number of layers is given using the Layers field. If Use Occlusion Query is enabled, the layers specify the maximum amount of peeled layers. If it is disabled, all layers are rendered.

For implementation details, see “Order Independent Transparency with Dual Depth Peeling”, L. Bavoil

Blended Average

This mode offers a single pass algorithm that provides order independent transparency. Although the result is not visually correct, it still provides good image quality and it is very fast because it only requires a single pass.

When used together with particles or overlapping structures, it even provides better image quality and it has no ‘popping’ artifacts, because no depth sorting/flipping happens.

For implementation detail, have a look at: “Weighted Blended Order-Independent Transparency”, Morgan McGuire, Louis Bavoil. Currently the mode does not apply a depth weight, as provided in the original paper, because Open Inventor dynamically changes the near/far distance and the weights depend on those. A future version of the module will add the depth weight.

Usage

Place this module in front of a SoPostEffectRenderer. Anti-aliasing should be placed behind this module. The SoPostEffectMainGeometry should be used before this module to render any opaque geometry. Effects like SoPostEffectGlow and SoPostEffectEdges should be placed before this module, since they will not work on transparent geometry.

Input Fields

child

name: child, type: SoNode

Output Fields

self

name: self, type: SoNode

Parameter Fields

Visible Fields

Enabled

name: enabled, type: Bool, default: TRUE

Enables the rendering.

Layers

name: layers, type: Integer, default: 8, minimum: 1, maximum: 64

Sets the maximum number of layers used with depth peeling.

Use Input Depth Buffer

name: useInputDepthBuffer, type: Bool, default: TRUE

If enabled, the rendered geometry is clipped against the existing depth buffer of opaque geometry, which was rendered by e.g. SoPostEffectMainGeometry.

Write To Depth Buffer

name: writeToDepthBuffer, type: Bool, default: FALSE

If enabled, the front-most depth value of the transparent geometry is written to the depth buffer.

Use Occlusion Query

name: useOcclusionQuery, type: Bool, default: TRUE

If enabled, an occlusion query is used to check after each layer peeling if all transparent layers have been peeled. If that is the case, the depth peeling stops without peeling all specified layers.

Color Buffer Name

name: colorBufferName, type: String, default: colorBuffer

Depth Buffer Name

name: depthBufferName, type: String, default: depthBuffer

Rendered Layers

name: renderedLayers, type: Integer, persistent: no

Outputs the number of rendered layers, mainly to detect how many layers a scene contains. This should be used together with Use Occlusion Query enabled, otherwise it will just mirror the Layers field.

Mode

name: mode, type: Enum, default: DualDepthPeeling

Choose the order independend transparency mode.

Values:

Title Name Description
Dual Depth Peeling DualDepthPeeling Use dual depth peeling (one front and one back layer on each pass).
Depth Peeling DepthPeeling Use depth peeling (one front layer on each pass).
Blended Average BlendedAverage Use blended average in a single geometry pass.
Linked List LinkedList  
KBuffer KBuffer  

Hidden Fields

renderCaching

name: renderCaching, type: Enum, default: AUTO

Values:

Title Name
On ON
Off OFF
Auto AUTO

boundingBoxCaching

name: boundingBoxCaching, type: Enum, default: AUTO

Values:

Title Name
On ON
Off OFF
Auto AUTO

renderCulling

name: renderCulling, type: Enum, default: AUTO

Values:

Title Name
On ON
Off OFF
Auto AUTO

pickCulling

name: pickCulling, type: Enum, default: AUTO

Values:

Title Name
On ON
Off OFF
Auto AUTO

useTextureBuffer

name: useTextureBuffer, type: Bool, default: FALSE