From 4489e3311c3828a260bcf11ad0b18c7bc706d1eb Mon Sep 17 00:00:00 2001 From: max Date: Wed, 3 Mar 2021 17:50:44 +0100 Subject: [PATCH] Clear Function - Clear function. - GUI moved to Camera. --- Runtime/MaskCamera.cs | 25 +++++++++++++++++++ Runtime/MaskRenderer.cs | 54 ++++++++++++++++++++++++++--------------- 2 files changed, 60 insertions(+), 19 deletions(-) diff --git a/Runtime/MaskCamera.cs b/Runtime/MaskCamera.cs index 6769db2..e73a332 100644 --- a/Runtime/MaskCamera.cs +++ b/Runtime/MaskCamera.cs @@ -18,6 +18,7 @@ namespace TAO.InteractiveMask public List materials = new List(); private int targetWidth = 0; + public bool debugGui = false; private void Awake() { @@ -68,6 +69,30 @@ namespace TAO.InteractiveMask maskCamera.transform.position = newPos; } + private void OnGUI() + { + if (debugGui) + { + using (new GUILayout.VerticalScope()) + { + using (new GUILayout.HorizontalScope()) + { + if (GUILayout.Button("Render")) + { + Render(); + } + + if (GUILayout.Button("MaskRenderer.Clear")) + { + maskRenderer.Clear(); + } + } + } + + maskRenderer.GUI(); + } + } + public enum Mode { EachFrame, diff --git a/Runtime/MaskRenderer.cs b/Runtime/MaskRenderer.cs index 69c5644..f4ac169 100644 --- a/Runtime/MaskRenderer.cs +++ b/Runtime/MaskRenderer.cs @@ -37,6 +37,17 @@ namespace TAO.InteractiveMask } } + // Clears the context of the render targets. + public void Clear() + { + Graphics.Blit(target, target, clearBlitMaterial); + + foreach (Layer layer in layers) + { + layer.Clear(clearBlitMaterial); + } + } + private void OnValidate() { if (clearBlit == null) @@ -61,29 +72,26 @@ namespace TAO.InteractiveMask } } - private void OnGUI() + public void GUI() { - if (debugGui) + using (new GUILayout.HorizontalScope()) { - using (new GUILayout.HorizontalScope()) - { - GUITexture(source); - GUITexture(target); + GUITexture(source); + GUITexture(target); - foreach (var l in layers) + foreach (var l in layers) + { + switch (l.type) { - switch (l.type) - { - case Layer.Type.Clear: - break; - case Layer.Type.Persistent: - { - GUITexture(l.PersistentTarget); - } - break; - default: - break; - } + case Layer.Type.Clear: + break; + case Layer.Type.Persistent: + { + GUITexture(l.PersistentTarget); + } + break; + default: + break; } } } @@ -171,6 +179,14 @@ namespace TAO.InteractiveMask } } + public void Clear(Material clearBlit) + { + if (PersistentTarget) + { + Graphics.Blit(PersistentTarget, PersistentTarget, clearBlit); + } + } + public enum Type { Clear,