Enum Class SoGLRenderAction.TransparencyTypes
- All Implemented Interfaces:
IntegerValuedEnum
,Serializable
,Comparable<SoGLRenderAction.TransparencyTypes>
,Constable
- Enclosing class:
SoGLRenderAction
setTransparencyType()
method.
Note: The transparency values deprecated since OpenInventor 9 have been removed. You can find below a correspondence table:
OIV 10 | OIV 9 |
NO_SORT | NO_SORT NO_TRANSPARENCY SCREEN_DOOR ADD BLEND |
OPAQUE_FIRST | OPAQUE_FIRST DELAYED_ADD DELAYED_BLEND |
SORTED_OBJECT | SORTED_OBJECT SORTED_OBJECT_ADD SORTED_OBJECT_BLEND |
SORTED_PIXEL | SORTED_PIXEL SORTED_LAYERS_BLEND SORTED_PIXELS_BLEND DELAYED_SORTED_LAYERS_BLEND DELAYED_SORTED_PIXELS_BLEND SORTED_TRIANGLES_ADD SORTED_TRIANGLES_BLEND SORTED_OBJECT_TRIANGLES_ADD SORTED_OBJECT_TRIANGLES_BLEND |
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>>
-
Enum Constant Summary
Enum ConstantsEnum ConstantDescriptionThe simplest transparency mode.Deprecated.As of Open Inventor 10.0.0.0.Same as NO_SORT, but the rendering of opaque objects is performed before the rendering of semi-transparent objects.Same as OPAQUE_FIRST, but sorts semi-transparent objects by distances of bounding boxes from camera.Same as OPAQUE_FIRST, but uses a fragment-level depth sorting technique during the rendering of semi-transparent objects. -
Method Summary
Modifier and TypeMethodDescriptionint
getValue()
Returns the integer value of the enum constant.valueOf
(int val) Returns the enum constant of this type with the specified integer valueReturns the enum constant of this class with the specified name.static SoGLRenderAction.TransparencyTypes[]
values()
Returns an array containing the constants of this enum class, in the order they are declared.Methods inherited from class java.lang.Enum
compareTo, describeConstable, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
-
Enum Constant Details
-
NO_TRANSPARENCY
@Deprecated(since="10.0.0.0") public static final SoGLRenderAction.TransparencyTypes NO_TRANSPARENCYDeprecated.As of Open Inventor 10.0.0.0. No longer supported. Will automatically switch to NO_SORT.Warning Deprecated since Open Inventor 10000. No longer supported. Will automatically switch to NO_SORT.
-
NO_SORT
The simplest transparency mode. Shapes are rendered in the same order as they are traversed.
Alpha blending is used to combine the shape color with the color in the framebuffer.
Depth buffer test and write are activated during rendering.Limitation: A shape will not be displayed if it is behind a semi-transparent shape that has been rendered before it.
-
OPAQUE_FIRST
Same as NO_SORT, but the rendering of opaque objects is performed before the rendering of semi-transparent objects.
Notes & Limitations:
- When using this algorithm, the depth buffer is not updated (depth buffer writes are disabled) during the rendering of semi-transparent objects. As a result, complex semi-transparent shapes may not be rendered correctly.
- Because opaque objects are forced to be rendered first, the objects rendering order does not necessarily correspond to their actual ordering in the scene graph.
- Because semi-transparent objects are not sorted and alpha blending is not a commutative operation, the blending of several semi-transparent objects will not be correct if their order in the scene graph does not match their back-to-front ordering relative to the camera.
-
SORTED_OBJECT
Same as OPAQUE_FIRST, but sorts semi-transparent objects by distances of bounding boxes from camera. Limitation : If the bounding box of a shape is ignored by setting its boundingBoxIgnoring field to true, the rendering won't be correct. -
SORTED_PIXEL
Same as OPAQUE_FIRST, but uses a fragment-level depth sorting technique during the rendering of semi-transparent objects.
This mode generally gives the best results for complex semi-transparent objects.Since Open Inventor 9.4, if the hardware supports the necessary OpenGL features, this transparency mode is implemented using a single-pass, order-independent fragment sorting (K-buffer or A-buffer) algorithm. The required OpenGL hardware features are: shader_image_load_store, shader_atomic_counters and shading_language_420pack. These features are standard in core OpenGL 4.2. Use
SoGLExtension
, if necessary, to check if they are supported.If the hardware does not support single-pass transparency, then a multi-pass "depth peeling" algorithm is used. The required OpenGL hardware features are: Multi-Texture, Texture Environment Combine, Depth texture, and Shadow . These features are standard starting with OpenGL 1.4. The method
setSortedLayersNumPasses()
allows you to set the number of rendering passes for more correct transparency. Usually, four passes gives good results.If the graphics board does not support multi-pass transparency, SORTED_OBJECT is used.
Note: If the application uses fragment sorting transparency and specifies a custom fragment shader, the application shader must call an Open Inventor GLSL method instead of setting gl_FragColor directly. See TransparencyShaders for details.
Limitations:
- Since it uses a "depth peeling" algorithm, this transparency type does not work correctly if a node
SoDepthBuffer
is used to change depth buffer settings. - This transparency type is not compatible with interlaced stereo.
- Texturing on semi-transparent objects is limited to one texture.
- Using the single-pass algorithm, it is possible to run out of GPU memory for storing fragment transparency values. This should only happen for scenes with both high depth complexity and a large number of semi-transparent objects. In this case fragments from the objects traversed last in the scene graph may not be sorted correctly, resulting in small artifacts.
- Not compatible with FSAA. use SUPERSAMPLING, FXAA or SMAA instead.
- Since it uses a "depth peeling" algorithm, this transparency type does not work correctly if a node
-
-
Method Details
-
values
Returns an array containing the constants of this enum class, in the order they are declared.- Returns:
- an array containing the constants of this enum class, in the order they are declared
-
valueOf
Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException
- if this enum class has no constant with the specified nameNullPointerException
- if the argument is null
-
valueOf
Returns the enum constant of this type with the specified integer value- Returns:
- the enum constant of this type with the specified integer value.
-
getValue
public int getValue()Description copied from interface:IntegerValuedEnum
Returns the integer value of the enum constant.- Specified by:
getValue
in interfaceIntegerValuedEnum
- Returns:
- the integer value of the enum constant.
-