You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.2 KiB
64 lines
2.2 KiB
4 years ago
|
namespace UnityEngine.PostProcessing
|
||
|
{
|
||
|
public sealed class ChromaticAberrationComponent : PostProcessingComponentRenderTexture<ChromaticAberrationModel>
|
||
|
{
|
||
|
static class Uniforms
|
||
|
{
|
||
|
internal static readonly int _ChromaticAberration_Amount = Shader.PropertyToID("_ChromaticAberration_Amount");
|
||
|
internal static readonly int _ChromaticAberration_Spectrum = Shader.PropertyToID("_ChromaticAberration_Spectrum");
|
||
|
}
|
||
|
|
||
|
Texture2D m_SpectrumLut;
|
||
|
|
||
|
public override bool active
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return model.enabled
|
||
|
&& model.settings.intensity > 0f
|
||
|
&& !context.interrupted;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public override void OnDisable()
|
||
|
{
|
||
|
GraphicsUtils.Destroy(m_SpectrumLut);
|
||
|
m_SpectrumLut = null;
|
||
|
}
|
||
|
|
||
|
public override void Prepare(Material uberMaterial)
|
||
|
{
|
||
|
var settings = model.settings;
|
||
|
var spectralLut = settings.spectralTexture;
|
||
|
|
||
|
if (spectralLut == null)
|
||
|
{
|
||
|
if (m_SpectrumLut == null)
|
||
|
{
|
||
|
m_SpectrumLut = new Texture2D(3, 1, TextureFormat.RGB24, false)
|
||
|
{
|
||
|
name = "Chromatic Aberration Spectrum Lookup",
|
||
|
filterMode = FilterMode.Bilinear,
|
||
|
wrapMode = TextureWrapMode.Clamp,
|
||
|
anisoLevel = 0,
|
||
|
hideFlags = HideFlags.DontSave
|
||
|
};
|
||
|
|
||
|
var pixels = new Color[3];
|
||
|
pixels[0] = new Color(1f, 0f, 0f);
|
||
|
pixels[1] = new Color(0f, 1f, 0f);
|
||
|
pixels[2] = new Color(0f, 0f, 1f);
|
||
|
m_SpectrumLut.SetPixels(pixels);
|
||
|
m_SpectrumLut.Apply();
|
||
|
}
|
||
|
|
||
|
spectralLut = m_SpectrumLut;
|
||
|
}
|
||
|
|
||
|
uberMaterial.EnableKeyword("CHROMATIC_ABERRATION");
|
||
|
uberMaterial.SetFloat(Uniforms._ChromaticAberration_Amount, settings.intensity * 0.03f);
|
||
|
uberMaterial.SetTexture(Uniforms._ChromaticAberration_Spectrum, spectralLut);
|
||
|
}
|
||
|
}
|
||
|
}
|