From 88b0bd925b3923c9de6711a3928a3807a5a291e5 Mon Sep 17 00:00:00 2001 From: max Date: Tue, 6 Apr 2021 10:15:55 +0200 Subject: [PATCH] Global shader parameters. Switched to using global shader parameter names instead of directly assigning the data to the materials. --- Runtime/MaskCamera.cs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Runtime/MaskCamera.cs b/Runtime/MaskCamera.cs index 2860b33..7776fe8 100644 --- a/Runtime/MaskCamera.cs +++ b/Runtime/MaskCamera.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Collections.Specialized; using UnityEngine; namespace TAO.InteractiveMask @@ -22,7 +23,11 @@ namespace TAO.InteractiveMask } private RenderTexture source = null; - public List materials = new List(); + [SerializeField] + private string maskTextureGlobalParameterName = "_TAO_Mask"; + [SerializeField] + private string maskDataGlobalParameterName = "_TAO_MaskData"; + public bool debugGui = false; private void Awake() @@ -53,10 +58,8 @@ namespace TAO.InteractiveMask maskRenderer.source = source; maskRenderer.Init(); - foreach (var m in materials) - { - m.SetTexture("_Mask", Target); - } + // Set texture. + Shader.SetGlobalTexture(maskTextureGlobalParameterName, Target); } private void OnDestroy() @@ -101,10 +104,8 @@ namespace TAO.InteractiveMask maskRenderer.Render(); - foreach (var m in materials) - { - m.SetVector("_MaskData", new Vector4(maskCamera.transform.position.x, maskCamera.transform.position.z, maskCamera.orthographicSize, 0)); - } + // Set data. + Shader.SetGlobalVector(maskDataGlobalParameterName, new Vector4(maskCamera.transform.position.x, maskCamera.transform.position.z, maskCamera.orthographicSize, 0)); } private void SnapCameraPosition()