In my experience building open-world environments and maritime prototypes in Unity, rendering believable water that interacts correctly with geometry has always been a tough engineering challenge. Crest Water 5 - Splines takes standard FFT (Fast Fourier Transform) ocean rendering and upgrades it with a spline-based data injection workflow that drastically simplifies river routing, shoreline carving, and localized flow control.
Architecturally, Crest avoids traditional static water meshes. Instead, it generates concentric geometry clipmaps—nested rings of terrain-like grids centered dynamically around the main render camera. As the camera moves, the mesh tiles shift and scale, maintaining high vertex density near the viewpoint while scaling down geometry toward the horizon. The Splines module hooks directly into Crest's simulation buffers (Displacement, Dynamic Waves, Flow, Surface Trim, and Foam), allowing you to draw splines in the scene view that push custom velocity vectors, alter heights, or clip out ocean geometry to build seamless rivers and lakes.
Crest renders its water surface entirely through GPU compute shaders. The render loop evaluates ocean spectrum data, directional waves, dynamic wave ripples, and custom spline inputs in real time. Because ocean calculations run as a sequence of compute passes before rendering the main surface shader, performance stays consistent regardless of how complex your shoreline geometry gets.
Instead of manually tweaking flowmaps in external tools like Houdini, Crest 5 lets you drop Unity SplineContainer components directly onto the terrain. The system converts spline curves into simulation inputs:
Physics simulation requires accurate height and flow sampling. Crest supplies the SampleHeightHelper and SampleFlowHelper C# abstractions. These interface with compute shaders to fetch ocean displacement on the CPU with minimal latency, avoiding performance bottlenecks when tracking hundreds of floating objects.
Honestly, standard flat ocean planes fall short when your level design demands rivers running down mountains into dynamic ocean bays. Crest 5 shines in specific sub-genres:
Getting Crest running alongside Unity's modern Splines package requires a specific component stack on your ocean manager and spline nodes.
Create an empty GameObject named Ocean and attach the OceanRenderer component. Assign your render pipeline's ocean material (URP or HDRP compute variant). Set the default sea level in the OceanRenderer inspector.
Add a new GameObject with Unity's SplineContainer component. Draw your river curve from the mountain source down to the sea coast. Next, attach Crest's RegisterSplineInput component to the same object.
In the RegisterSplineInput inspector, set the Data Target to Flow or Displacement depending on your goal. Adjust the radius, falloff curve, and flow velocity to push water along the spline tangent.
To make a GameObject float realistically along your ocean and spline rivers, attach a custom physics script like this:
using UnityEngine;
using Crest;
public class SimpleFloatingBody : MonoBehaviour
{
[SerializeField] private float rigidBodyDamping = 0.05f;
[SerializeField] private float buoyancyForce = 15f;
private Rigidbody rb;
private SampleHeightHelper heightHelper = new SampleHeightHelper();
private void Start()
{
rb = GetComponent<Rigidbody>();
}
private void FixedUpdate()
{
// Initialize sample query at object position
heightHelper.Init(transform.position, 0.5f);
// Fetch surface height from Crest physics queries
if (heightHelper.Sample(out Vector3 disp))
{
float waterHeight = OceanRenderer.Instance.SeaLevel + disp.y;
float depth = waterHeight - transform.position.y;
if (depth > 0f)
{
// Apply upward force when submerged
Vector3 force = Vector3.up * depth * buoyancyForce;
rb.AddForce(force, ForceMode.Acceleration);
rb.velocity *= (1f - rigidBodyDamping);
}
}
}
}
| Category | Tools / Particles & Effects |
|---|---|
| Latest Version | v1.4.2 (3 tracked releases) |
| File Size | 138.55 MB |
| Added to Platform | February 13, 2026 |
| Views | 10 views |
| Downloads | 2 downloads |
| Favourites | 0 favourites |
| Official Store | Buy Original License on Unity Asset Store → |
| Issue with Package? | Report Broken Link → |