TidalBody Inspector Reference
Every field of the TidalBody component, foldout by foldout.
TidalBody is the main scene component for a single water surface. It owns mesh
generation, references a shared TidalCompute, and coordinates the zone, volume,
planar-reflection, interaction, and underwater subsystems. Its inspector is organized into
foldouts: Core, Underwater, Zones, Mesh Generator, Volumes, Planar Reflections,
Interaction, Underwater Particles, and Mis. Field names below use their
inspector display names.
Core
The essential wiring of the body: which material and FFT simulation it uses, which camera it follows, and how its footprint and depth are defined.
| Field | Type · Default | Description |
|---|---|---|
| Surface Material | Material · required | The water material (shader Tidal/Tidal). Required. The inspector shows an
Edit button that jumps to it. See the Tidal
Surface reference. |
| TCompute | TidalCompute · required | The TidalCompute component running this body's FFT. Required; typically shared
across bodies. See Tidal Compute. |
| Viewer Cam | Camera · main camera | Camera the mesh LODs and interaction clipmaps follow. Empty uses the main camera. |
| Update Material Properties | bool · on | Live-syncs inspector edits of the material each frame (CRC-gated, cheap). Leave on. |
| Show Material Lods | bool · off | Debug tint of mesh LOD rings (red / green / blue). Off for normal use. |
| Infinite Bounds | bool · on | On: the ocean extends infinitely around the viewer. Off: tiles fill exactly Body Size, and water queries outside the rect return the invalid sentinel. |
| Body Size | Vector2 (m) | XZ world size of the bounded body, centred on the transform. Yellow edge handles in the
scene view resize it; the scale gizmo folds into it. (Formerly OceanSize;
serialized data migrates automatically.) |
| Vertex Density | int 8-400 · 15 | Vertices per tile side. The single biggest mesh quality / cost knob. |
| Body Max Depth | float (m) | Metres below the body plane where underwater rendering stops. Keep generous with big waves; deep values do not cost performance. |
Underwater
Controls the entire submerged stack - from-below surface, fog, meniscus, volumetric lights, and cross-section masks. Most feature toggles here can defer to the render feature's per-tier defaults so quality scales with the active URP renderer. See the Underwater system page for the full picture.
| Field | Type · Default | Description |
|---|---|---|
| Has Underwater | bool | Master toggle for the entire submerged stack (from-below surface, fog, meniscus, volumetrics, cross-sections). Off = zero underwater cost, including the from-below geometry passes. |
| Volume Masks | enum · Use Render Feature | The cross-section mask pass. Values: Use Render Feature Setting / On / Off. Inspector warnings appear (on the body and on the volume) when a volume requests a mask this setting disables. |
| God Rays | enum · Use Render Feature | Sun shafts underwater. Use Render Feature Setting / On / Off. When enabled, the material's God Ray Strength still shapes and enables the look (strength 0 = off regardless). |
| Volumetric Lights | enum · Use Render Feature | Point / spot light scatter underwater. Use Render Feature Setting / On / Off. |
| Volumetrics Resolution | enum · Use Render Feature | Resolution budget of the volumetric light buffer (longest side): Use Render Feature Setting / Half Screen / Fixed 1440 / 960 / 720 / 480. Fixed budgets cost the same at any display resolution; the buffer is blurred by design, so lower values mostly soften the glow. The buffer never exceeds half-screen. |
TidalUWFeatureMode { UseRenderFeature, On, Off }
TidalUWVolumetricsResolution {
UseRenderFeature = -1,
HalfScreen = 0,
R1440,
R960,
R720,
R480
} Camera-following motes and bubbles are configured separately in the Underwater Particles foldout below.
Zones
Zones are baked per body into a zone map (height / damping / flow). Zone components are created via
GameObject → Tidal 2 → Zone → Damping | Height Modify | Flow Current (default footprint
scale 10×1×10, Affected Layer Mask = the Water layer). Zones re-bake automatically on change; there
is no per-frame per-zone cost. Full details on the
Tidal Zone page.
| Field | Type · Default | Description |
|---|---|---|
| Damping Zone | component | Calms the water inside its footprint - useful for harbours and sheltered coves. |
| Height Modify Zone | component | Raises or lowers the baked water height within its footprint. |
| Flow Current Zone | component | Bakes a directional current into the flow map, consumed by rendering, foam transport, and buoyancy. |
Mesh Generator
The quadtree tile generator (TidalOceanQuadMeshGeneratorSubSystem). Tiles split around
Points of Interest so detail concentrates where it matters. The generator uploads a LOD map
(_TidalLodMap) each layout change so underwater reconstruction matches the rendered
vertex density exactly - no user action needed.
| Field | Type · Default | Description |
|---|---|---|
| Points Of Interest | Transform[] | The ONE shared list of transforms (plus the camera, always POI 0) that both the mesh detail and the interaction clipmaps centre on. Add boats and characters here for high detail plus interaction around them. |
| Split / tile tuning | float · int | Split-distance, root-tile-radius, and tile-resolution style tuning fields that shape how aggressively tiles subdivide toward each POI. |
Volumes
Body-level settings for the volume subsystem (TidalVolumesSubSystem) that uploads
volume data to the GPU. The volumes themselves - EXCLUDE cavities and INCLUDE containers - are
documented on the Tidal Volume page.
| Field | Type · Default | Description |
|---|---|---|
| Update Volumes | bool · on | Continuously re-upload volume data at the rate below. Moves, scales, and set changes always upload immediately regardless of this toggle. |
| Update Hz | int 10-240 · 60 | Upload rate while volumes are at rest. |
Planar Reflections
A mirrored camera per body (TidalPlanarReflectionSubSystem) produces high-quality
reflections. The result is consumed by the surface material's Planar Reflection
Strength - a strength of 0 disables the camera entirely.
| Field | Type · Default | Description |
|---|---|---|
| Update Hz | int 10-240 · 120 | How often the reflection re-renders; the last frame is reused between updates. |
| Reflection Mask | LayerMask | Layers rendered into the reflection. Exclude Water and anything expensive. |
| Downscale | int 1-10 · 2 | Resolution divisor versus the screen. |
| Clip Plane Offset | float 0-2 · 0.07 | Pushes the mirror clip plane below the surface to hide wave-crest clipping. |
| Distance | float 50-1000 · 300 | Far clip of the reflection camera. |
| Reflect Skybox | bool · on | Renders the skybox into the reflection. |
| Allow Post Process | bool · on | Applies post-processing to the reflection camera. |
| Render Shadows | bool · off | Renders shadows into the reflection. |
- The reflection camera is hidden from the hierarchy unless the body's Debug toggle is on.
- It pauses automatically while the camera is more than 1 m under the waterline (nothing on screen samples it there) and resumes instantly on surfacing.
- Strength 0 on the material disables the camera entirely - no cost.
Interaction
The clipmap canvas (TidalCanvasSubSystem) drives dynamic foam, interactive wake, and
the flow field, following the Points of Interest. Each layer toggles independently; a disabled
layer costs nothing and all bindings stay valid. See the
Interaction Canvas system page.
| Field | Type · Default | Description |
|---|---|---|
| Base Tile World Size | float 10-80 m · 30 | World size of the finest clip level; each coarser level doubles it. |
| Max Lod | int 4-10 · 4 | Number of nested clip levels above LOD 0. |
| Tile Resolution | enum · 256 | Texels per clip tile, shared by all layers (64 / 128 / 256 / 512 / 1024). |
| Clip Snap Meters | float 0.25-5 · 1 | How far a POI moves before tiles re-anchor. |
| Enable Foam Layer | bool · on | Master toggle for the dynamic foam layer. |
| Enable Wake Layer | bool · on | Master toggle for the interactive wake layer. |
| Enable Flow Layer | bool · on | Master toggle for the flow / current layer. |
| Wake Produce Foam | bool · off | Fast / steep wakes inject foam into the foam layer. Needs both the foam and wake layers enabled. |
Underwater Particles
Camera-following motes and bubbles (TidalUnderwaterParticlesSubSystem), fully
procedural (no assets) with deterministic positions. Particles dim with the sun (matching the
material's Darkens With Sun) except where point / spot lights reach.
| Field | Type · Default | Description |
|---|---|---|
| Enable Particles | bool · on | Master toggle. |
| Radius | float 2-40 · 12 | Half-size of the particle box around the camera. |
| Mote Count | int 0-2000 · 500 | Number of suspended motes. |
| Mote Color | Color | Tint of the motes; alpha controls visibility. |
| Mote Size | float (m) · 0.015-0.05 | Size range of the motes. |
| Mote Drift | float 0-1 · 0 | Drift amplitude (m) applied to motes. |
| Bubble Count | int 0-500 · 90 | Number of rising bubbles. |
| Bubble Color | Color | Tint of the bubbles. |
| Bubble Size | float (m) · 0.008-0.03 | Size range of the bubbles. |
| Bubble Rise Speed | float (m/s) · 0.25-0.6 | How fast bubbles rise. |
Mis.
Miscellaneous body-wide settings.
| Field | Type · Default | Description |
|---|---|---|
| Height Sampling Iterations | int 1-6 · 3 | Choppy-displacement inversion steps for CPU water-height queries. The physics-field bake uses the same count so GPU and CPU heights agree. |
| Run In Editor | bool · on | Simulate and render in the Scene / Game view without entering play mode. Drives the editor
player loop, so other [ExecuteAlways] scripts tick too. |
| Debug | bool · off | Shows Tidal's hidden runtime objects (planar reflection camera, particle root, tiles) in the hierarchy and enables debug niceties. |
Transform rules
TidalBody enforces these transform rules because the simulation and mesh are world-axis aligned.
- Position - free; the Y position is the water level.
- Rotation - locked to identity; the editor reverts any rotation.
- Scale - folded into Body Size (bounded bodies) or reset (infinite); always ends at (1, 1, 1). The fold applies when the scale-gizmo drag ends.