377 lines
11 KiB
C#
377 lines
11 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace UnityStandardAssets.CinematicEffects
|
|
{
|
|
// Token: 0x02000032 RID: 50
|
|
[ExecuteInEditMode]
|
|
[RequireComponent(typeof(Camera))]
|
|
[AddComponentMenu("Image Effects/Cinematic/Lens Aberrations")]
|
|
public class LensAberrations : MonoBehaviour
|
|
{
|
|
// Token: 0x17000036 RID: 54
|
|
// (get) Token: 0x06000087 RID: 135 RVA: 0x000054D7 File Offset: 0x000038D7
|
|
public Shader shader
|
|
{
|
|
get
|
|
{
|
|
if (this.m_Shader == null)
|
|
{
|
|
this.m_Shader = Shader.Find("Hidden/LensAberrations");
|
|
}
|
|
return this.m_Shader;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000037 RID: 55
|
|
// (get) Token: 0x06000088 RID: 136 RVA: 0x00005500 File Offset: 0x00003900
|
|
public Material material
|
|
{
|
|
get
|
|
{
|
|
if (this.m_Material == null)
|
|
{
|
|
this.m_Material = ImageEffectHelper.CheckShaderAndCreateMaterial(this.shader);
|
|
}
|
|
return this.m_Material;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000089 RID: 137 RVA: 0x0000552A File Offset: 0x0000392A
|
|
private void OnEnable()
|
|
{
|
|
if (!ImageEffectHelper.IsSupported(this.shader, false, false, this))
|
|
{
|
|
base.enabled = false;
|
|
}
|
|
this.m_RTU = new RenderTextureUtility();
|
|
}
|
|
|
|
// Token: 0x0600008A RID: 138 RVA: 0x00005551 File Offset: 0x00003951
|
|
private void OnDisable()
|
|
{
|
|
if (this.m_Material != null)
|
|
{
|
|
global::UnityEngine.Object.DestroyImmediate(this.m_Material);
|
|
}
|
|
this.m_Material = null;
|
|
this.m_RTU.ReleaseAllTemporaryRenderTextures();
|
|
}
|
|
|
|
// Token: 0x0600008B RID: 139 RVA: 0x00005584 File Offset: 0x00003984
|
|
private void OnRenderImage(RenderTexture source, RenderTexture destination)
|
|
{
|
|
if (!this.vignette.enabled && !this.chromaticAberration.enabled && !this.distortion.enabled)
|
|
{
|
|
Graphics.Blit(source, destination);
|
|
return;
|
|
}
|
|
this.material.shaderKeywords = null;
|
|
if (this.distortion.enabled)
|
|
{
|
|
float num = 1.6f * Math.Max(Mathf.Abs(this.distortion.amount), 1f);
|
|
float num2 = 0.017453292f * Math.Min(160f, num);
|
|
float num3 = 2f * Mathf.Tan(num2 * 0.5f);
|
|
Vector4 vector = new Vector4(this.distortion.centerX, this.distortion.centerY, Mathf.Max(this.distortion.amountX, 0.0001f), Mathf.Max(this.distortion.amountY, 0.0001f));
|
|
Vector3 vector2 = new Vector3((this.distortion.amount < 0f) ? (1f / num2) : num2, num3, 1f / this.distortion.scale);
|
|
this.material.EnableKeyword((this.distortion.amount < 0f) ? "UNDISTORT" : "DISTORT");
|
|
this.material.SetVector("_DistCenterScale", vector);
|
|
this.material.SetVector("_DistAmount", vector2);
|
|
}
|
|
if (this.chromaticAberration.enabled)
|
|
{
|
|
this.material.EnableKeyword("CHROMATIC_ABERRATION");
|
|
Vector4 vector3 = new Vector4(this.chromaticAberration.color.r, this.chromaticAberration.color.g, this.chromaticAberration.color.b, this.chromaticAberration.amount * 0.001f);
|
|
this.material.SetVector("_ChromaticAberration", vector3);
|
|
}
|
|
if (this.vignette.enabled)
|
|
{
|
|
this.material.SetColor("_VignetteColor", this.vignette.color);
|
|
if (this.vignette.blur > 0f)
|
|
{
|
|
int num4 = source.width / 2;
|
|
int num5 = source.height / 2;
|
|
RenderTexture temporaryRenderTexture = this.m_RTU.GetTemporaryRenderTexture(num4, num5, 0, source.format, FilterMode.Bilinear);
|
|
RenderTexture temporaryRenderTexture2 = this.m_RTU.GetTemporaryRenderTexture(num4, num5, 0, source.format, FilterMode.Bilinear);
|
|
this.material.SetVector("_BlurPass", new Vector2(1f / (float)num4, 0f));
|
|
Graphics.Blit(source, temporaryRenderTexture, this.material, 0);
|
|
if (this.distortion.enabled)
|
|
{
|
|
this.material.DisableKeyword("DISTORT");
|
|
this.material.DisableKeyword("UNDISTORT");
|
|
}
|
|
this.material.SetVector("_BlurPass", new Vector2(0f, 1f / (float)num5));
|
|
Graphics.Blit(temporaryRenderTexture, temporaryRenderTexture2, this.material, 0);
|
|
this.material.SetVector("_BlurPass", new Vector2(1f / (float)num4, 0f));
|
|
Graphics.Blit(temporaryRenderTexture2, temporaryRenderTexture, this.material, 0);
|
|
this.material.SetVector("_BlurPass", new Vector2(0f, 1f / (float)num5));
|
|
Graphics.Blit(temporaryRenderTexture, temporaryRenderTexture2, this.material, 0);
|
|
this.material.SetTexture("_BlurTex", temporaryRenderTexture2);
|
|
this.material.SetFloat("_VignetteBlur", this.vignette.blur * 3f);
|
|
this.material.EnableKeyword("VIGNETTE_BLUR");
|
|
if (this.distortion.enabled)
|
|
{
|
|
this.material.EnableKeyword((this.distortion.amount < 0f) ? "UNDISTORT" : "DISTORT");
|
|
}
|
|
}
|
|
if (this.vignette.desaturate > 0f)
|
|
{
|
|
this.material.EnableKeyword("VIGNETTE_DESAT");
|
|
this.material.SetFloat("_VignetteDesat", 1f - this.vignette.desaturate);
|
|
}
|
|
this.material.SetVector("_VignetteCenter", this.vignette.center);
|
|
if (Mathf.Approximately(this.vignette.roundness, 1f))
|
|
{
|
|
this.material.EnableKeyword("VIGNETTE_CLASSIC");
|
|
this.material.SetVector("_VignetteSettings", new Vector2(this.vignette.intensity, this.vignette.smoothness));
|
|
}
|
|
else
|
|
{
|
|
this.material.EnableKeyword("VIGNETTE_FILMIC");
|
|
float num6 = (1f - this.vignette.roundness) * 6f + this.vignette.roundness;
|
|
this.material.SetVector("_VignetteSettings", new Vector3(this.vignette.intensity, this.vignette.smoothness, num6));
|
|
}
|
|
}
|
|
int num7 = 0;
|
|
if (this.vignette.enabled && this.chromaticAberration.enabled && this.distortion.enabled)
|
|
{
|
|
num7 = 7;
|
|
}
|
|
else if (this.vignette.enabled && this.chromaticAberration.enabled)
|
|
{
|
|
num7 = 5;
|
|
}
|
|
else if (this.vignette.enabled && this.distortion.enabled)
|
|
{
|
|
num7 = 6;
|
|
}
|
|
else if (this.chromaticAberration.enabled && this.distortion.enabled)
|
|
{
|
|
num7 = 4;
|
|
}
|
|
else if (this.vignette.enabled)
|
|
{
|
|
num7 = 3;
|
|
}
|
|
else if (this.chromaticAberration.enabled)
|
|
{
|
|
num7 = 1;
|
|
}
|
|
else if (this.distortion.enabled)
|
|
{
|
|
num7 = 2;
|
|
}
|
|
Graphics.Blit(source, destination, this.material, num7);
|
|
this.m_RTU.ReleaseAllTemporaryRenderTextures();
|
|
}
|
|
|
|
// Token: 0x040000DD RID: 221
|
|
[LensAberrations.SettingsGroup]
|
|
public LensAberrations.DistortionSettings distortion = LensAberrations.DistortionSettings.defaultSettings;
|
|
|
|
// Token: 0x040000DE RID: 222
|
|
[LensAberrations.SettingsGroup]
|
|
public LensAberrations.VignetteSettings vignette = LensAberrations.VignetteSettings.defaultSettings;
|
|
|
|
// Token: 0x040000DF RID: 223
|
|
[LensAberrations.SettingsGroup]
|
|
public LensAberrations.ChromaticAberrationSettings chromaticAberration = LensAberrations.ChromaticAberrationSettings.defaultSettings;
|
|
|
|
// Token: 0x040000E0 RID: 224
|
|
[SerializeField]
|
|
private Shader m_Shader;
|
|
|
|
// Token: 0x040000E1 RID: 225
|
|
private Material m_Material;
|
|
|
|
// Token: 0x040000E2 RID: 226
|
|
private RenderTextureUtility m_RTU;
|
|
|
|
// Token: 0x02000033 RID: 51
|
|
[AttributeUsage(AttributeTargets.Field)]
|
|
public class SettingsGroup : Attribute
|
|
{
|
|
}
|
|
|
|
// Token: 0x02000034 RID: 52
|
|
[AttributeUsage(AttributeTargets.Field)]
|
|
public class AdvancedSetting : Attribute
|
|
{
|
|
}
|
|
|
|
// Token: 0x02000035 RID: 53
|
|
[Serializable]
|
|
public struct DistortionSettings
|
|
{
|
|
// Token: 0x17000038 RID: 56
|
|
// (get) Token: 0x0600008E RID: 142 RVA: 0x00005BE4 File Offset: 0x00003FE4
|
|
public static LensAberrations.DistortionSettings defaultSettings
|
|
{
|
|
get
|
|
{
|
|
return new LensAberrations.DistortionSettings
|
|
{
|
|
enabled = false,
|
|
amount = 0f,
|
|
centerX = 0f,
|
|
centerY = 0f,
|
|
amountX = 1f,
|
|
amountY = 1f,
|
|
scale = 1f
|
|
};
|
|
}
|
|
}
|
|
|
|
// Token: 0x040000E3 RID: 227
|
|
public bool enabled;
|
|
|
|
// Token: 0x040000E4 RID: 228
|
|
[Range(-100f, 100f)]
|
|
[Tooltip("Distortion amount.")]
|
|
public float amount;
|
|
|
|
// Token: 0x040000E5 RID: 229
|
|
[Range(-1f, 1f)]
|
|
[Tooltip("Distortion center point (X axis).")]
|
|
public float centerX;
|
|
|
|
// Token: 0x040000E6 RID: 230
|
|
[Range(-1f, 1f)]
|
|
[Tooltip("Distortion center point (Y axis).")]
|
|
public float centerY;
|
|
|
|
// Token: 0x040000E7 RID: 231
|
|
[Range(0f, 1f)]
|
|
[Tooltip("Amount multiplier on X axis. Set it to 0 to disable distortion on this axis.")]
|
|
public float amountX;
|
|
|
|
// Token: 0x040000E8 RID: 232
|
|
[Range(0f, 1f)]
|
|
[Tooltip("Amount multiplier on Y axis. Set it to 0 to disable distortion on this axis.")]
|
|
public float amountY;
|
|
|
|
// Token: 0x040000E9 RID: 233
|
|
[Range(0.01f, 5f)]
|
|
[Tooltip("Global screen scaling.")]
|
|
public float scale;
|
|
}
|
|
|
|
// Token: 0x02000036 RID: 54
|
|
[Serializable]
|
|
public struct VignetteSettings
|
|
{
|
|
// Token: 0x17000039 RID: 57
|
|
// (get) Token: 0x0600008F RID: 143 RVA: 0x00005C4C File Offset: 0x0000404C
|
|
public static LensAberrations.VignetteSettings defaultSettings
|
|
{
|
|
get
|
|
{
|
|
return new LensAberrations.VignetteSettings
|
|
{
|
|
enabled = false,
|
|
color = new Color(0f, 0f, 0f, 1f),
|
|
center = new Vector2(0.5f, 0.5f),
|
|
intensity = 1.4f,
|
|
smoothness = 0.8f,
|
|
roundness = 1f,
|
|
blur = 0f,
|
|
desaturate = 0f
|
|
};
|
|
}
|
|
}
|
|
|
|
// Token: 0x040000EA RID: 234
|
|
public bool enabled;
|
|
|
|
// Token: 0x040000EB RID: 235
|
|
[ColorUsage(false)]
|
|
[Tooltip("Vignette color. Use the alpha channel for transparency.")]
|
|
public Color color;
|
|
|
|
// Token: 0x040000EC RID: 236
|
|
[Tooltip("Sets the vignette center point (screen center is [0.5,0.5]).")]
|
|
public Vector2 center;
|
|
|
|
// Token: 0x040000ED RID: 237
|
|
[Range(0f, 3f)]
|
|
[Tooltip("Amount of vignetting on screen.")]
|
|
public float intensity;
|
|
|
|
// Token: 0x040000EE RID: 238
|
|
[Range(0.01f, 3f)]
|
|
[Tooltip("Smoothness of the vignette borders.")]
|
|
public float smoothness;
|
|
|
|
// Token: 0x040000EF RID: 239
|
|
[LensAberrations.AdvancedSetting]
|
|
[Range(0f, 1f)]
|
|
[Tooltip("Lower values will make a square-ish vignette.")]
|
|
public float roundness;
|
|
|
|
// Token: 0x040000F0 RID: 240
|
|
[Range(0f, 1f)]
|
|
[Tooltip("Blurs the corners of the screen. Leave this at 0 to disable it.")]
|
|
public float blur;
|
|
|
|
// Token: 0x040000F1 RID: 241
|
|
[Range(0f, 1f)]
|
|
[Tooltip("Desaturate the corners of the screen. Leave this to 0 to disable it.")]
|
|
public float desaturate;
|
|
}
|
|
|
|
// Token: 0x02000037 RID: 55
|
|
[Serializable]
|
|
public struct ChromaticAberrationSettings
|
|
{
|
|
// Token: 0x1700003A RID: 58
|
|
// (get) Token: 0x06000090 RID: 144 RVA: 0x00005CDC File Offset: 0x000040DC
|
|
public static LensAberrations.ChromaticAberrationSettings defaultSettings
|
|
{
|
|
get
|
|
{
|
|
return new LensAberrations.ChromaticAberrationSettings
|
|
{
|
|
enabled = false,
|
|
color = Color.green,
|
|
amount = 0f
|
|
};
|
|
}
|
|
}
|
|
|
|
// Token: 0x040000F2 RID: 242
|
|
public bool enabled;
|
|
|
|
// Token: 0x040000F3 RID: 243
|
|
[ColorUsage(false)]
|
|
[Tooltip("Channels to apply chromatic aberration to.")]
|
|
public Color color;
|
|
|
|
// Token: 0x040000F4 RID: 244
|
|
[Range(-50f, 50f)]
|
|
[Tooltip("Amount of tangential distortion.")]
|
|
public float amount;
|
|
}
|
|
|
|
// Token: 0x02000038 RID: 56
|
|
private enum Pass
|
|
{
|
|
// Token: 0x040000F6 RID: 246
|
|
BlurPrePass,
|
|
// Token: 0x040000F7 RID: 247
|
|
Chroma,
|
|
// Token: 0x040000F8 RID: 248
|
|
Distort,
|
|
// Token: 0x040000F9 RID: 249
|
|
Vignette,
|
|
// Token: 0x040000FA RID: 250
|
|
ChromaDistort,
|
|
// Token: 0x040000FB RID: 251
|
|
ChromaVignette,
|
|
// Token: 0x040000FC RID: 252
|
|
DistortVignette,
|
|
// Token: 0x040000FD RID: 253
|
|
ChromaDistortVignette
|
|
}
|
|
}
|
|
}
|