using System;
namespace UnityEngine.Rendering.HighDefinition
{
///
/// A volume component that holds settings for High Quality Line Rendering.
///
[SupportedOnRenderPipeline(typeof(HDRenderPipelineAsset))]
[Serializable, VolumeComponentMenu("Rendering/High Quality Lines")]
[HDRPHelpURL("Override-High-Quality-Lines")]
[DisplayInfo(name = "High Quality Line Rendering")]
public class HighQualityLineRenderingVolumeComponent : VolumeComponent
{
///
/// A that holds a Line Rendering Composition Mode value.
///
[Serializable]
public sealed class LinesCompositionModeParameter : VolumeParameter
{
///
/// Creates a new LinesSortingQualityParameter instance.
///
/// The initial value to store in the parameter.
/// The initial override state for the parameter.
public LinesCompositionModeParameter(LineRendering.CompositionMode value, bool overrideState = false) : base(value, overrideState) { }
}
///
/// A that holds a Line Rendering Sorting Quality value.
///
[Serializable]
public sealed class LinesSortingQualityParameter : VolumeParameter
{
///
/// Creates a new LinesSortingQualityParameter instance.
///
/// The initial value to store in the parameter.
/// The initial override state for the parameter.
public LinesSortingQualityParameter(LineRendering.SortingQuality value, bool overrideState = false) : base(value, overrideState) { }
}
///
///
///
public BoolParameter enable = new BoolParameter(false);
///
/// Determines when in the render pipeline that lines will be composed into the main frame.
///
[Tooltip("Determines when in the render pipeline that lines will be composed into the main frame.")]
public LinesCompositionModeParameter compositionMode = new LinesCompositionModeParameter(LineRendering.CompositionMode.BeforeColorPyramid);
///
/// Sets the number of clusters along the z-axis for high quality line rendering, improves transparent sorting.
///
[Tooltip("Sets the number of clusters along the z-axis for high quality line rendering, improves transparent sorting.")]
public ClampedIntParameter clusterCount = new ClampedIntParameter(24, 1, 128);
///
/// Sets the number of segments that are sorted within a cluster.
///
[Tooltip("Sets the number of segments that are sorted within a cluster.")]
public LinesSortingQualityParameter sortingQuality = new LinesSortingQualityParameter(LineRendering.SortingQuality.Low);
///
/// Threshold for determining what qualifies as an opaque tile for high quality line rendering.
///
[Tooltip("Threshold for determining what qualifies as an opaque tile for high quality line rendering, lower values improve performance, but lose quality.")]
public ClampedFloatParameter tileOpacityThreshold = new ClampedFloatParameter(1.0f, 0.0f, 1.0f);
///
/// Depth and motion vectors are written only if the alpha value is above this threshold.
///
[Tooltip("Threshold for determining when to write depth to output.")]
public ClampedFloatParameter writeDepthAlphaThreshold = new ClampedFloatParameter(0.0f, 0.0f, 1.0f);
}
}