using System;
using UnityEngine.Scripting.APIUpdating;
using UnityEngine.Serialization;
namespace UnityEngine.Rendering.LWRP
{
[Obsolete("LWRP -> Universal (UnityUpgradable) -> UnityEngine.Rendering.Universal.UniversalAdditionalCameraData", true)]
public class LWRPAdditionalCameraData
{
}
}
namespace UnityEngine.Rendering.Universal
{
[MovedFrom("UnityEngine.Rendering.LWRP")] public enum CameraOverrideOption
{
Off,
On,
UsePipelineSettings,
}
//[Obsolete("Renderer override is no longer used, renderers are referenced by index on the pipeline asset.")]
[MovedFrom("UnityEngine.Rendering.LWRP")] public enum RendererOverrideOption
{
Custom,
UsePipelineSettings,
}
public enum AntialiasingMode
{
None,
FastApproximateAntialiasing,
SubpixelMorphologicalAntiAliasing,
//TemporalAntialiasing
}
// Only used for SMAA right now
public enum AntialiasingQuality
{
Low,
Medium,
High
}
[DisallowMultipleComponent]
[RequireComponent(typeof(Camera))]
[ImageEffectAllowedInSceneView]
[MovedFrom("UnityEngine.Rendering.LWRP")] public class UniversalAdditionalCameraData : MonoBehaviour, ISerializationCallbackReceiver
{
[Tooltip("If enabled shadows will render for this camera.")]
[FormerlySerializedAs("renderShadows"), SerializeField]
bool m_RenderShadows = true;
[Tooltip("If enabled depth texture will render for this camera bound as _CameraDepthTexture.")]
[SerializeField]
CameraOverrideOption m_RequiresDepthTextureOption = CameraOverrideOption.UsePipelineSettings;
[Tooltip("If enabled opaque color texture will render for this camera and bound as _CameraOpaqueTexture.")]
[SerializeField]
CameraOverrideOption m_RequiresOpaqueTextureOption = CameraOverrideOption.UsePipelineSettings;
[SerializeField] int m_RendererIndex = -1;
[SerializeField] LayerMask m_VolumeLayerMask = 1; // "Default"
[SerializeField] Transform m_VolumeTrigger = null;
[SerializeField] bool m_RenderPostProcessing = false;
[SerializeField] AntialiasingMode m_Antialiasing = AntialiasingMode.None;
[SerializeField] AntialiasingQuality m_AntialiasingQuality = AntialiasingQuality.High;
[SerializeField] bool m_StopNaN = false;
[SerializeField] bool m_Dithering = false;
// Deprecated:
[FormerlySerializedAs("requiresDepthTexture"), SerializeField]
bool m_RequiresDepthTexture = false;
[FormerlySerializedAs("requiresColorTexture"), SerializeField]
bool m_RequiresColorTexture = false;
[HideInInspector] [SerializeField] float m_Version = 2;
public float version => m_Version;
public bool renderShadows
{
get => m_RenderShadows;
set => m_RenderShadows = value;
}
public CameraOverrideOption requiresDepthOption
{
get => m_RequiresDepthTextureOption;
set => m_RequiresDepthTextureOption = value;
}
public CameraOverrideOption requiresColorOption
{
get => m_RequiresOpaqueTextureOption;
set => m_RequiresOpaqueTextureOption = value;
}
public bool requiresDepthTexture
{
get
{
if (m_RequiresDepthTextureOption == CameraOverrideOption.UsePipelineSettings)
{
return UniversalRenderPipeline.asset.supportsCameraDepthTexture;
}
else
{
return m_RequiresDepthTextureOption == CameraOverrideOption.On;
}
}
set { m_RequiresDepthTextureOption = (value) ? CameraOverrideOption.On : CameraOverrideOption.Off; }
}
public bool requiresColorTexture
{
get
{
if (m_RequiresOpaqueTextureOption == CameraOverrideOption.UsePipelineSettings)
{
return UniversalRenderPipeline.asset.supportsCameraOpaqueTexture;
}
else
{
return m_RequiresOpaqueTextureOption == CameraOverrideOption.On;
}
}
set { m_RequiresOpaqueTextureOption = (value) ? CameraOverrideOption.On : CameraOverrideOption.Off; }
}
public ScriptableRenderer scriptableRenderer
{
get => UniversalRenderPipeline.asset.GetRenderer(m_RendererIndex);
}
///
/// Use this to set this Camera's current ScriptableRenderer to one listed on the Render Pipeline Asset. Takes an index that maps to the list on the Render Pipeline Asset.
///
/// The index that maps to the RendererData list on the currently assigned Render Pipeline Asset
public void SetRenderer(int index)
{
m_RendererIndex = index;
}
public LayerMask volumeLayerMask
{
get => m_VolumeLayerMask;
set => m_VolumeLayerMask = value;
}
public Transform volumeTrigger
{
get => m_VolumeTrigger;
set => m_VolumeTrigger = value;
}
public bool renderPostProcessing
{
get => m_RenderPostProcessing;
set => m_RenderPostProcessing = value;
}
public AntialiasingMode antialiasing
{
get => m_Antialiasing;
set => m_Antialiasing = value;
}
public AntialiasingQuality antialiasingQuality
{
get => m_AntialiasingQuality;
set => m_AntialiasingQuality = value;
}
public bool stopNaN
{
get => m_StopNaN;
set => m_StopNaN = value;
}
public bool dithering
{
get => m_Dithering;
set => m_Dithering = value;
}
public void OnBeforeSerialize()
{
}
public void OnAfterDeserialize()
{
if (version <= 1)
{
m_RequiresDepthTextureOption = (m_RequiresDepthTexture) ? CameraOverrideOption.On : CameraOverrideOption.Off;
m_RequiresOpaqueTextureOption = (m_RequiresColorTexture) ? CameraOverrideOption.On : CameraOverrideOption.Off;
}
}
}
}