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.
Parameter Fields¶
Field Index¶
boundingBoxCaching : Enum |
renderCulling : Enum |
Color Buffer Name : String |
Rendered Layers : Integer |
Depth Buffer Name : String |
Use Input Depth Buffer : Bool |
Enabled : Bool |
Use Occlusion Query : Bool |
Layers : Integer |
useTextureBuffer : Bool |
Mode : Enum |
Write To Depth Buffer : Bool |
pickCulling : Enum |
|
renderCaching : Enum |
Visible Fields¶
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.
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 theLayers
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 |