1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- using System;
- namespace UnityEngine.PostProcessing
- {
- public sealed class ChromaticAberrationComponent : PostProcessingComponentRenderTexture<ChromaticAberrationModel>
- {
- public override bool active
- {
- get
- {
- return base.model.enabled && base.model.settings.intensity > 0f && !this.context.interrupted;
- }
- }
- public override void OnDisable()
- {
- GraphicsUtils.Destroy(this.m_SpectrumLut);
- this.m_SpectrumLut = null;
- }
- public override void Prepare(Material uberMaterial)
- {
- ChromaticAberrationModel.Settings settings = base.model.settings;
- Texture2D texture2D = settings.spectralTexture;
- if (texture2D == null)
- {
- if (this.m_SpectrumLut == null)
- {
- this.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
- };
- Color[] pixels = new Color[]
- {
- new Color(1f, 0f, 0f),
- new Color(0f, 1f, 0f),
- new Color(0f, 0f, 1f)
- };
- this.m_SpectrumLut.SetPixels(pixels);
- this.m_SpectrumLut.Apply();
- }
- texture2D = this.m_SpectrumLut;
- }
- uberMaterial.EnableKeyword("CHROMATIC_ABERRATION");
- uberMaterial.SetFloat(ChromaticAberrationComponent.Uniforms._ChromaticAberration_Amount, settings.intensity * 0.03f);
- uberMaterial.SetTexture(ChromaticAberrationComponent.Uniforms._ChromaticAberration_Spectrum, texture2D);
- }
- private Texture2D m_SpectrumLut;
- private static class Uniforms
- {
- internal static readonly int _ChromaticAberration_Amount = Shader.PropertyToID("_ChromaticAberration_Amount");
- internal static readonly int _ChromaticAberration_Spectrum = Shader.PropertyToID("_ChromaticAberration_Spectrum");
- }
- }
- }
|