111
This commit is contained in:
242
Assets/ThirdParty/PostProcessing/Runtime/Models/AntialiasingModel.cs
vendored
Normal file
242
Assets/ThirdParty/PostProcessing/Runtime/Models/AntialiasingModel.cs
vendored
Normal file
@@ -0,0 +1,242 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.PostProcessing
|
||||
{
|
||||
[Serializable]
|
||||
public class AntialiasingModel : PostProcessingModel
|
||||
{
|
||||
public enum Method
|
||||
{
|
||||
Fxaa,
|
||||
Taa
|
||||
}
|
||||
|
||||
// Most settings aren't exposed to the user anymore, presets are enough. Still, I'm leaving
|
||||
// the tooltip attributes in case an user wants to customize each preset.
|
||||
|
||||
#region FXAA Settings
|
||||
public enum FxaaPreset
|
||||
{
|
||||
ExtremePerformance,
|
||||
Performance,
|
||||
Default,
|
||||
Quality,
|
||||
ExtremeQuality
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public struct FxaaQualitySettings
|
||||
{
|
||||
[Tooltip("The amount of desired sub-pixel aliasing removal. Effects the sharpeness of the output.")]
|
||||
[Range(0f, 1f)]
|
||||
public float subpixelAliasingRemovalAmount;
|
||||
|
||||
[Tooltip("The minimum amount of local contrast required to qualify a region as containing an edge.")]
|
||||
[Range(0.063f, 0.333f)]
|
||||
public float edgeDetectionThreshold;
|
||||
|
||||
[Tooltip("Local contrast adaptation value to disallow the algorithm from executing on the darker regions.")]
|
||||
[Range(0f, 0.0833f)]
|
||||
public float minimumRequiredLuminance;
|
||||
|
||||
public static FxaaQualitySettings[] presets =
|
||||
{
|
||||
// ExtremePerformance
|
||||
new FxaaQualitySettings
|
||||
{
|
||||
subpixelAliasingRemovalAmount = 0f,
|
||||
edgeDetectionThreshold = 0.333f,
|
||||
minimumRequiredLuminance = 0.0833f
|
||||
},
|
||||
|
||||
// Performance
|
||||
new FxaaQualitySettings
|
||||
{
|
||||
subpixelAliasingRemovalAmount = 0.25f,
|
||||
edgeDetectionThreshold = 0.25f,
|
||||
minimumRequiredLuminance = 0.0833f
|
||||
},
|
||||
|
||||
// Default
|
||||
new FxaaQualitySettings
|
||||
{
|
||||
subpixelAliasingRemovalAmount = 0.75f,
|
||||
edgeDetectionThreshold = 0.166f,
|
||||
minimumRequiredLuminance = 0.0833f
|
||||
},
|
||||
|
||||
// Quality
|
||||
new FxaaQualitySettings
|
||||
{
|
||||
subpixelAliasingRemovalAmount = 1f,
|
||||
edgeDetectionThreshold = 0.125f,
|
||||
minimumRequiredLuminance = 0.0625f
|
||||
},
|
||||
|
||||
// ExtremeQuality
|
||||
new FxaaQualitySettings
|
||||
{
|
||||
subpixelAliasingRemovalAmount = 1f,
|
||||
edgeDetectionThreshold = 0.063f,
|
||||
minimumRequiredLuminance = 0.0312f
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public struct FxaaConsoleSettings
|
||||
{
|
||||
[Tooltip("The amount of spread applied to the sampling coordinates while sampling for subpixel information.")]
|
||||
[Range(0.33f, 0.5f)]
|
||||
public float subpixelSpreadAmount;
|
||||
|
||||
[Tooltip("This value dictates how sharp the edges in the image are kept; a higher value implies sharper edges.")]
|
||||
[Range(2f, 8f)]
|
||||
public float edgeSharpnessAmount;
|
||||
|
||||
[Tooltip("The minimum amount of local contrast required to qualify a region as containing an edge.")]
|
||||
[Range(0.125f, 0.25f)]
|
||||
public float edgeDetectionThreshold;
|
||||
|
||||
[Tooltip("Local contrast adaptation value to disallow the algorithm from executing on the darker regions.")]
|
||||
[Range(0.04f, 0.06f)]
|
||||
public float minimumRequiredLuminance;
|
||||
|
||||
public static FxaaConsoleSettings[] presets =
|
||||
{
|
||||
// ExtremePerformance
|
||||
new FxaaConsoleSettings
|
||||
{
|
||||
subpixelSpreadAmount = 0.33f,
|
||||
edgeSharpnessAmount = 8f,
|
||||
edgeDetectionThreshold = 0.25f,
|
||||
minimumRequiredLuminance = 0.06f
|
||||
},
|
||||
|
||||
// Performance
|
||||
new FxaaConsoleSettings
|
||||
{
|
||||
subpixelSpreadAmount = 0.33f,
|
||||
edgeSharpnessAmount = 8f,
|
||||
edgeDetectionThreshold = 0.125f,
|
||||
minimumRequiredLuminance = 0.06f
|
||||
},
|
||||
|
||||
// Default
|
||||
new FxaaConsoleSettings
|
||||
{
|
||||
subpixelSpreadAmount = 0.5f,
|
||||
edgeSharpnessAmount = 8f,
|
||||
edgeDetectionThreshold = 0.125f,
|
||||
minimumRequiredLuminance = 0.05f
|
||||
},
|
||||
|
||||
// Quality
|
||||
new FxaaConsoleSettings
|
||||
{
|
||||
subpixelSpreadAmount = 0.5f,
|
||||
edgeSharpnessAmount = 4f,
|
||||
edgeDetectionThreshold = 0.125f,
|
||||
minimumRequiredLuminance = 0.04f
|
||||
},
|
||||
|
||||
// ExtremeQuality
|
||||
new FxaaConsoleSettings
|
||||
{
|
||||
subpixelSpreadAmount = 0.5f,
|
||||
edgeSharpnessAmount = 2f,
|
||||
edgeDetectionThreshold = 0.125f,
|
||||
minimumRequiredLuminance = 0.04f
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public struct FxaaSettings
|
||||
{
|
||||
public FxaaPreset preset;
|
||||
|
||||
public static FxaaSettings defaultSettings
|
||||
{
|
||||
get
|
||||
{
|
||||
return new FxaaSettings
|
||||
{
|
||||
preset = FxaaPreset.Default
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region TAA Settings
|
||||
[Serializable]
|
||||
public struct TaaSettings
|
||||
{
|
||||
[Tooltip("The diameter (in texels) inside which jitter samples are spread. Smaller values result in crisper but more aliased output, while larger values result in more stable but blurrier output.")]
|
||||
[Range(0.1f, 1f)]
|
||||
public float jitterSpread;
|
||||
|
||||
[Tooltip("Controls the amount of sharpening applied to the color buffer.")]
|
||||
[Range(0f, 3f)]
|
||||
public float sharpen;
|
||||
|
||||
[Tooltip("The blend coefficient for a stationary fragment. Controls the percentage of history sample blended into the final color.")]
|
||||
[Range(0f, 0.99f)]
|
||||
public float stationaryBlending;
|
||||
|
||||
[Tooltip("The blend coefficient for a fragment with significant motion. Controls the percentage of history sample blended into the final color.")]
|
||||
[Range(0f, 0.99f)]
|
||||
public float motionBlending;
|
||||
|
||||
public static TaaSettings defaultSettings
|
||||
{
|
||||
get
|
||||
{
|
||||
return new TaaSettings
|
||||
{
|
||||
jitterSpread = 0.75f,
|
||||
sharpen = 0.3f,
|
||||
stationaryBlending = 0.95f,
|
||||
motionBlending = 0.85f
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
[Serializable]
|
||||
public struct Settings
|
||||
{
|
||||
public Method method;
|
||||
public FxaaSettings fxaaSettings;
|
||||
public TaaSettings taaSettings;
|
||||
|
||||
public static Settings defaultSettings
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Settings
|
||||
{
|
||||
method = Method.Fxaa,
|
||||
fxaaSettings = FxaaSettings.defaultSettings,
|
||||
taaSettings = TaaSettings.defaultSettings
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
Settings m_Settings = Settings.defaultSettings;
|
||||
public Settings settings
|
||||
{
|
||||
get { return m_Settings; }
|
||||
set { m_Settings = value; }
|
||||
}
|
||||
|
||||
public override void Reset()
|
||||
{
|
||||
m_Settings = Settings.defaultSettings;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user