Files
Dec2017-Script-Dump/Assembly-CSharp-firstpass/ImageEffects/SunShafts.cs
T
2026-06-04 11:42:34 +02:00

169 lines
5.7 KiB
C#

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<Camera>().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<Camera>().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<Camera>().allowHDR) ? RenderTextureFormat.Default : RenderTextureFormat.DefaultHDR);
RenderTexture temporary = RenderTexture.GetTemporary(source.width, source.height, 0, renderTextureFormat);
RenderTexture.active = temporary;
GL.ClearWithSkybox(false, base.GetComponent<Camera>());
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
}
}
}