using UnityEngine; using UnityEngine.Rendering.HighDefinition; [ExecuteInEditMode] public class BindTexture : MonoBehaviour { private WaterSurface waterSurface; private float regionSize = 1f; public Material CustomPassMaterial; public Material localVolumetricFogMaterial; public Material decalMaterial; private void Start() { Init(); } private void OnEnable() { Init(); } private void Init() { if (waterSurface == null) { waterSurface = GetComponent(); } } private void Update() { Texture causticsBuffer = waterSurface.GetCausticsBuffer(out regionSize); Texture deformationBuffer = waterSurface.GetDeformationBuffer(); CustomPassMaterial.SetColor("_TintColor", waterSurface.scatteringColor); CustomPassMaterial.SetFloat("_WaterHeight", waterSurface.transform.position.y); if (deformationBuffer != null) { decalMaterial.SetTexture("_DeformationTexture", deformationBuffer); } if (causticsBuffer != null) { CustomPassMaterial.SetTexture("_CausticsTexture", causticsBuffer); localVolumetricFogMaterial.SetTexture("_CausticsTexture", causticsBuffer); decalMaterial.SetTexture("_CausticsTexture", causticsBuffer); } } }