using System; using UnityEngine; namespace UnityStandardAssets.ImageEffects { // Token: 0x0200008B RID: 139 [ExecuteInEditMode] [RequireComponent(typeof(Camera))] [AddComponentMenu("Image Effects/Rendering/Sun Shafts")] public class SunShafts : PostEffectsBase { // Token: 0x06000193 RID: 403 RVA: 0x00011DCC File Offset: 0x000101CC public override bool CheckResources() { base.CheckSupport(this.useDepthTexture); this.sunShaftsMaterial = base.CheckShaderAndCreateMaterial(this.sunShaftsShader, this.sunShaftsMaterial); this.simpleClearMaterial = base.CheckShaderAndCreateMaterial(this.simpleClearShader, this.simpleClearMaterial); if (!this.isSupported) { base.ReportAutoDisable(); } return this.isSupported; } // Token: 0x06000194 RID: 404 RVA: 0x00011E30 File Offset: 0x00010230 private void OnRenderImage(RenderTexture source, RenderTexture destination) { if (!this.CheckResources()) { Graphics.Blit(source, destination); return; } if (this.useDepthTexture) { base.GetComponent().depthTextureMode |= DepthTextureMode.Depth; } int num = 4; if (this.resolution == SunShafts.SunShaftsResolution.Normal) { num = 2; } else if (this.resolution == SunShafts.SunShaftsResolution.High) { num = 1; } Vector3 vector = Vector3.one * 0.5f; if (this.sunTransform) { vector = base.GetComponent().WorldToViewportPoint(this.sunTransform.position); } else { vector = new Vector3(0.5f, 0.5f, 0f); } int num2 = source.width / num; int num3 = source.height / num; RenderTexture renderTexture = RenderTexture.GetTemporary(num2, num3, 0); this.sunShaftsMaterial.SetVector("_BlurRadius4", new Vector4(1f, 1f, 0f, 0f) * this.sunShaftBlurRadius); this.sunShaftsMaterial.SetVector("_SunPosition", new Vector4(vector.x, vector.y, vector.z, this.maxRadius)); this.sunShaftsMaterial.SetVector("_SunThreshold", this.sunThreshold); if (!this.useDepthTexture) { RenderTextureFormat renderTextureFormat = ((!base.GetComponent().allowHDR) ? RenderTextureFormat.Default : RenderTextureFormat.DefaultHDR); RenderTexture temporary = RenderTexture.GetTemporary(source.width, source.height, 0, renderTextureFormat); RenderTexture.active = temporary; GL.ClearWithSkybox(false, base.GetComponent()); this.sunShaftsMaterial.SetTexture("_Skybox", temporary); Graphics.Blit(source, renderTexture, this.sunShaftsMaterial, 3); RenderTexture.ReleaseTemporary(temporary); } else { Graphics.Blit(source, renderTexture, this.sunShaftsMaterial, 2); } base.DrawBorder(renderTexture, this.simpleClearMaterial); this.radialBlurIterations = Mathf.Clamp(this.radialBlurIterations, 1, 4); float num4 = this.sunShaftBlurRadius * 0.0013020834f; this.sunShaftsMaterial.SetVector("_BlurRadius4", new Vector4(num4, num4, 0f, 0f)); this.sunShaftsMaterial.SetVector("_SunPosition", new Vector4(vector.x, vector.y, vector.z, this.maxRadius)); for (int i = 0; i < this.radialBlurIterations; i++) { RenderTexture temporary2 = RenderTexture.GetTemporary(num2, num3, 0); Graphics.Blit(renderTexture, temporary2, this.sunShaftsMaterial, 1); RenderTexture.ReleaseTemporary(renderTexture); num4 = this.sunShaftBlurRadius * (((float)i * 2f + 1f) * 6f) / 768f; this.sunShaftsMaterial.SetVector("_BlurRadius4", new Vector4(num4, num4, 0f, 0f)); renderTexture = RenderTexture.GetTemporary(num2, num3, 0); Graphics.Blit(temporary2, renderTexture, this.sunShaftsMaterial, 1); RenderTexture.ReleaseTemporary(temporary2); num4 = this.sunShaftBlurRadius * (((float)i * 2f + 2f) * 6f) / 768f; this.sunShaftsMaterial.SetVector("_BlurRadius4", new Vector4(num4, num4, 0f, 0f)); } if (vector.z >= 0f) { this.sunShaftsMaterial.SetVector("_SunColor", new Vector4(this.sunColor.r, this.sunColor.g, this.sunColor.b, this.sunColor.a) * this.sunShaftIntensity); } else { this.sunShaftsMaterial.SetVector("_SunColor", Vector4.zero); } this.sunShaftsMaterial.SetTexture("_ColorBuffer", renderTexture); Graphics.Blit(source, destination, this.sunShaftsMaterial, (this.screenBlendMode != SunShafts.ShaftsScreenBlendMode.Screen) ? 4 : 0); RenderTexture.ReleaseTemporary(renderTexture); } // Token: 0x04000379 RID: 889 public SunShafts.SunShaftsResolution resolution = SunShafts.SunShaftsResolution.Normal; // Token: 0x0400037A RID: 890 public SunShafts.ShaftsScreenBlendMode screenBlendMode; // Token: 0x0400037B RID: 891 public Transform sunTransform; // Token: 0x0400037C RID: 892 public int radialBlurIterations = 2; // Token: 0x0400037D RID: 893 public Color sunColor = Color.white; // Token: 0x0400037E RID: 894 public Color sunThreshold = new Color(0.87f, 0.74f, 0.65f); // Token: 0x0400037F RID: 895 public float sunShaftBlurRadius = 2.5f; // Token: 0x04000380 RID: 896 public float sunShaftIntensity = 1.15f; // Token: 0x04000381 RID: 897 public float maxRadius = 0.75f; // Token: 0x04000382 RID: 898 public bool useDepthTexture = true; // Token: 0x04000383 RID: 899 public Shader sunShaftsShader; // Token: 0x04000384 RID: 900 private Material sunShaftsMaterial; // Token: 0x04000385 RID: 901 public Shader simpleClearShader; // Token: 0x04000386 RID: 902 private Material simpleClearMaterial; // Token: 0x0200008C RID: 140 public enum SunShaftsResolution { // Token: 0x04000388 RID: 904 Low, // Token: 0x04000389 RID: 905 Normal, // Token: 0x0400038A RID: 906 High } // Token: 0x0200008D RID: 141 public enum ShaftsScreenBlendMode { // Token: 0x0400038C RID: 908 Screen, // Token: 0x0400038D RID: 909 Add } } }