Files
project-reset/Assets/Plugins/HTraceSSGI/Scripts/Data/Public/DenoisingSettings.cs
2025-12-31 12:44:11 -05:00

123 lines
2.9 KiB
C#

//pipelinedefine
#define H_URP
using System;
using HTraceSSGI.Scripts.Extensions;
using HTraceSSGI.Scripts.Globals;
using UnityEngine;
namespace HTraceSSGI.Scripts.Data.Public
{
[Serializable]
public class DenoisingSettings
{
// ----------------------------------------------- DENOISING -----------------------------------------------
[SerializeField]
public BrightnessClamp BrightnessClamp = BrightnessClamp.Automatic;
[SerializeField]
private float _maxValueBrightnessClamp
= 1.0f;
/// <summary>
///
/// </summary>
/// <value>[1.0;30.0]</value>
[HExtensions.HRangeAttribute(1.0f,30.0f)]
public float MaxValueBrightnessClamp
{
get => _maxValueBrightnessClamp;
set
{
if (Mathf.Abs(value - _maxValueBrightnessClamp) < Mathf.Epsilon)
return;
_maxValueBrightnessClamp = HExtensions.Clamp(value, typeof(DenoisingSettings), nameof(DenoisingSettings.MaxValueBrightnessClamp));
}
}
[SerializeField]
private float _maxDeviationBrightnessClamp
= 3.0f;
/// <summary>
///
/// </summary>
/// <value>[1.0;5.0]</value>
[HExtensions.HRangeAttribute(1.0f,5.0f)]
public float MaxDeviationBrightnessClamp
{
get => _maxDeviationBrightnessClamp;
set
{
if (Mathf.Abs(value - _maxDeviationBrightnessClamp) < Mathf.Epsilon)
return;
_maxDeviationBrightnessClamp = HExtensions.Clamp(value, typeof(DenoisingSettings), nameof(DenoisingSettings.MaxDeviationBrightnessClamp));
}
}
// ----------------------------------------------- ReSTIR Validation -----------------------------------------------
[SerializeField]
public bool HalfStepValidation = false;
[SerializeField]
public bool SpatialOcclusionValidation = true;
[SerializeField]
public bool TemporalLightingValidation = true;
[SerializeField]
public bool TemporalOcclusionValidation = true;
// ----------------------------------------------- Spatial -----------------------------------------------
[SerializeField]
private float _spatialRadius = 0.6f;
/// <summary>
///
/// </summary>
/// <value>[0.0;1.0]</value>
[HExtensions.HRangeAttribute(0.0f,1.0f)]
public float SpatialRadius
{
get => _spatialRadius;
set
{
if (Mathf.Abs(value - _spatialRadius) < Mathf.Epsilon)
return;
_spatialRadius = HExtensions.Clamp(value, typeof(DenoisingSettings), nameof(DenoisingSettings.SpatialRadius));
}
}
[SerializeField]
private float _adaptivity = 0.9f;
/// <summary>
///
/// </summary>
/// <value>[0.0;1.0]</value>
[HExtensions.HRangeAttribute(0.0f,1.0f)]
public float Adaptivity
{
get => _adaptivity;
set
{
if (Mathf.Abs(value - _adaptivity) < Mathf.Epsilon)
return;
_adaptivity = HExtensions.Clamp(value, typeof(DenoisingSettings), nameof(DenoisingSettings.Adaptivity));
}
}
[SerializeField]
public bool RecurrentBlur = false;
[SerializeField]
public bool FireflySuppression = true;
}
}