53 lines
1.2 KiB
C#
53 lines
1.2 KiB
C#
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<WaterSurface>();
|
|
}
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|