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,