Add foam with a script
To add caustics or foam, or get information about water surface displacement due to waves and ripples, get buffers from the GetFoamBuffer API.
Example: Add foam
using UnityEngine;
using UnityEngine.Rendering.HighDefinition;
public class WaterFoamExample : MonoBehaviour
{
// Reference to the water surface component
public WaterSurface waterSurface;
// The area of the water surface where the foam buffer should be queried
public Vector2 foamArea;
// Material to apply the foam effect
public Material waterMaterial;
// Shader property name for foam texture in the water material
private readonly string _foamTextureProperty = "_FoamTex";
void Start()
{
// Get the foam buffer for the specified 2D area on the water surface
Texture foamBuffer = waterSurface.GetFoamBuffer(out foamArea);
if (foamBuffer != null)
{
// Apply the foam buffer as a texture to the water material
waterMaterial.SetTexture(_foamTextureProperty, foamBuffer);
Debug.Log("Foam buffer applied successfully.");
}
else
{
Debug.LogWarning("Foam buffer could not be retrieved.");
}
}
}