using System;
namespace UnityEngine.Rendering.Universal
{
///
/// This controls the size of the bloom texture.
///
public enum BloomDownscaleMode
{
///
/// Use this to select half size as the starting resolution.
///
Half,
///
/// Use this to select quarter size as the starting resolution.
///
Quarter,
}
///
/// A volume component that holds settings for the Bloom effect.
///
[Serializable, VolumeComponentMenu("Post-processing/Bloom")]
[SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))]
[URPHelpURL("post-processing-bloom")]
public sealed partial class Bloom : VolumeComponent, IPostProcessComponent
{
///
/// Set the level of brightness to filter out pixels under this level.
/// This value is expressed in gamma-space.
/// A value above 0 will disregard energy conservation rules.
///
[Header("Bloom")]
[Tooltip("Filters out pixels under this level of brightness. Value is in gamma-space.")]
public MinFloatParameter threshold = new MinFloatParameter(0.9f, 0f);
///
/// Controls the strength of the bloom filter.
///
[Tooltip("Strength of the bloom filter.")]
public MinFloatParameter intensity = new MinFloatParameter(0f, 0f);
///
/// Controls the extent of the veiling effect.
///
[Tooltip("Set the radius of the bloom effect.")]
public ClampedFloatParameter scatter = new ClampedFloatParameter(0.7f, 0f, 1f);
///
/// Set the maximum intensity that Unity uses to calculate Bloom.
/// If pixels in your Scene are more intense than this, URP renders them at their current intensity, but uses this intensity value for the purposes of Bloom calculations.
///
[Tooltip("Set the maximum intensity that Unity uses to calculate Bloom. If pixels in your Scene are more intense than this, URP renders them at their current intensity, but uses this intensity value for the purposes of Bloom calculations.")]
public MinFloatParameter clamp = new MinFloatParameter(65472f, 0f);
///
/// Specifies the tint of the bloom filter.
///
[Tooltip("Use the color picker to select a color for the Bloom effect to tint to.")]
public ColorParameter tint = new ColorParameter(Color.white, false, false, true);
///
/// Controls whether to use bicubic sampling instead of bilinear sampling for the upsampling passes.
/// This is slightly more expensive but helps getting smoother visuals.
///
[Tooltip("Use bicubic sampling instead of bilinear sampling for the upsampling passes. This is slightly more expensive but helps getting smoother visuals.")]
public BoolParameter highQualityFiltering = new BoolParameter(false);
///
/// Controls the starting resolution that this effect begins processing.
///
[Tooltip("The starting resolution that this effect begins processing."), AdditionalProperty]
public DownscaleParameter downscale = new DownscaleParameter(BloomDownscaleMode.Half);
///
/// Controls the maximum number of iterations in the effect processing sequence.
///
[Tooltip("The maximum number of iterations in the effect processing sequence."), AdditionalProperty]
public ClampedIntParameter maxIterations = new ClampedIntParameter(6, 2, 8);
///
/// Specifies a Texture to add smudges or dust to the bloom effect.
///
[Header("Lens Dirt")]
[Tooltip("Dirtiness texture to add smudges or dust to the bloom effect.")]
public TextureParameter dirtTexture = new TextureParameter(null);
///
/// Controls the strength of the lens dirt.
///
[Tooltip("Amount of dirtiness.")]
public MinFloatParameter dirtIntensity = new MinFloatParameter(0f, 0f);
///
public bool IsActive() => intensity.value > 0f;
///
[Obsolete("Unused #from(2023.1)", false)]
public bool IsTileCompatible() => false;
}
///
/// A that holds a value.
///
[Serializable]
public sealed class DownscaleParameter : VolumeParameter
{
///
/// Creates a new instance.
///
/// The initial value to store in the parameter.
/// The initial override state for the parameter.
public DownscaleParameter(BloomDownscaleMode value, bool overrideState = false) : base(value, overrideState) { }
}
}