using UnityEngine;
using UnityEngine.Rendering;
#if ENABLE_UPSCALER_FRAMEWORK && ENABLE_NVIDIA && ENABLE_NVIDIA_MODULE
using UnityEngine.NVIDIA;
#endif
using System;
#if ENABLE_UPSCALER_FRAMEWORK && ENABLE_NVIDIA && ENABLE_NVIDIA_MODULE
[Serializable]
public class DLSSOptions : UpscalerOptions
{
#region BACKING_FIELDS
[SerializeField]
[Tooltip("Selects a performance quality setting for NVIDIA Deep Learning Super Sampling (DLSS).")]
private DLSSQuality m_DLSSQualityMode = DLSSQuality.MaximumQuality;
[Header("Render Presets")]
[SerializeField]
[Tooltip("DLSS will use the specified render preset for the Quality mode.")]
private DLSSPreset m_DLSSRenderPresetQuality;
[SerializeField]
[Tooltip("DLSS will use the specified render preset for the Balanced mode.")]
private DLSSPreset m_DLSSRenderPresetBalanced;
[SerializeField]
[Tooltip("DLSS will use the specified render preset for the Performance mode.")]
private DLSSPreset m_DLSSRenderPresetPerformance;
[SerializeField]
[Tooltip("DLSS will use the specified render preset for the Ultra Performance mode.")]
private DLSSPreset m_DLSSRenderPresetUltraPerformance;
[SerializeField]
[Tooltip("DLSS will use the specified render preset for the DLAA mode.")]
private DLSSPreset m_DLSSRenderPresetDLAA;
#endregion
#region PROPERTIES
///
/// Gets or sets the performance quality setting for NVIDIA DLSS.
///
public DLSSQuality dlssQualityMode
{
get { return m_DLSSQualityMode; }
set { m_DLSSQualityMode = value; }
}
///
/// The specific render preset to use when DLSS is in Quality mode.
///
public DLSSPreset dlssRenderPresetQuality
{
get { return m_DLSSRenderPresetQuality; }
set { m_DLSSRenderPresetQuality = value; }
}
///
/// The specific render preset to use when DLSS is in Balanced mode.
///
public DLSSPreset dlssRenderPresetBalanced
{
get { return m_DLSSRenderPresetBalanced; }
set { m_DLSSRenderPresetBalanced = value; }
}
///
/// The specific render preset to use when DLSS is in Performance mode.
///
public DLSSPreset dlssRenderPresetPerformance
{
get { return m_DLSSRenderPresetPerformance; }
set { m_DLSSRenderPresetPerformance = value; }
}
///
/// The specific render preset to use when DLSS is in Ultra Performance mode.
///
public DLSSPreset dlssRenderPresetUltraPerformance
{
get { return m_DLSSRenderPresetUltraPerformance; }
set { m_DLSSRenderPresetUltraPerformance = value; }
}
///
/// The specific render preset to use when DLSS is in DLAA mode.
///
public DLSSPreset dlssRenderPresetDLAA
{
get { return m_DLSSRenderPresetDLAA; }
set { m_DLSSRenderPresetDLAA = value; }
}
#endregion
///
/// Checks if the settings of this object match another instance.
///
public bool IsSame(DLSSOptions other)
{
if (other == null)
return false;
return resolutionMode == other.resolutionMode &&
m_DLSSQualityMode == other.m_DLSSQualityMode &&
m_DLSSRenderPresetQuality == other.m_DLSSRenderPresetQuality &&
m_DLSSRenderPresetBalanced == other.m_DLSSRenderPresetBalanced &&
m_DLSSRenderPresetPerformance == other.m_DLSSRenderPresetPerformance &&
m_DLSSRenderPresetUltraPerformance == other.m_DLSSRenderPresetUltraPerformance &&
m_DLSSRenderPresetDLAA == other.m_DLSSRenderPresetDLAA;
}
///
/// Shallow copies values from another DLSSOptions instance into this one.
///
public void CopyFrom(DLSSOptions other)
{
if (other == null)
return;
resolutionMode = other.resolutionMode;
m_DLSSQualityMode = other.m_DLSSQualityMode;
m_DLSSRenderPresetQuality = other.m_DLSSRenderPresetQuality;
m_DLSSRenderPresetBalanced = other.m_DLSSRenderPresetBalanced;
m_DLSSRenderPresetPerformance = other.m_DLSSRenderPresetPerformance;
m_DLSSRenderPresetUltraPerformance = other.m_DLSSRenderPresetUltraPerformance;
m_DLSSRenderPresetDLAA = other.m_DLSSRenderPresetDLAA;
}
}
#endif // ENABLE_UPSCALER_FRAMEWORK && ENABLE_NVIDIA && ENABLE_NVIDIA_MODULE