Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/OutlineGlowEffectScript.cs
2026-02-21 16:45:37 +08:00

781 lines
23 KiB
C#

using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Camera))]
[AddComponentMenu("Image Effects/Outline Glow Effect")]
public class OutlineGlowEffectScript : MonoBehaviour
{
private static Dictionary<int, OutlineGlowRenderer> renderers;
private static OutlineGlowEffectScript instance;
public int SecondCameraLayer = 31;
public int BlurSteps = 2;
public float BlurSpread = 0.6f;
public bool QuarterResolutionSecondRender = true;
public bool SmootherOutlines = true;
public bool SplitObjects;
public bool UseObjectColors;
public bool UseObjectBlurSettings;
public bool UseObjectOutlineStrength;
public bool SeeThrough;
public bool DepthTest;
public float MinZ = 0.1f;
public Color OutlineColor = Color.cyan;
public float OutlineStrength = 3f;
public bool DrawObjectsOnTop;
public GameObject[] TopDrawObjects;
public Shader DephtPassShader;
public Shader SecondPassShader;
public Shader TopDrawShader;
public Shader BlurPassShader;
public Shader MixPassShader;
private Material e_Mat;
private Material d_Mat;
private Material m_Mat;
private Camera scam;
private GameObject camObject;
private Transform scam_transform;
private float InternalBlurSpread = 0.6f;
private List<OutlineGlowRenderer> temp_renderers;
public static OutlineGlowEffectScript Instance
{
get
{
return instance;
}
}
private void Start()
{
if (renderers == null)
{
renderers = new Dictionary<int, OutlineGlowRenderer>();
}
if (instance == null)
{
instance = this;
}
if (!SystemInfo.supportsImageEffects || !SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.Depth))
{
base.enabled = false;
}
else if (DepthTest)
{
GetComponent<Camera>().depthTextureMode |= DepthTextureMode.DepthNormals;
}
}
public int AddRenderer(OutlineGlowRenderer renderer)
{
for (int i = 0; i < 2147483646; i++)
{
if (!renderers.ContainsKey(i))
{
renderers.Add(i, renderer);
return i;
}
}
return -1;
}
public void RemoveRenderer(int id)
{
if (renderers.ContainsKey(id))
{
renderers.Remove(id);
}
}
private void CreateMaterials()
{
if (d_Mat == null && SecondPassShader != null)
{
d_Mat = new Material(SecondPassShader);
}
if (e_Mat == null && BlurPassShader != null && BlurPassShader.isSupported)
{
e_Mat = new Material(BlurPassShader);
}
if (m_Mat == null && MixPassShader != null && MixPassShader.isSupported)
{
m_Mat = new Material(MixPassShader);
}
}
private void CreateCamera()
{
if (scam == null)
{
if (camObject != null)
{
Object.DestroyImmediate(camObject);
}
GameObject gameObject = new GameObject();
scam = gameObject.AddComponent<Camera>();
scam_transform = scam.transform;
scam.gameObject.name = "Outline Glow Cam";
camObject = gameObject;
camObject.hideFlags = HideFlags.HideAndDontSave;
}
}
public void FourTapCone(RenderTexture source, RenderTexture dest, int iteration)
{
float num = 0.5f + (float)iteration * InternalBlurSpread;
Graphics.BlitMultiTap(source, dest, e_Mat, new Vector2(0f - num, 0f - num), new Vector2(0f - num, num), new Vector2(num, num), new Vector2(num, 0f - num));
}
private void DownSample4x(RenderTexture source, RenderTexture dest)
{
float num = 1f * InternalBlurSpread;
Graphics.BlitMultiTap(source, dest, e_Mat, new Vector2(0f - num, 0f - num), new Vector2(0f - num, num), new Vector2(num, num), new Vector2(num, 0f - num));
}
private void OnRenderImage(RenderTexture source, RenderTexture destination)
{
foreach (OutlineGlowRenderer value in renderers.Values)
{
value.UpdateDistance();
}
CreateMaterials();
if (!BlurPassShader.isSupported || !MixPassShader.isSupported)
{
base.enabled = false;
return;
}
if (DepthTest)
{
GetComponent<Camera>().depthTextureMode |= DepthTextureMode.DepthNormals;
}
CreateCamera();
SecondCameraLayer = Mathf.Clamp(SecondCameraLayer, 0, 31);
BlurSteps = Mathf.Clamp(BlurSteps, 1, 6);
BlurSpread = Mathf.Clamp(BlurSpread, 0f, 1.5f);
InternalBlurSpread = BlurSpread;
scam.enabled = false;
int num = 2;
int num2 = 1;
if (QuarterResolutionSecondRender)
{
num2 = 2;
num = 4;
}
bool flag = true;
if (TopDrawObjects != null)
{
flag = true;
for (int i = 0; i < TopDrawObjects.Length; i++)
{
if (TopDrawObjects[i] != null)
{
flag = false;
break;
}
}
}
if (!DepthTest)
{
if (!SplitObjects)
{
RenderTexture renderTexture = ((!DrawObjectsOnTop || flag) ? RenderTexture.GetTemporary(source.width / num2, source.height / num2, 0, RenderTextureFormat.Default) : RenderTexture.GetTemporary(source.width / num2, source.height / num2, 24, RenderTextureFormat.Default));
scam.renderingPath = RenderingPath.VertexLit;
scam_transform.position = GetComponent<Camera>().transform.position;
scam_transform.rotation = GetComponent<Camera>().transform.rotation;
scam.fieldOfView = GetComponent<Camera>().fieldOfView;
scam.near = GetComponent<Camera>().near;
scam.far = GetComponent<Camera>().far;
scam.targetTexture = renderTexture;
scam.backgroundColor = Color.black;
scam.clearFlags = CameraClearFlags.Color;
scam.cullingMask = 1 << SecondCameraLayer;
scam.hdr = false;
scam.depthTextureMode = DepthTextureMode.None;
if (DrawObjectsOnTop && !flag)
{
GameObject[] array = new GameObject[TopDrawObjects.Length];
int[] array2 = new int[TopDrawObjects.Length];
int num3 = 0;
for (int j = 0; j < TopDrawObjects.Length; j++)
{
if (TopDrawObjects[j] != null)
{
array[num3] = TopDrawObjects[j];
array2[num3] = TopDrawObjects[j].layer;
num3++;
}
}
for (int k = 0; k < array.Length; k++)
{
array[k].layer = SecondCameraLayer;
}
scam.RenderWithShader(TopDrawShader, string.Empty);
for (int l = 0; l < array.Length; l++)
{
if (array[l] != null)
{
array[l].layer = array2[l];
}
}
scam.clearFlags = CameraClearFlags.Nothing;
}
foreach (OutlineGlowRenderer value2 in renderers.Values)
{
value2.SetLayer(SecondCameraLayer);
}
scam.RenderWithShader(SecondPassShader, string.Empty);
foreach (OutlineGlowRenderer value3 in renderers.Values)
{
value3.ResetLayer();
}
RenderTexture temporary = RenderTexture.GetTemporary(source.width / num, source.height / num, 0);
RenderTexture temporary2 = RenderTexture.GetTemporary(source.width / num, source.height / num, 0);
DownSample4x(renderTexture, temporary);
bool flag2 = true;
for (int m = 0; m < BlurSteps; m++)
{
if (flag2)
{
FourTapCone(temporary, temporary2, m);
}
else
{
FourTapCone(temporary2, temporary, m);
}
flag2 = !flag2;
}
m_Mat.SetTexture("_WhiteTex", renderTexture);
m_Mat.SetColor("_OutlineColor", OutlineColor);
m_Mat.SetFloat("_Mult", OutlineStrength);
m_Mat.SetVector("_TexSize", new Vector4(1f / (float)source.width, 1f / (float)source.height, 0f, 0f));
if (flag2)
{
m_Mat.SetTexture("_BlurTex", temporary);
}
else
{
m_Mat.SetTexture("_BlurTex", temporary2);
}
if (SmootherOutlines && QuarterResolutionSecondRender)
{
Graphics.Blit(source, destination, m_Mat, 1);
}
else
{
Graphics.Blit(source, destination, m_Mat, 0);
}
RenderTexture.ReleaseTemporary(temporary);
RenderTexture.ReleaseTemporary(temporary2);
RenderTexture.ReleaseTemporary(renderTexture);
return;
}
RenderTexture renderTexture2 = ((!DrawObjectsOnTop || flag) ? RenderTexture.GetTemporary(source.width / num2, source.height / num2, 0, RenderTextureFormat.Default) : RenderTexture.GetTemporary(source.width / num2, source.height / num2, 24, RenderTextureFormat.Default));
scam.renderingPath = RenderingPath.VertexLit;
scam_transform.position = GetComponent<Camera>().transform.position;
scam_transform.rotation = GetComponent<Camera>().transform.rotation;
scam.fieldOfView = GetComponent<Camera>().fieldOfView;
scam.near = GetComponent<Camera>().near;
scam.far = GetComponent<Camera>().far;
scam.targetTexture = renderTexture2;
scam.backgroundColor = Color.black;
scam.clearFlags = CameraClearFlags.Color;
scam.cullingMask = 1 << SecondCameraLayer;
scam.depthTextureMode = DepthTextureMode.None;
RenderTexture temporary3 = RenderTexture.GetTemporary(source.width / num, source.height / num, 0);
RenderTexture temporary4 = RenderTexture.GetTemporary(source.width / num, source.height / num, 0);
RenderTexture temporary5 = RenderTexture.GetTemporary(source.width, source.height, 0);
RenderTexture temporary6 = RenderTexture.GetTemporary(source.width, source.height, 0);
Graphics.Blit(source, temporary5, m_Mat, 2);
Graphics.Blit(source, temporary6, m_Mat, 2);
bool flag3 = false;
if (temp_renderers == null)
{
temp_renderers = new List<OutlineGlowRenderer>();
}
else
{
temp_renderers.Clear();
}
temp_renderers.AddRange(renderers.Values);
temp_renderers.Sort(new OutlineGlowRendererSort());
foreach (OutlineGlowRenderer temp_renderer in temp_renderers)
{
if (DrawObjectsOnTop && !flag)
{
GameObject[] array3 = new GameObject[TopDrawObjects.Length];
int[] array4 = new int[TopDrawObjects.Length];
int num4 = 0;
for (int n = 0; n < TopDrawObjects.Length; n++)
{
if (TopDrawObjects[n] != null)
{
array3[num4] = TopDrawObjects[n];
array4[num4] = TopDrawObjects[n].layer;
num4++;
}
}
for (int num5 = 0; num5 < array3.Length; num5++)
{
array3[num5].layer = SecondCameraLayer;
}
scam.RenderWithShader(TopDrawShader, string.Empty);
for (int num6 = 0; num6 < array3.Length; num6++)
{
if (array3[num6] != null)
{
array3[num6].layer = array4[num6];
}
}
scam.clearFlags = CameraClearFlags.Nothing;
}
temp_renderer.SetLayer(SecondCameraLayer);
scam.RenderWithShader(SecondPassShader, string.Empty);
scam.clearFlags = CameraClearFlags.Color;
DownSample4x(renderTexture2, temporary3);
bool flag4 = true;
int num7 = BlurSteps;
if (UseObjectBlurSettings)
{
temp_renderer.ObjectBlurSteps = Mathf.Clamp(temp_renderer.ObjectBlurSteps, 1, 6);
temp_renderer.ObjectBlurSpread = Mathf.Clamp(temp_renderer.ObjectBlurSpread, 0f, 1.5f);
num7 = temp_renderer.ObjectBlurSteps;
InternalBlurSpread = temp_renderer.ObjectBlurSpread;
}
else
{
InternalBlurSpread = BlurSpread;
}
for (int num8 = 0; num8 < num7; num8++)
{
if (flag4)
{
FourTapCone(temporary3, temporary4, num8);
}
else
{
FourTapCone(temporary4, temporary3, num8);
}
flag4 = !flag4;
}
m_Mat.SetTexture("_WhiteTex", renderTexture2);
if (UseObjectColors)
{
m_Mat.SetColor("_OutlineColor", temp_renderer.OutlineColor);
}
else
{
m_Mat.SetColor("_OutlineColor", OutlineColor);
}
if (UseObjectOutlineStrength)
{
m_Mat.SetFloat("_Mult", temp_renderer.ObjectOutlineStrength);
}
else
{
m_Mat.SetFloat("_Mult", OutlineStrength);
}
m_Mat.SetVector("_TexSize", new Vector4(1f / (float)source.width, 1f / (float)source.height, 0f, 0f));
if (flag4)
{
m_Mat.SetTexture("_BlurTex", temporary3);
}
else
{
m_Mat.SetTexture("_BlurTex", temporary4);
}
if (SmootherOutlines && QuarterResolutionSecondRender)
{
if (flag3)
{
if (!SeeThrough)
{
Graphics.Blit(temporary5, temporary6, m_Mat, 5);
}
else
{
Graphics.Blit(temporary5, temporary6, m_Mat, 1);
}
}
else if (!SeeThrough)
{
Graphics.Blit(temporary6, temporary5, m_Mat, 5);
}
else
{
Graphics.Blit(temporary6, temporary5, m_Mat, 1);
}
}
else if (flag3)
{
if (!SeeThrough)
{
Graphics.Blit(temporary5, temporary6, m_Mat, 4);
}
else
{
Graphics.Blit(temporary5, temporary6, m_Mat, 0);
}
}
else if (!SeeThrough)
{
Graphics.Blit(temporary6, temporary5, m_Mat, 4);
}
else
{
Graphics.Blit(temporary6, temporary5, m_Mat, 0);
}
temp_renderer.ResetLayer();
flag3 = !flag3;
}
if (flag3)
{
m_Mat.SetTexture("_AddTex", temporary5);
Graphics.Blit(source, destination, m_Mat, 3);
}
else
{
m_Mat.SetTexture("_AddTex", temporary6);
Graphics.Blit(source, destination, m_Mat, 3);
}
RenderTexture.ReleaseTemporary(temporary3);
RenderTexture.ReleaseTemporary(temporary4);
RenderTexture.ReleaseTemporary(temporary5);
RenderTexture.ReleaseTemporary(temporary6);
RenderTexture.ReleaseTemporary(renderTexture2);
return;
}
m_Mat.SetFloat("_MinZ", MinZ);
if (!SplitObjects)
{
RenderTexture temporary7 = RenderTexture.GetTemporary(source.width / num2, source.height / num2, 24, RenderTextureFormat.Default);
RenderTexture temporary8 = RenderTexture.GetTemporary(temporary7.width, temporary7.height, 24, RenderTextureFormat.Default);
RenderTexture renderTexture3 = null;
if (QuarterResolutionSecondRender)
{
renderTexture3 = RenderTexture.GetTemporary(temporary7.width, temporary7.height, 0);
m_Mat.SetVector("_DTexelOffset", new Vector4(0.5f / (float)source.width, 0.5f / (float)source.height, -0.5f / (float)source.width, 0.5f / (float)source.height));
Graphics.Blit(source, renderTexture3, m_Mat, 11);
}
scam.renderingPath = RenderingPath.Forward;
scam_transform.position = GetComponent<Camera>().transform.position;
scam_transform.rotation = GetComponent<Camera>().transform.rotation;
scam.fieldOfView = GetComponent<Camera>().fieldOfView;
scam.near = GetComponent<Camera>().near;
scam.far = GetComponent<Camera>().far;
scam.targetTexture = temporary7;
scam.backgroundColor = Color.black;
scam.clearFlags = CameraClearFlags.Color;
scam.cullingMask = 1 << SecondCameraLayer;
scam.hdr = false;
scam.depthTextureMode = DepthTextureMode.None;
if (DrawObjectsOnTop && !flag)
{
GameObject[] array5 = new GameObject[TopDrawObjects.Length];
int[] array6 = new int[TopDrawObjects.Length];
int num9 = 0;
for (int num10 = 0; num10 < TopDrawObjects.Length; num10++)
{
if (TopDrawObjects[num10] != null)
{
array5[num9] = TopDrawObjects[num10];
array6[num9] = TopDrawObjects[num10].layer;
TopDrawObjects[num10].layer = SecondCameraLayer;
num9++;
}
}
scam.RenderWithShader(TopDrawShader, string.Empty);
for (int num11 = 0; num11 < array5.Length; num11++)
{
if (array5[num11] != null)
{
array5[num11].layer = array6[num11];
}
}
scam.clearFlags = CameraClearFlags.Nothing;
}
foreach (OutlineGlowRenderer value4 in renderers.Values)
{
value4.SetLayer(SecondCameraLayer);
}
scam.RenderWithShader(SecondPassShader, string.Empty);
scam.targetTexture = temporary8;
scam.RenderWithShader(DephtPassShader, "RenderType");
scam.targetTexture = temporary7;
m_Mat.SetTexture("_SecDepth", temporary8);
foreach (OutlineGlowRenderer value5 in renderers.Values)
{
value5.ResetLayer();
}
RenderTexture temporary9 = RenderTexture.GetTemporary(source.width / num, source.height / num, 0);
RenderTexture temporary10 = RenderTexture.GetTemporary(source.width / num, source.height / num, 0);
RenderTexture temporary11 = RenderTexture.GetTemporary(temporary7.width, temporary7.height, 0);
if (!QuarterResolutionSecondRender)
{
m_Mat.SetVector("_DTexelOffset", new Vector4(1f / (float)temporary7.width, 1f / (float)temporary7.height, -1f / (float)temporary7.width, 1f / (float)temporary7.height));
Graphics.Blit(temporary7, temporary11, m_Mat, 12);
Graphics.Blit(temporary11, temporary7, m_Mat, 10);
}
else
{
m_Mat.SetVector("_DTexelOffset", new Vector4(1f / (float)temporary7.width, 1f / (float)temporary7.height, -1f / (float)temporary7.width, 1f / (float)temporary7.height));
m_Mat.SetTexture("_DSD", renderTexture3);
Graphics.Blit(temporary7, temporary11, m_Mat, 13);
Graphics.Blit(temporary11, temporary7, m_Mat, 10);
}
DownSample4x(temporary7, temporary9);
bool flag5 = true;
for (int num12 = 0; num12 < BlurSteps; num12++)
{
if (flag5)
{
FourTapCone(temporary9, temporary10, num12);
}
else
{
FourTapCone(temporary10, temporary9, num12);
}
flag5 = !flag5;
}
m_Mat.SetTexture("_WhiteTex", temporary7);
m_Mat.SetColor("_OutlineColor", OutlineColor);
m_Mat.SetFloat("_Mult", OutlineStrength);
m_Mat.SetVector("_TexSize", new Vector4(1f / (float)source.width, 1f / (float)source.height, 0f, 0f));
if (flag5)
{
m_Mat.SetTexture("_BlurTex", temporary9);
}
else
{
m_Mat.SetTexture("_BlurTex", temporary10);
}
if (SmootherOutlines && QuarterResolutionSecondRender)
{
Graphics.Blit(source, destination, m_Mat, 1);
}
else
{
Graphics.Blit(source, destination, m_Mat, 0);
}
RenderTexture.ReleaseTemporary(temporary9);
RenderTexture.ReleaseTemporary(temporary10);
RenderTexture.ReleaseTemporary(temporary7);
RenderTexture.ReleaseTemporary(temporary11);
RenderTexture.ReleaseTemporary(temporary8);
if (renderTexture3 != null)
{
RenderTexture.ReleaseTemporary(renderTexture3);
}
return;
}
RenderTexture temporary12 = RenderTexture.GetTemporary(source.width / num2, source.height / num2, 0, RenderTextureFormat.Default);
RenderTexture temporary13 = RenderTexture.GetTemporary(source.width, source.height, 24, RenderTextureFormat.Default);
scam.renderingPath = RenderingPath.VertexLit;
scam_transform.position = GetComponent<Camera>().transform.position;
scam_transform.rotation = GetComponent<Camera>().transform.rotation;
scam.fieldOfView = GetComponent<Camera>().fieldOfView;
scam.near = GetComponent<Camera>().near;
scam.far = GetComponent<Camera>().far;
scam.targetTexture = temporary12;
scam.backgroundColor = Color.black;
scam.clearFlags = CameraClearFlags.Color;
scam.cullingMask = 1 << SecondCameraLayer;
scam.depthTextureMode = DepthTextureMode.None;
RenderTexture temporary14 = RenderTexture.GetTemporary(source.width / num, source.height / num, 0);
RenderTexture temporary15 = RenderTexture.GetTemporary(source.width / num, source.height / num, 0);
RenderTexture temporary16 = RenderTexture.GetTemporary(source.width, source.height, 0);
RenderTexture temporary17 = RenderTexture.GetTemporary(source.width, source.height, 0);
RenderTexture temporary18 = RenderTexture.GetTemporary(temporary12.width, temporary12.height, 0);
Graphics.Blit(source, temporary16, m_Mat, 2);
Graphics.Blit(source, temporary17, m_Mat, 2);
bool flag6 = false;
if (temp_renderers == null)
{
temp_renderers = new List<OutlineGlowRenderer>();
}
else
{
temp_renderers.Clear();
}
temp_renderers.AddRange(renderers.Values);
temp_renderers.Sort(new OutlineGlowRendererSort());
foreach (OutlineGlowRenderer temp_renderer2 in temp_renderers)
{
if (DrawObjectsOnTop && !flag)
{
GameObject[] array7 = new GameObject[TopDrawObjects.Length];
int[] array8 = new int[TopDrawObjects.Length];
int num13 = 0;
for (int num14 = 0; num14 < TopDrawObjects.Length; num14++)
{
if (TopDrawObjects[num14] != null)
{
array7[num13] = TopDrawObjects[num14];
array8[num13] = TopDrawObjects[num14].layer;
TopDrawObjects[num14].layer = SecondCameraLayer;
num13++;
}
}
scam.RenderWithShader(TopDrawShader, string.Empty);
for (int num15 = 0; num15 < array7.Length; num15++)
{
if (array7[num15] != null)
{
array7[num15].layer = array8[num15];
}
}
scam.clearFlags = CameraClearFlags.Nothing;
}
temp_renderer2.SetLayer(SecondCameraLayer);
scam.RenderWithShader(SecondPassShader, string.Empty);
scam.clearFlags = CameraClearFlags.Color;
scam.targetTexture = temporary13;
scam.RenderWithShader(DephtPassShader, "RenderType");
scam.targetTexture = temporary12;
m_Mat.SetTexture("_SecDepth", temporary13);
Graphics.Blit(temporary12, temporary18, m_Mat, 8);
Graphics.Blit(temporary18, temporary12, m_Mat, 10);
DownSample4x(temporary12, temporary14);
bool flag7 = true;
int num16 = BlurSteps;
if (UseObjectBlurSettings)
{
temp_renderer2.ObjectBlurSteps = Mathf.Clamp(temp_renderer2.ObjectBlurSteps, 1, 6);
temp_renderer2.ObjectBlurSpread = Mathf.Clamp(temp_renderer2.ObjectBlurSpread, 0f, 1.5f);
num16 = temp_renderer2.ObjectBlurSteps;
InternalBlurSpread = temp_renderer2.ObjectBlurSpread;
}
else
{
InternalBlurSpread = BlurSpread;
}
for (int num17 = 0; num17 < num16; num17++)
{
if (flag7)
{
FourTapCone(temporary14, temporary15, num17);
}
else
{
FourTapCone(temporary15, temporary14, num17);
}
flag7 = !flag7;
}
m_Mat.SetTexture("_WhiteTex", temporary12);
if (UseObjectColors)
{
m_Mat.SetColor("_OutlineColor", temp_renderer2.OutlineColor);
}
else
{
m_Mat.SetColor("_OutlineColor", OutlineColor);
}
if (UseObjectOutlineStrength)
{
m_Mat.SetFloat("_Mult", temp_renderer2.ObjectOutlineStrength);
}
else
{
m_Mat.SetFloat("_Mult", OutlineStrength);
}
m_Mat.SetVector("_TexSize", new Vector4(1f / (float)source.width, 1f / (float)source.height, 0f, 0f));
if (flag7)
{
m_Mat.SetTexture("_BlurTex", temporary14);
}
else
{
m_Mat.SetTexture("_BlurTex", temporary15);
}
if (SmootherOutlines && QuarterResolutionSecondRender)
{
if (flag6)
{
if (!SeeThrough)
{
Graphics.Blit(temporary16, temporary17, m_Mat, 5);
}
else
{
Graphics.Blit(temporary16, temporary17, m_Mat, 1);
}
}
else if (!SeeThrough)
{
Graphics.Blit(temporary17, temporary16, m_Mat, 5);
}
else
{
Graphics.Blit(temporary17, temporary16, m_Mat, 1);
}
}
else if (flag6)
{
if (!SeeThrough)
{
Graphics.Blit(temporary16, temporary17, m_Mat, 4);
}
else
{
Graphics.Blit(temporary16, temporary17, m_Mat, 0);
}
}
else if (!SeeThrough)
{
Graphics.Blit(temporary17, temporary16, m_Mat, 4);
}
else
{
Graphics.Blit(temporary17, temporary16, m_Mat, 0);
}
temp_renderer2.ResetLayer();
flag6 = !flag6;
}
if (flag6)
{
m_Mat.SetTexture("_AddTex", temporary16);
Graphics.Blit(source, destination, m_Mat, 3);
}
else
{
m_Mat.SetTexture("_AddTex", temporary17);
Graphics.Blit(source, destination, m_Mat, 3);
}
RenderTexture.ReleaseTemporary(temporary14);
RenderTexture.ReleaseTemporary(temporary15);
RenderTexture.ReleaseTemporary(temporary16);
RenderTexture.ReleaseTemporary(temporary17);
RenderTexture.ReleaseTemporary(temporary12);
RenderTexture.ReleaseTemporary(temporary13);
RenderTexture.ReleaseTemporary(temporary18);
}
}