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.
63 lines
2.2 KiB
63 lines
2.2 KiB
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); |
|
} |
|
} |
|
}
|
|
|