Class ScreenSpaceLensFlare
A volume component that holds settings for the Screen Space Lens Flare effect.
Inherited Members
Namespace: UnityEngine .Rendering.Universal
Assembly: Unity.RenderPipelines.Universal.Runtime.dll
Syntax
[Serializable]
[VolumeComponentMenu("Post-processing/Screen Space Lens Flare")]
[SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))]
public class ScreenSpaceLensFlare : VolumeComponent, IApplyRevertPropertyContextMenuItemProvider, IPostProcessComponent
Remarks
You can add Unity
Examples
This sample code shows how settings can be retrieved and modified in runtime:
using System;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class ModifyVolumeComponent : MonoBehaviour
{
[SerializeField] VolumeProfile volumeProfile;
[SerializeField] VolumeSettings volumeSettings;
private bool m_HasRetrievedVolumeComponent;
private ScreenSpaceLensFlare m_VolumeComponent;
[Serializable]
private struct VolumeSettings
{
public bool active;
public MinFloatParameter intensity;
public ColorParameter tintColor;
public ClampedIntParameter bloomMip;
public MinFloatParameter firstFlareIntensity;
public MinFloatParameter secondaryFlareIntensity;
public MinFloatParameter warpedFlareIntensity;
public Vector2Parameter warpedFlareScale;
public ClampedIntParameter samples;
public ClampedFloatParameter sampleDimmer;
public ClampedFloatParameter vignetteEffect;
public ClampedFloatParameter startingPosition;
public ClampedFloatParameter scale;
public MinFloatParameter streaksIntensity;
public ClampedFloatParameter streaksLength;
public FloatParameter streaksOrientation;
public ClampedFloatParameter streaksThreshold;
public ScreenSpaceLensFlareResolutionParameter resolution;
public ClampedFloatParameter chromaticAbberationIntensity;
public void SetVolumeComponentSettings(ref ScreenSpaceLensFlare volumeComponent)
{
volumeComponent.active = active;
volumeComponent.firstFlareIntensity = firstFlareIntensity;
volumeComponent.secondaryFlareIntensity = secondaryFlareIntensity;
volumeComponent.warpedFlareIntensity = warpedFlareIntensity;
volumeComponent.warpedFlareScale = warpedFlareScale;
volumeComponent.samples = samples;
volumeComponent.sampleDimmer = sampleDimmer;
volumeComponent.vignetteEffect = vignetteEffect;
volumeComponent.startingPosition = startingPosition;
volumeComponent.scale = scale;
volumeComponent.streaksIntensity = streaksIntensity;
volumeComponent.streaksLength = streaksLength;
volumeComponent.streaksOrientation = streaksOrientation;
volumeComponent.streaksThreshold = streaksThreshold;
volumeComponent.resolution = resolution;
volumeComponent.chromaticAbberationIntensity = chromaticAbberationIntensity;
}
public void GetVolumeComponentSettings(ref ScreenSpaceLensFlare volumeComponent)
{
active = volumeComponent.active;
firstFlareIntensity = volumeComponent.firstFlareIntensity;
secondaryFlareIntensity = volumeComponent.secondaryFlareIntensity;
warpedFlareIntensity = volumeComponent.warpedFlareIntensity;
warpedFlareScale = volumeComponent.warpedFlareScale;
samples = volumeComponent.samples;
sampleDimmer = volumeComponent.sampleDimmer;
vignetteEffect = volumeComponent.vignetteEffect;
startingPosition = volumeComponent.startingPosition;
scale = volumeComponent.scale;
streaksIntensity = volumeComponent.streaksIntensity;
streaksLength = volumeComponent.streaksLength;
streaksOrientation = volumeComponent.streaksOrientation;
streaksThreshold = volumeComponent.streaksThreshold;
resolution = volumeComponent.resolution;
chromaticAbberationIntensity = volumeComponent.chromaticAbberationIntensity;
}
}
private void Start()
{
m_HasRetrievedVolumeComponent = GetVolumeComponent(in volumeProfile, ref m_VolumeComponent);
if (m_HasRetrievedVolumeComponent)
volumeSettings.GetVolumeComponentSettings(ref m_VolumeComponent);
}
private void Update()
{
if (!m_HasRetrievedVolumeComponent)
return;
volumeSettings.SetVolumeComponentSettings(ref m_VolumeComponent);
}
private static bool GetVolumeComponent(in VolumeProfile volumeProfile, ref ScreenSpaceLensFlare volumeComponent)
{
if (volumeComponent != null)
return true;
if (volumeProfile == null)
{
Debug.LogError("ModifyVolumeComponent.GetVolumeComponent():\nvolumeProfile has not been assigned.");
return false;
}
volumeProfile.TryGet(out ScreenSpaceLensFlare component);
if (component == null)
{
Debug.LogError($"ModifyVolumeComponent.GetVolumeComponent():\nMissing component in the \"{volumeProfile.name}\" VolumeProfile ");
return false;
}
volumeComponent = component;
return true;
}
}
Constructors
ScreenSpaceLensFlare()
Default constructor for the lens flare volume component.
Declaration
public ScreenSpaceLensFlare()
See Also
Fields
bloomMip
Controls the bloom Mip used as a source for the Lens Flare effect. A high value will result in a blurrier result for all flares.
Declaration
public ClampedIntParameter bloomMip
Field Value
Type | Description |
---|---|
Clamped |
See Also
chromaticAbberationIntensity
Controls the strength of the Chromatic Aberration effect. The higher the value, the more light is dispersed on the sides of the screen
Declaration
[Header("Chromatic Abberation")]
public ClampedFloatParameter chromaticAbberationIntensity
Field Value
Type | Description |
---|---|
Clamped |
See Also
firstFlareIntensity
Controls the intensity of the Regular Flare sample. Those flares are sampled using scaled screen coordinates.
Declaration
[Header("Flares")]
public MinFloatParameter firstFlareIntensity
Field Value
Type | Description |
---|---|
Min |
See Also
intensity
Sets the global intensity of the Screen Space Lens Flare effect. When set to 0, the pass is skipped.
Declaration
public MinFloatParameter intensity
Field Value
Type | Description |
---|---|
Min |
See Also
resolution
Specifies the resolution at which the streak effect is evaluated.
Declaration
[SerializeField]
public ScreenSpaceLensFlareResolutionParameter resolution
Field Value
Type | Description |
---|---|
Screen |
See Also
sampleDimmer
Controls the value by which each additional sample is multiplied. A value of 1 keep the same intensities for all samples. A value of 0.7 multiplies the first sample by 1 (0.7 power 0), the second sample by 0.7 (0.7 power 1) and the third sample by 0.49 (0.7 power 2).
Declaration
public ClampedFloatParameter sampleDimmer
Field Value
Type | Description |
---|---|
Clamped |
See Also
samples
Controls the number of times the flare effect is repeated for each flare type (first, second, warped). This parameter has a strong impact on performance.
Declaration
public ClampedIntParameter samples
Field Value
Type | Description |
---|---|
Clamped |
See Also
scale
Controls the scale at which the flare effect is sampled.
Declaration
public ClampedFloatParameter scale
Field Value
Type | Description |
---|---|
Clamped |
See Also
secondaryFlareIntensity
Controls the intensity of the Reversed Flare sample. Those flares are sampled using scaled and flipped screen coordinates.
Declaration
public MinFloatParameter secondaryFlareIntensity
Field Value
Type | Description |
---|---|
Min |
See Also
startingPosition
Controls the starting position of the flares in screen space relative to their source.
Declaration
public ClampedFloatParameter startingPosition
Field Value
Type | Description |
---|---|
Clamped |
See Also
streaksIntensity
Controls the intensity of streaks effect. This effect has an impact on performance when above zero. When this intensity is zero, this effect is not evaluated to save costs.
Declaration
[Header("Streaks")]
public MinFloatParameter streaksIntensity
Field Value
Type | Description |
---|---|
Min |
See Also
streaksLength
Controls the length of streaks effect. A value of one creates streaks about the width of the screen.
Declaration
public ClampedFloatParameter streaksLength
Field Value
Type | Description |
---|---|
Clamped |
See Also
streaksOrientation
Controls the orientation of streaks effect in degrees. A value of 0 produces horizontal streaks.
Declaration
public FloatParameter streaksOrientation
Field Value
Type | Description |
---|---|
Float |
See Also
streaksThreshold
Controls the threshold of horizontal streak effect. A high value makes the effect more localised on the high intensity areas of the screen.
Declaration
public ClampedFloatParameter streaksThreshold
Field Value
Type | Description |
---|---|
Clamped |
See Also
tintColor
Sets the color used to tint all the flares.
Declaration
public ColorParameter tintColor
Field Value
Type | Description |
---|---|
Color |
See Also
vignetteEffect
Controls the intensity of the vignette effect to occlude the Lens Flare effect at the center of the screen.
Declaration
public ClampedFloatParameter vignetteEffect
Field Value
Type | Description |
---|---|
Clamped |
See Also
warpedFlareIntensity
Controls the intensity of the Warped Flare sample. Those flares are sampled using polar screen coordinates.
Declaration
public MinFloatParameter warpedFlareIntensity
Field Value
Type | Description |
---|---|
Min |
See Also
warpedFlareScale
Sets the scale of the warped flare. A value of 1,1 will keep this flare circular.
Declaration
public Vector2Parameter warpedFlareScale
Field Value
Type | Description |
---|---|
Vector2Parameter |
See Also
Methods
IsActive()
Tells if the post process needs to be rendered or not.
Declaration
public bool IsActive()
Returns
Type | Description |
---|---|
bool |
|
See Also
IsStreaksActive()
Returns true is streakIntensity is above zero.
Declaration
public bool IsStreaksActive()
Returns
Type | Description |
---|---|
bool |