using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace BansheeEngine
{
/** @addtogroup Rendering
* @{
*/
/// Settings that control screen space ambient occlusion.
public partial class AmbientOcclusionSettings : ScriptObject
{
private AmbientOcclusionSettings(bool __dummy0) { }
public AmbientOcclusionSettings()
{
Internal_AmbientOcclusionSettings(this);
}
/// Enables or disabled the screen space ambient occlusion effect.
public bool Enabled
{
get { return Internal_getenabled(mCachedPtr); }
set { Internal_setenabled(mCachedPtr, value); }
}
///
/// Radius (in world space, in meters) over which occluders are searched for. Smaller radius ensures better sampling
/// precision but can miss occluders. Larger radius ensures far away occluders are considered but can yield lower quality
/// or noise because of low sampling precision. Usually best to keep at around a meter, valid range is roughly [0.05,
/// 5.0].
///
public float Radius
{
get { return Internal_getradius(mCachedPtr); }
set { Internal_setradius(mCachedPtr, value); }
}
///
/// Bias used to reduce false occlusion artifacts. Higher values reduce the amount of artifacts but will cause details to
/// be lost in areas where occlusion isn't high. Value is in millimeters. Usually best to keep at a few dozen
/// millimeters, valid range is roughly [0, 200].
///
public float Bias
{
get { return Internal_getbias(mCachedPtr); }
set { Internal_setbias(mCachedPtr, value); }
}
///
/// Distance (in view space, in meters) after which AO starts fading out. The fade process will happen over the range as
/// specified by
///
public float FadeDistance
{
get { return Internal_getfadeDistance(mCachedPtr); }
set { Internal_setfadeDistance(mCachedPtr, value); }
}
///
/// Range (in view space, in meters) in which AO fades out from 100% to 0%. AO starts fading out after the distance
/// specified in
///
public float FadeRange
{
get { return Internal_getfadeRange(mCachedPtr); }
set { Internal_setfadeRange(mCachedPtr, value); }
}
///
/// Linearly scales the intensity of the AO effect. Values less than 1 make the AO effect less pronounced, and vice
/// versa. Valid range is roughly [0.2, 2].
///
public float Intensity
{
get { return Internal_getintensity(mCachedPtr); }
set { Internal_setintensity(mCachedPtr, value); }
}
///
/// Controls how quickly does the AO darkening effect increase with higher occlusion percent. This is a non-linear
/// control and will cause the darkening to ramp up exponentially. Valid range is roughly [1, 4], where 1 means no extra
/// darkening will occur.
///
public float Power
{
get { return Internal_getpower(mCachedPtr); }
set { Internal_setpower(mCachedPtr, value); }
}
///
/// Quality level of generated ambient occlusion. In range [0, 4]. Higher levels yield higher quality AO at the cost of
/// performance.
///
public uint Quality
{
get { return Internal_getquality(mCachedPtr); }
set { Internal_setquality(mCachedPtr, value); }
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_AmbientOcclusionSettings(AmbientOcclusionSettings managedInstance);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_getenabled(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setenabled(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern float Internal_getradius(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setradius(IntPtr thisPtr, float value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern float Internal_getbias(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setbias(IntPtr thisPtr, float value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern float Internal_getfadeDistance(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setfadeDistance(IntPtr thisPtr, float value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern float Internal_getfadeRange(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setfadeRange(IntPtr thisPtr, float value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern float Internal_getintensity(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setintensity(IntPtr thisPtr, float value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern float Internal_getpower(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setpower(IntPtr thisPtr, float value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern uint Internal_getquality(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setquality(IntPtr thisPtr, uint value);
}
/** @} */
}