101 lines
3.9 KiB
C#
101 lines
3.9 KiB
C#
using System;
|
|
|
|
namespace UnityEngine.Rendering.Universal
|
|
{
|
|
/// <summary>
|
|
/// A Graphics Settings container for settings related to shader stripping for <see cref="UniversalRenderPipeline"/>.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// To change those settings, go to Editor > Project Settings in the Graphics tab (URP).
|
|
/// Changing this through the API is only allowed in the Editor. In the Player, this raises an error.
|
|
///
|
|
/// This container is removed from all build Players.
|
|
/// </remarks>
|
|
/// <seealso cref="IRenderPipelineGraphicsSettings"/>
|
|
/// <example>
|
|
/// <para> Here is an example of how to determine if your project strips shader variants when building a Player with URP. </para>
|
|
/// <code>
|
|
/// using UnityEngine.Rendering;
|
|
/// using UnityEngine.Rendering.Universal;
|
|
///
|
|
/// public static class URPShaderStrippingHelper
|
|
/// {
|
|
/// public static bool enabled
|
|
/// {
|
|
/// get
|
|
/// {
|
|
/// var gs = GraphicsSettings.GetRenderPipelineSettings<URPShaderStrippingSetting>();
|
|
/// if (gs == null) //not in URP or in a Player
|
|
/// return false;
|
|
/// return gs.stripUnusedVariants;
|
|
/// }
|
|
/// }
|
|
/// }
|
|
/// </code>
|
|
/// </example>
|
|
[Serializable]
|
|
[SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))]
|
|
[Categorization.CategoryInfo(Name = "Additional Shader Stripping Settings", Order = 40)]
|
|
[Categorization.ElementInfo(Order = 10)]
|
|
public class URPShaderStrippingSetting : IRenderPipelineGraphicsSettings
|
|
{
|
|
#region Version
|
|
internal enum Version : int
|
|
{
|
|
Initial = 0,
|
|
}
|
|
|
|
[SerializeField][HideInInspector]
|
|
private Version m_Version;
|
|
|
|
/// <summary>Indicates the current version of this settings container. Used exclusively for project upgrades.</summary>
|
|
public int version => (int)m_Version;
|
|
#endregion
|
|
|
|
#region SerializeFields
|
|
[SerializeField]
|
|
[Tooltip("Controls whether to automatically strip post processing shader variants based on VolumeProfile components. Stripping is done based on VolumeProfiles in project, their usage in scenes is not considered.")]
|
|
bool m_StripUnusedPostProcessingVariants = false;
|
|
|
|
[SerializeField]
|
|
[Tooltip("Controls whether to strip variants if the feature is disabled.")]
|
|
bool m_StripUnusedVariants = true;
|
|
|
|
[SerializeField]
|
|
[Tooltip("Controls whether Screen Coordinates Override shader variants are automatically stripped.")]
|
|
bool m_StripScreenCoordOverrideVariants = true;
|
|
#endregion
|
|
|
|
#region Data Accessors
|
|
|
|
/// <summary>
|
|
/// Controls whether to automatically strip post processing shader variants based on <see cref="VolumeProfile"/> components.
|
|
/// Stripping is done based on VolumeProfiles in project, their usage in scenes is not considered.
|
|
/// </summary>
|
|
public bool stripUnusedPostProcessingVariants
|
|
{
|
|
get => m_StripUnusedPostProcessingVariants;
|
|
set => this.SetValueAndNotify(ref m_StripUnusedPostProcessingVariants, value);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Controls whether to strip variants if the feature is disabled.
|
|
/// </summary>
|
|
public bool stripUnusedVariants
|
|
{
|
|
get => m_StripUnusedVariants;
|
|
set => this.SetValueAndNotify(ref m_StripUnusedVariants, value);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Controls whether Screen Coordinates Override shader variants are automatically stripped.
|
|
/// </summary>
|
|
public bool stripScreenCoordOverrideVariants
|
|
{
|
|
get => m_StripScreenCoordOverrideVariants;
|
|
set => this.SetValueAndNotify(ref m_StripScreenCoordOverrideVariants, value);
|
|
}
|
|
#endregion
|
|
}
|
|
}
|