Constructs a new SSAO effect.
Optionalcamera: CameraThe main camera.
OptionalnormalBuffer: TextureA texture that contains the scene normals.
Optionaloptions: {The options.
Optionalbias?: numberAn occlusion bias. Eliminates artifacts caused by depth discontinuities.
OptionalblendFunction?: BlendFunctionThe blend function of this effect.
Optionalcolor?: ColorThe color of the ambient occlusion.
OptionaldepthAwareUpsampling?: booleanEnables or disables depth-aware upsampling. Has no effect if WebGL 2 is not supported.
OptionaldistanceFalloff?: numberDeprecated.
OptionaldistanceScaling?: booleanDeprecated.
OptionaldistanceThreshold?: numberDeprecated.
Optionalfade?: numberInfluences the smoothness of the shadows. A lower value results in higher contrast.
Optionalheight?: numberDeprecated. Use resolutionY instead.
Optionalintensity?: numberThe intensity of the ambient occlusion.
OptionalluminanceInfluence?: numberDetermines how much the luminance of the scene influences the ambient occlusion.
OptionalminRadiusScale?: numberThe minimum radius scale.
OptionalnormalDepthBuffer?: TextureDeprecated.
Optionalradius?: numberThe occlusion sampling radius, expressed as a scale relative to the resolution. Range [1e-6, 1.0].
OptionalrangeFalloff?: numberDeprecated.
OptionalrangeThreshold?: numberDeprecated.
OptionalresolutionScale?: numberThe resolution scale.
OptionalresolutionX?: numberThe horizontal resolution.
OptionalresolutionY?: numberThe vertical resolution.
Optionalrings?: numberThe amount of spiral turns in the occlusion sampling pattern. Should be a prime number.
Optionalsamples?: numberThe amount of samples per pixel. Should not be a multiple of the ring count.
Optionalwidth?: numberDeprecated. Use resolutionX instead.
OptionalworldDistanceFalloff?: numberThe world distance falloff. Influences the smoothness of the occlusion cutoff.
OptionalworldDistanceThreshold?: numberThe world distance threshold at which the occlusion effect starts to fade out.
OptionalworldProximityFalloff?: numberThe world proximity falloff. Influences the smoothness of the proximity cutoff.
OptionalworldProximityThreshold?: numberThe world proximity threshold at which the occlusion starts to fade out.
ReadonlyblendThe blend mode of this effect.
ReadonlydefinesPreprocessor macro definitions.
Call Effect.setChanged after changing macro definitions.
ReadonlyextensionsWebGL extensions that are required by this effect.
Call Effect.setChanged after adding or removing extensions.
The name of this effect.
ProtectedrendererThe renderer.
ReadonlyuniformsShader uniforms.
Call Effect.setChanged after adding or removing uniforms.
The color of the ambient occlusion. Set to null to disable.
Indicates whether depth-aware upsampling is enabled.
ExperimentalThe input color space.
Protected ExperimentalThe intensity.
The luminance influence factor. Range: [0.0, 1.0].
Sets the main camera.
Sets the main scene.
Sets the normal buffer.
ExperimentalThe output color space.
Should only be changed if this effect converts the input colors to a different color space.
Protected ExperimentalThe SSAO material.
Adds a listener to an event type.
The type of event to listen to.
The function that gets called when the event is fired.
Adds a listener to an event type.
The type of event to listen to.
The function that gets called when the event is fired.
Performs a shallow search for properties that define a dispose method and deletes them.
The EffectComposer calls this method when it is being destroyed.
Returns the effect attributes.
The attributes.
Returns the fragment shader.
The fragment shader.
Returns the vertex shader.
The vertex shader.
Checks if listener is added to an event type.
The type of event to listen to.
The function that gets called when the event is fired.
Checks if listener is added to an event type.
The type of event to listen to.
The function that gets called when the event is fired.
Performs initialization tasks.
This method is called when the associated EffectPass is added to an EffectComposer.
The renderer.
Whether the renderer uses the alpha channel or not.
The type of the main frame buffers.
Removes a listener from an event type.
The type of the listener that gets removed.
The listener function that gets removed.
Removes a listener from an event type.
The type of the listener that gets removed.
The listener function that gets removed.
ProtectedsetProtectedSets the effect attributes.
Effects that have the same attributes will be executed in the order in which they were registered. Some attributes imply a higher priority.
The attributes.
ProtectedsetProtectedInforms the associated EffectPass that this effect requires a shader recompilation.
Should be called after changing macros or extensions and after adding/removing uniforms.
Sets the depth texture.
You may override this method if your effect requires direct access to the depth texture that is bound to the associated EffectPass.
A depth texture.
OptionaldepthPacking: DepthPackingStrategiesThe depth packing.
ProtectedsetProtectedSets the fragment shader.
The fragment shader.
Sets the size.
The width.
The height.
ProtectedsetProtectedSets the vertex shader.
The vertex shader.
Updates this effect.
The renderer.
A frame buffer that contains the result of the previous pass.
OptionaldeltaTime: numberThe time between the last frame and the current one in seconds.
A Screen Space Ambient Occlusion (SSAO) effect.
For high quality visuals use two SSAO effect instances in a row with different radii, one for rough AO and one for fine details.
This effect supports depth-aware upsampling and should be rendered at a lower resolution. The resolution should match that of the downsampled normals and depth. If you intend to render SSAO at full resolution, do not provide a downsampled
normalDepthBuffer.It's recommended to specify a relative render resolution using the
resolutionScaleconstructor parameter to avoid undesired sampling patterns.Based on "Scalable Ambient Obscurance" by Morgan McGuire et al. and "Depth-aware upsampling experiments" by Eleni Maria Stea: https://research.nvidia.com/publication/scalable-ambient-obscurance https://eleni.mutantstargoat.com/hikiko/on-depth-aware-upsampling
The view position calculation is based on a shader by Norbert Nopper: https://github.com/McNopper/OpenGL/blob/master/Example28/shader/ssao.frag.glsl