genre | Visualization |
author | Florian Link |
package | MeVisLab/Standard |
dll | SoRenderers |
definition | SoRenderers.def |
keywords | framebuffer, fbo, render, shadow |
This module is deprecated. Please consider using SoPostEffectAmbientOcclusion instead, since this allows combination with other screen space effects.
This module implements "Screen Space Ambient Occlusion" (SSAO). Being a screen space algorithm, it renders the scene to several offscreen buffers (a so called G-Buffer) and applies a SSAO detection filter and an optional blur pass. The final ambient occlusion term is then applied to the rendered scene.
The SoScreenSpaceAmbientOcclusion module can be used together with the SoShaderPipeline, it will add a custom fragment write that stores color, normals and depth in a GBuffer.
Place the whole opaque Inventor scene below this module. If you want to render transparent geometry, you need to render it after this module.
NOTE: Please place things like SoBackground, SoAnnotation, SoText2 etc. in front or behind this module, NOT below this module, since they will cause wrong depth values to be written and would create strange occlusion effects.
The algorithm contains various parameters, the best setting for the parameter highly depends on the concrete geometry that is rendered.
Example screenshots:
Normal Rendering:
With Screen Space Ambient Occlusion turned on:
Only the ambient occlusion term:
Angle Bias: Float | Intensity: Float | renderCaching: Enum |
Attenuation: Float | Is supported: Bool | renderCulling: Enum |
boundingBoxCaching: Enum | Mode (mode): Enum | Sample Radius: Float |
Contrast: Float | Mode (blurMode): Enum | Scale: Float |
Debug Textures: Bool | Num. Directions: Integer | Sharpness: Float |
Enable: Bool | Num. Steps: Integer | Show Ambient Only: Bool |
Enabled: Bool | pickCulling: Enum | Use Linear Depth: Bool |
Half resolution ambient occlusion: Bool | Radius: Float |
Enable the SSAO rendering. If disabled, the scene is rendered normally.
Shows if the module is operational on the current hardware.
Enables the usage of a 32bit floating point linear depth buffer instead of using the default 24bit fixed-point non-linear depth buffer.
All angles below this threshold (in degrees) will be discarded when calculating ambient occlusion. Thus, the higher this value, the lesser self-occlusion will happen. The best value for this parameter depends on the coarseness of the triangle mesh, the coarser the mesh, the bigger the bias should be.
Defines the radius of the SSAO sampling.
Scales the intensity of the AO.
Scales the distance term of the algorithm, lower values generate more occlusion.
(High Quality only) Defines how many occlusion directions are considered for each screen pixel.
(High Quality only) Defines how many steps are sampled on each direction.
(High Quality only) Defines the attenuation of the ambient occlusion term.
(High Quality only) Defines the contrast of the ambient occlusion term.
Switches the SSAO calculation and blur pass to a half-resolution buffer.
Renders the SSAO term if enabled.
Allows to switch between high quality and low quality algorithms. High quality is recommended, but is substantially slower.
Values:
Title | Name | Description |
---|---|---|
Low Quality | SSAO_LOW_QUALITY | Implements a simplified version of the original NVidia algorithm, which is much faster but less precise/correct. |
High Quality | SSAO_HIGH_QUALITY | Implements "Horizon Based Ambient Occlusion" as given by http://developer.download.nvidia.com/SDK/10.5/direct3d/Source/ScreenSpaceAO/doc/ScreenSpaceAO.pdf For more details, see the paper at http://rdimitrov.info/HBAO_SIGGRAPH08.pdf This software contains source code provided by NVIDIA Corporation. |
Selects the blur mode.
Values:
Title | Name | Description |
---|---|---|
Bilateral Blur | BILATERAL_BLUR | Uses a bilateral blur filter which is edge preserving. See http://developer.download.nvidia.com/SDK/10.5/direct3d/Source/ScreenSpaceAO/doc/ScreenSpaceAO.pdf for details. |
Gaussian 9x9 | GAUSSIAN_9x9 | Uses a simple 9x9 Gauss filter to blur the ambient occlusion term. |
Defines the radius of the blur filter.