PostProcessEffectsControl
-
class HPS::PostProcessEffectsControl : public HPS::Control
The HPS::PostProcessEffectsControl class is a smart pointer that is tied to a database object. This object is effective only for the shader-based driver interfaces such as DirectX and OpenGL2. Ambient occlusion, bloom, silhouette edges, and depth of field are all enabled through this control. Default values for the various fields of HPS::PostProcessEffectsControl can be found here.
Public Functions
-
inline virtual HPS::Type ObjectType() const
This function returns the type the object, as declared (if the object is derived, this does not give the true type of the derived object).
- Returns
The declared type of the object in question, which may differ from the true, underlying type.
-
PostProcessEffectsControl &operator=(PostProcessEffectsControl &&in_that)
The move assignment operator transfers the underlying impl of the rvalue reference to this PostProcessEffectsControl thereby avoiding a copy.
- Parameters
in_that – An rvalue reference to a PostProcessEffectsControl to take the impl from.
- Returns
A reference to this PostProcessEffectsControl.
-
PostProcessEffectsControl &operator=(PostProcessEffectsControl const &in_that)
Share the underlying smart-pointer of the PostProcessEffectsControl source.
- Parameters
in_that – The PostProcessEffectsControl source of the assignment.
- Returns
A reference to this PostProcessEffectsControl.
-
PostProcessEffectsControl(PostProcessEffectsControl &&in_that)
The move constructor creates a PostProcessEffectsControl by transferring the underlying impl of the rvalue reference to this PostProcessEffectsControl thereby avoiding a copy and allocation.
- Parameters
in_that – An rvalue reference to a PostProcessEffectsControl to take the impl from.
-
PostProcessEffectsControl(PostProcessEffectsControl const &in_that)
Initializes a control tied to the same object as in_that.
-
explicit PostProcessEffectsControl(WindowKey &in_seg)
Initializes a control tied to the window segment in_seg.
-
PostProcessEffectsControl &SetAmbientOcclusion(bool in_state, float in_strength = 1.0f, PostProcessEffects::AmbientOcclusion::Quality in_quality = PostProcessEffects::AmbientOcclusion::Quality::Fastest, float in_radius = 1.0f, float in_sharpness = 32.0f)
Ambient occlusion is a general term for shading that varies when nearby objects (occluders) would prevent some portion of ambient light from reaching a surface. This applies a filter that looks for small valleys in the depth buffer results, and slightly darkens these areas.
Note
Ambient occlusion uses the depth buffer that is generated when we render opaque geometry to approximate ambient occlusion. Drawing of transparent geometry is always deferred until after all opaque geometry is drawn, and doesn’t write any depth information to the depth buffer. Thus, transparent geometry will effectively not exist for ambient occlusion calculations, and will therefore be unaffected by them. This also means that if all geometry in a scene is transparent, ambient occlusion is effectively disabled.
- Parameters
in_state – Whether ambient occlusion should be used.
in_strength – A multiplier on the default contribution of ambient occlusion in the regular lighting calculations. Higher values mean that ambient occlusion will make a stronger contribution.
in_quality – Indicates how much time should be spent improving the visual quality.
in_radius – A multiplier for the screen-space search radius.
in_sharpness – A value from 0.0f to 32.0f where lower values result in more blurred but softer edges and higher values will be blurred less with harder edges yet with more potential for banding. Higher values increase the search radius for occluding pixels, but may cause under-sampling artifacts.
- Returns
A reference to this object.
-
PostProcessEffectsControl &SetAmbientOcclusion(float in_strength, PostProcessEffects::AmbientOcclusion::Quality in_quality = PostProcessEffects::AmbientOcclusion::Quality::Fastest, float in_radius = 1.0f, float in_sharpness = 32.0f)
Ambient occlusion is a general term for shading that varies when nearby objects (occluders) would prevent some portion of ambient light from reaching a surface. This applies a filter that looks for small valleys in the depth buffer results, and slightly darkens these areas. The state is implicitly on.
Note
Ambient occlusion uses the depth buffer that is generated when we render opaque geometry to approximate ambient occlusion. Drawing of transparent geometry is always deferred until after all opaque geometry is drawn, and doesn’t write any depth information to the depth buffer. Thus, transparent geometry will effectively not exist for ambient occlusion calculations, and will therefore be unaffected by them. This also means that if all geometry in a scene is transparent, ambient occlusion is effectively disabled.
- Parameters
in_strength – A multiplier on the default contribution of ambient occlusion in the regular lighting calculations. Higher values mean that ambient occlusion will make a stronger contribution.
in_quality – Indicates how much time should be spent improving the visual quality.
in_radius – A multiplier for the screen-space search radius.
in_sharpness – A value from 0.0f to 32.0f where lower values result in more blurred but softer edges and higher values will be blurred less with harder edges yet with more potential for banding. Higher values increase the search radius for occluding pixels, but may cause under-sampling artifacts.
- Returns
A reference to this object.
-
PostProcessEffectsControl &SetBloom(bool in_state, float in_strength = 1.0f, unsigned int in_blur = 5, PostProcessEffects::Bloom::Shape in_shape = PostProcessEffects::Bloom::Shape::Radial)
Bloom causes bright objects to bleed into darker ones, simulating the imperfect focus inevitable with the human eye or any other type of lens.
- Parameters
in_state – Whether bloom should be used.
in_strength – A multiplier on the default contribution of bloom. Higher values mean that bloom will make a stronger contribution. Valid range is [0,10].
in_blur – The number of blur passes to perform on the output. Higher values mean that bloom will affect a wider area and look smoother. Valid range is [1,8].
in_shape – The shape of the bloom effect.
- Returns
A reference to this object.
-
PostProcessEffectsControl &SetBloom(float in_strength, unsigned int in_blur, PostProcessEffects::Bloom::Shape in_shape)
Bloom causes bright objects to bleed into darker ones, simulating the imperfect focus inevitable with the human eye or any other type of lens. The state is implicitly on.
- Parameters
in_strength – A multiplier on the default contribution of bloom. Higher values mean that bloom will make a stronger contribution. Valid range is [0,10].
in_blur – The number of blur passes to perform on the output. Higher values mean that bloom will affect a wider area and look smoother. Valid range is [1,8].
in_shape – The shape of the bloom effect.
- Returns
A reference to this object.
-
PostProcessEffectsControl &SetDepthOfField(bool in_state, float in_strength = 1.0f, float in_near_distance = Float::NegativeInfinity, float in_far_distance = Float::Infinity)
Depth of Field is the distance between the nearest and farthest objects in a scene that appear sharp.
- Parameters
in_state – Whether depth of field should be used.
in_strength – A multiplier on the default blur radius. Higher values mean more blurring.
in_near_distance – The camera distance in front of which geometry will begin to appear out of focus.
in_far_distance – The camera distance beyond which geometry will appear out of focus.
- Returns
A reference to this object.
-
PostProcessEffectsControl &SetDepthOfField(float in_strength, float in_near_distance, float in_far_distance)
Depth of Field is the distance between the nearest and farthest objects in a scene that appear sharp. The state is implicitly on.
- Parameters
in_strength – A multiplier on the default blur radius. Higher values mean more blurring.
in_near_distance – The camera distance in front of which geometry will begin to appear out of focus.
in_far_distance – The camera distance beyond which geometry will appear out of focus.
- Returns
A reference to this object.
-
PostProcessEffectsControl &SetEyeDomeLighting(bool in_state, float in_exponent = 50.0f, float in_tolerance = 1.0f, float in_strength = 1.0f)
Controls the shader-based eye-dome lighting effect.
- Parameters
in_state – Whether eye-dome lighting should be used.
in_exponent – An exponent used to attenuate the per-pixel occlusion computed by the eye-dome lighting algorithm.
in_tolerance – A multiplier on the threshold that the driver uses when comparing adjacent pixel depth values to detect occlusion. This allows the user to control the amount of occlusion added by neighboring pixels based on their relative depth difference.
in_strength – A multiplier on the calculated per-pixel occlusion value.
- Returns
true if the setting is valid, false otherwise.
-
PostProcessEffectsControl &SetEyeDomeLighting(float in_exponent, float in_tolerance, float in_strength)
Controls the shader-based eye-dome lighting effect. The state is implicitly on.
- Parameters
in_exponent – An exponent used to attenuate the per-pixel occlusion computed by the eye-dome lighting algorithm.
in_tolerance – A multiplier on the threshold that the driver uses when comparing adjacent pixel depth values to detect occlusion. This allows the user to control the amount of occlusion added by neighboring pixels based on their relative depth difference.
in_strength – A multiplier on the calculated per-pixel occlusion value.
- Returns
true if the setting is valid, false otherwise.
-
PostProcessEffectsControl &SetSilhouetteEdges(bool in_state, float in_tolerance = 1.0f, bool in_heavy_exterior = false)
Controls the shader-based fast drawing of silhouette edges.
- Parameters
in_state – Whether silhouette edges should be used.
in_tolerance – A multiplier on the threshold that the driver uses when comparing adjacent pixel depth values to detect silhouettes. This allows the user to control the trade-off between silhouettes appearing where they shouldn’t, vs disappearing in places they should be.
in_heavy_exterior – This option, when enabled, causes an extra thick border to be drawn at the boundary between geometry and the window background (as opposed to geometry on top of other geometry).
- Returns
A reference to this object.
-
PostProcessEffectsControl &SetSilhouetteEdges(float in_tolerance, bool in_heavy_exterior)
Controls the shader-based fast drawing of silhouette edges. The state is implicitly on.
- Parameters
in_tolerance – A multiplier on the threshold that the driver uses when comparing adjacent pixel depth values to detect silhouettes. This allows the user to control the trade-off between silhouettes appearing where they shouldn’t, vs disappearing in places they should be.
in_heavy_exterior – This option, when enabled, causes an extra thick border to be drawn at the boundary between geometry and the window background (as opposed to geometry on top of other geometry).
- Returns
A reference to this object.
-
PostProcessEffectsControl &SetWorldScale(float in_scale)
Sets a world scale value used by post process effects such as ambient occlusion. If not set, scale is computed based on scene bounding. The world scale is a uniform factor used to express the world units using meters. With a world scale of 1.0, a vector of _(1, 0, 0)_ means that the vector is 1 meter long along the x-axis direction.
- Parameters
in_scale – Scale value used by post process effect.
- Returns
A reference to this object.
-
bool ShowAmbientOcclusion(bool &out_state, float &out_strength, PostProcessEffects::AmbientOcclusion::Quality &out_quality, float &out_radius, float &out_sharpness) const
Shows the ambient occlusion setting.
- Parameters
out_state – Whether ambient occlusion should be used.
out_strength – A multiplier on the default contribution of ambient occlusion in the regular lighting calculations. Higher values mean that ambient occlusion will make a stronger contribution.
out_quality – Indicates how much time should be spent improving the visual quality.
out_radius – A multiplier for the screen-space search radius.
out_sharpness – A value indicating the sharpness of the ambient occlusion edges. Higher values increase the search radius for occluding pixels, but may cause under-sampling artifacts.
- Returns
true if the setting is valid, false otherwise.
-
bool ShowBloom(bool &out_state, float &out_strength, unsigned int &out_blur, PostProcessEffects::Bloom::Shape &out_shape) const
Shows the bloom setting.
- Parameters
out_state – Whether bloom should be used.
out_strength – A multiplier on the default contribution of bloom. Higher values mean that bloom will make a stronger contribution.
out_blur – The number of blur passes to perform on the output. Higher values mean that bloom will affect a wider area and look smoother.
out_shape – The shape of the bloom effect.
- Returns
true if the setting is valid, false otherwise.
-
bool ShowDepthOfField(bool &out_state, float &out_strength, float &out_near_distance, float &out_far_distance) const
Shows the depth of field setting.
- Parameters
out_state – Whether depth of field should be used.
out_strength – A multiplier on the default blur radius. Higher values mean more blurring.
out_near_distance – The camera distance in front of which geometry will begin to appear out of focus.
out_far_distance – The camera distance beyond which geometry will appear out of focus.
- Returns
true if the setting is valid, false otherwise.
-
bool ShowEyeDomeLighting(bool &out_state, float &out_exponent, float &out_tolerance, float &out_strength) const
Shows the eye-dome lighting setting.
- Parameters
out_state – Whether eye-dome lighting should be used.
out_exponent – An exponent used to attenuate the per-pixel occlusion computed by the eye-dome lighting algorithm.
out_tolerance – A multiplier on the threshold that the driver uses when comparing adjacent pixel depth values to detect occlusion. This allows the user to control the amount of occlusion added by neighboring pixels based on their relative depth difference.
out_strength – A multiplier on the calculated per-pixel occlusion value.
- Returns
true if the setting is valid, false otherwise.
-
bool ShowSilhouetteEdges(bool &out_state, float &out_tolerance, bool &out_heavy_exterior) const
Shows the silhouette edge setting.
- Parameters
out_state – Whether silhouette edges should be used.
out_tolerance – A multiplier on the threshold that the driver uses when comparing adjacent pixel depth values to detect silhouettes. This allows the user to control the trade-off between silhouettes appearing where they shouldn’t, vs disappearing in places they should be.
out_heavy_exterior – This option, when enabled, causes an extra thick border to be drawn at the boundary between geometry and the window background (as opposed to geometry on top of other geometry).
- Returns
true if the setting is valid, false otherwise.
-
bool ShowWorldScale(float &out_scale) const
Shows the world scale setting.
- Parameters
out_scale – Scale value used by post process effects.
- Returns
true if the setting is valid, false otherwise.
-
PostProcessEffectsControl &UnsetAmbientOcclusion()
Removes any ambient occlusion setting. If the control is attached to a WindowKey this function restores the default value of this setting as specified by PostProcessEffectsKit::GetDefault().
- Returns
A reference to this object.
-
PostProcessEffectsControl &UnsetBloom()
Removes a bloom setting. If the control is attached to a WindowKey this function restores the default value of this setting as specified by PostProcessEffectsKit::GetDefault().
- Returns
A reference to this object.
-
PostProcessEffectsControl &UnsetDepthOfField()
Removes a depth of field setting. If the control is attached to a WindowKey this function restores the default value of this setting as specified by PostProcessEffectsKit::GetDefault().
- Returns
A reference to this object.
-
PostProcessEffectsControl &UnsetEverything()
Removes all settings from this object. If the control is attached to a WindowKey this function restores the default settings of this control as specified by PostProcessEffectsKit::GetDefault().
- Returns
A reference to this object.
-
PostProcessEffectsControl &UnsetEyeDomeLighting()
Removes an eye-dome lighting setting. If the control is attached to a WindowKey this function restores the default value of this setting as specified by PostProcessEffectsKit::GetDefault().
- Returns
A reference to this object.
-
PostProcessEffectsControl &UnsetSilhouetteEdges()
Removes a silhouette edge setting. If the control is attached to a WindowKey this function restores the default value of this setting as specified by PostProcessEffectsKit::GetDefault().
- Returns
A reference to this object.
-
PostProcessEffectsControl &UnsetWorldScale()
Removes any world scale setting. If the control is attached to a WindowKey this function restores the default value of this setting as specified by PostProcessEffectsKit::GetDefault().
- Returns
A reference to this object.
-
~PostProcessEffectsControl()
Releases a reference to the database object this control is tied to.
Public Static Attributes
-
static const HPS::Type staticType = HPS::Type::PostProcessEffectsControl
-
inline virtual HPS::Type ObjectType() const