﻿using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;

[System.Serializable, VolumeComponentMenu("Snapshot Shaders Pro/Fancy Neon")]
public sealed class FancyNeonSettings : VolumeComponent, IPostProcessComponent
{
    [Tooltip("Is the effect enabled?")]
    public BoolParameter enabled = new BoolParameter(false);

    [Tooltip("Threshold for colour-based edge detection.")]
    public ClampedFloatParameter colorSensitivity = new ClampedFloatParameter(0.1f, 0.0f, 1.0f);

    [Tooltip("Strength of colour-based edges.")]
    public ClampedFloatParameter colorStrength = new ClampedFloatParameter(0.5f, 0.0f, 1.0f);

    [Tooltip("Threshold for depth-based edge detection.")]
    public ClampedFloatParameter depthSensitivity = new ClampedFloatParameter(0.01f, 0.0f, 1.0f);

    [Tooltip("Strength of depth-based edges.")]
    public ClampedFloatParameter depthStrength = new ClampedFloatParameter(0.75f, 0.0f, 1.0f);

    [Tooltip("Threshold for normal-based edge detection.")]
    public ClampedFloatParameter normalSensitivity = new ClampedFloatParameter(0.1f, 0.0f, 1.0f);

    [Tooltip("Strength of normal-based edges.")]
    public ClampedFloatParameter normalStrength = new ClampedFloatParameter(0.75f, 0.0f, 1.0f);

    [Tooltip("Pixels past this depth threshold will not be edge-detected.")]
    public ClampedFloatParameter depthThreshold = new ClampedFloatParameter(0.99f, 0.0f, 1.01f);

    [Tooltip("Saturation values lower than this will be clamped to this.")]
    public ClampedFloatParameter saturationFloor = new ClampedFloatParameter(0.75f, 0.0f, 1.0f);

    [Tooltip("Lightness/value values lower than this will be clamped to this.")]
    public ClampedFloatParameter lightnessFloor = new ClampedFloatParameter(0.75f, 0.0f, 1.0f);

    public bool IsActive()
    {
        return enabled.value == true && active;
    }

    public bool IsTileCompatible()
    {
        return false;
    }
}
