186 lines
12 KiB
C#
186 lines
12 KiB
C#
using System.Security.Cryptography;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Author: Colby-O
|
|
// File: CRTSettings.cs
|
|
//-----------------------------------------------------------------------
|
|
namespace ColbyO.VNTG.CRT
|
|
{
|
|
[System.Serializable, VolumeComponentMenu("VNTG/CRT Settings")]
|
|
public class CRTSettings : VolumeComponent, IPostProcessComponent
|
|
{
|
|
// Settings
|
|
public BoolParameter Enabled = new BoolParameter(true, overrideState: true);
|
|
public BoolParameter ShowInSceneView = new BoolParameter(false, overrideState: true);
|
|
|
|
// Screen
|
|
public BoolParameter EnableScreenSettings = new BoolParameter(true, overrideState: true);
|
|
public Vector2Parameter ScreenResolution = new Vector2Parameter(new Vector2(640f, 480f), overrideState: true);
|
|
public BoolParameter UseMaxFPS = new BoolParameter(false, overrideState: true);
|
|
public ClampedIntParameter RefreshRate = new ClampedIntParameter(50, 0, 360, overrideState: true);
|
|
public ClampedFloatParameter DecayRate = new ClampedFloatParameter(0.9f, 0f, 1f, overrideState: true);
|
|
public BoolParameter EnableInterlacedRendering = new BoolParameter(true, overrideState: true);
|
|
|
|
// Screen Shape
|
|
public BoolParameter EnableScreenBend = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter ScreenBend = new ClampedFloatParameter(4f, 0f, 100f, overrideState: true);
|
|
|
|
// Vignette
|
|
public BoolParameter EnableVignette = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter ScreenRoundness = new ClampedFloatParameter(1f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter VignetteOpacity = new ClampedFloatParameter(1f, 0f, 1f, overrideState: true);
|
|
|
|
// Scanlines
|
|
public BoolParameter EnableScanlines = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter ScanLineVerticalOpacity = new ClampedFloatParameter(0f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter ScanLineHorizontalOpacity = new ClampedFloatParameter(1f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter ScanLineVerticalSpeed = new ClampedFloatParameter(0.1f, -1f, 1f, overrideState: true);
|
|
public ClampedFloatParameter ScanLineHorizontalSpeed = new ClampedFloatParameter(-0.2f, -1f, 1f, overrideState: true);
|
|
public ClampedFloatParameter ScanLineStrength = new ClampedFloatParameter(0.2f, 0f, 1f, overrideState: true);
|
|
|
|
// Noise
|
|
public BoolParameter EnableNoise = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter NoiseScale = new ClampedFloatParameter(0.9f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter NoiseRBGOffsetX = new ClampedFloatParameter(0.4f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter NoiseRBGOffsetY = new ClampedFloatParameter(0.7f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter NoiseSpeed = new ClampedFloatParameter(0.1f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter NoiseFade = new ClampedFloatParameter(0.55f, 0f, 1f, overrideState: true);
|
|
|
|
// VHS
|
|
public BoolParameter EnableVhs = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter VhsSmear = new ClampedFloatParameter(0.95f, 0.01f, 1f, overrideState: true);
|
|
|
|
// Tracking
|
|
public BoolParameter EnableTrackerLine = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter TrackingSpeed = new ClampedFloatParameter(4f, 1f, 20f, overrideState: true);
|
|
public ClampedFloatParameter TrackingJitter = new ClampedFloatParameter(4f, 0f, 50f, overrideState: true);
|
|
|
|
// Glitch
|
|
public BoolParameter EnableGlitch = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter GlitchChance = new ClampedFloatParameter(0.2f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter GlitchLength = new ClampedFloatParameter(15f, 0f, 30f, overrideState: true);
|
|
|
|
// Signal Interference
|
|
public BoolParameter EnableSignalInterference = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter InterferenceFrequency = new ClampedFloatParameter(70f, 0f, 200f, overrideState: true);
|
|
public ClampedFloatParameter InterferenceAmplitude = new ClampedFloatParameter(0.25f, 0f, 1f, overrideState: true);
|
|
|
|
// Chromatic Aberration
|
|
public BoolParameter EnableChromaticAberration = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter ChromaticOffset = new ClampedFloatParameter(0f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter ChromaticOffsetSpeed = new ClampedFloatParameter(0.1f, 0f, 1f, overrideState: true);
|
|
|
|
// Subpixels
|
|
public BoolParameter EnableSubPixels = new BoolParameter(true, overrideState: true);
|
|
public EnumParameter<CRTSubPixelMode> SubPixelMode = new EnumParameter<CRTSubPixelMode>(CRTSubPixelMode.None, overrideState: true);
|
|
public ClampedFloatParameter SubPixelDensity = new ClampedFloatParameter(100f, 100f, 400f, overrideState: true);
|
|
|
|
// Unsharp
|
|
public BoolParameter EnableUnsharp = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter UnsharpAmount = new ClampedFloatParameter(1.5f, 0f, 5f, overrideState: true);
|
|
public ClampedFloatParameter UnsharpRadius = new ClampedFloatParameter(1f, 0f, 5f, overrideState: true);
|
|
public ClampedFloatParameter UnsharpThreshold = new ClampedFloatParameter(0.02f, 0f, 0.5f, overrideState: true);
|
|
|
|
// Color Clamp
|
|
public BoolParameter EnableClampColor = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter ClampBlack = new ClampedFloatParameter(0.05f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter ClampWhite = new ClampedFloatParameter(0.95f, 0f, 1f, overrideState: true);
|
|
public ColorParameter ShadowTint = new ColorParameter(new Color(0.7f, 0.6f, 0.9f), overrideState: true);
|
|
|
|
// Color Adjustment
|
|
public BoolParameter EnableColorAdjustment = new BoolParameter(true, overrideState: true);
|
|
public ClampedFloatParameter Gamma = new ClampedFloatParameter(0.374f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter Brightness = new ClampedFloatParameter(0.5f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter Contrast = new ClampedFloatParameter(0.5f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter Saturation = new ClampedFloatParameter(0.5f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter Hue = new ClampedFloatParameter(0f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter RedShift = new ClampedFloatParameter(0f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter BlueShift = new ClampedFloatParameter(0f, 0f, 1f, overrideState: true);
|
|
public ClampedFloatParameter GreenShift = new ClampedFloatParameter(0f, 0f, 1f, overrideState: true);
|
|
public BoolParameter IsMonochrome = new BoolParameter(false, overrideState: true);
|
|
|
|
public bool IsActive() => Enabled.value;
|
|
public bool IsTileCompatible() => false;
|
|
|
|
private void OnValidate()
|
|
{
|
|
if (Enabled != null) Enabled.overrideState = true;
|
|
if (ShowInSceneView != null) ShowInSceneView.overrideState = true;
|
|
|
|
if (EnableScreenSettings != null) EnableScreenSettings.overrideState = true;
|
|
if (ScreenResolution != null) ScreenResolution.overrideState = true;
|
|
if (UseMaxFPS != null) UseMaxFPS.overrideState = true;
|
|
if (RefreshRate != null) RefreshRate.overrideState = true;
|
|
if (DecayRate != null) DecayRate.overrideState = true;
|
|
if (EnableInterlacedRendering != null) EnableInterlacedRendering.overrideState = true;
|
|
|
|
if (EnableScreenBend != null) EnableScreenBend.overrideState = true;
|
|
if (ScreenBend != null) ScreenBend.overrideState = true;
|
|
|
|
if (EnableVignette != null) EnableVignette.overrideState = true;
|
|
if (ScreenRoundness != null) ScreenRoundness.overrideState = true;
|
|
if (VignetteOpacity != null) VignetteOpacity.overrideState = true;
|
|
|
|
if (EnableScanlines != null) EnableScanlines.overrideState = true;
|
|
if (ScanLineVerticalOpacity != null) ScanLineVerticalOpacity.overrideState = true;
|
|
if (ScanLineHorizontalOpacity != null) ScanLineHorizontalOpacity.overrideState = true;
|
|
if (ScanLineVerticalSpeed != null) ScanLineVerticalSpeed.overrideState = true;
|
|
if (ScanLineHorizontalSpeed != null) ScanLineHorizontalSpeed.overrideState = true;
|
|
if (ScanLineStrength != null) ScanLineStrength.overrideState = true;
|
|
|
|
if (EnableNoise != null) EnableNoise.overrideState = true;
|
|
if (NoiseScale != null) NoiseScale.overrideState = true;
|
|
if (NoiseRBGOffsetX != null) NoiseRBGOffsetX.overrideState = true;
|
|
if (NoiseRBGOffsetY != null) NoiseRBGOffsetY.overrideState = true;
|
|
if (NoiseSpeed != null) NoiseSpeed.overrideState = true;
|
|
if (NoiseFade != null) NoiseFade.overrideState = true;
|
|
|
|
if (EnableVhs != null) EnableVhs.overrideState = true;
|
|
if (VhsSmear != null) VhsSmear.overrideState = true;
|
|
|
|
if (EnableTrackerLine != null) EnableTrackerLine.overrideState = true;
|
|
if (TrackingSpeed != null) TrackingSpeed.overrideState = true;
|
|
if (TrackingJitter != null) TrackingJitter.overrideState = true;
|
|
|
|
if (EnableGlitch != null) EnableGlitch.overrideState = true;
|
|
if (GlitchChance != null) GlitchChance.overrideState = true;
|
|
if (GlitchLength != null) GlitchLength.overrideState = true;
|
|
|
|
if (EnableSignalInterference != null) EnableSignalInterference.overrideState = true;
|
|
if (InterferenceFrequency != null) InterferenceFrequency.overrideState = true;
|
|
if (InterferenceAmplitude != null) InterferenceAmplitude.overrideState = true;
|
|
|
|
if (EnableChromaticAberration != null) EnableChromaticAberration.overrideState = true;
|
|
if (ChromaticOffset != null) ChromaticOffset.overrideState = true;
|
|
if (ChromaticOffsetSpeed != null) ChromaticOffsetSpeed.overrideState = true;
|
|
|
|
if (EnableSubPixels != null) EnableSubPixels.overrideState = true;
|
|
if (SubPixelMode != null) SubPixelMode.overrideState = true;
|
|
if (SubPixelDensity != null) SubPixelDensity.overrideState = true;
|
|
|
|
if (EnableUnsharp != null) EnableUnsharp.overrideState = true;
|
|
if (UnsharpAmount != null) UnsharpAmount.overrideState = true;
|
|
if (UnsharpRadius != null) UnsharpRadius.overrideState = true;
|
|
if (UnsharpThreshold != null) UnsharpThreshold.overrideState = true;
|
|
|
|
if (EnableClampColor != null) EnableClampColor.overrideState = true;
|
|
if (ClampBlack != null) ClampBlack.overrideState = true;
|
|
if (ClampWhite != null) ClampWhite.overrideState = true;
|
|
if (ShadowTint != null) ShadowTint.overrideState = true;
|
|
|
|
if (EnableColorAdjustment != null) EnableColorAdjustment.overrideState = true;
|
|
if (Gamma != null) Gamma.overrideState = true;
|
|
if (Brightness != null) Brightness.overrideState = true;
|
|
if (Contrast != null) Contrast.overrideState = true;
|
|
if (Saturation != null) Saturation.overrideState = true;
|
|
if (Hue != null) Hue.overrideState = true;
|
|
if (RedShift != null) RedShift.overrideState = true;
|
|
if (BlueShift != null) BlueShift.overrideState = true;
|
|
if (GreenShift != null) GreenShift.overrideState = true;
|
|
if (IsMonochrome != null) IsMonochrome.overrideState = true;
|
|
}
|
|
}
|
|
}
|