Frequently Asked Questions
Practical answers for common Tidal 2 situations.
Why does my object teleport to a huge negative Y?
You almost certainly wrote an unchecked GetWaterHeight result into a transform.
GetWaterHeight returns float.MinValue (≈ -3.4e38) when there is no
valid sample - outside a bounded body's rect, beyond clipmap coverage, or before the first GPU
readback lands in the first frames of play.
- Always test
h > float.MinValue(orh < -1e30f) before using the height. - Or use
TidalPhysicsFieldSubSystem.TryGetWaterSurface, which returnsfalseinstead of a sentinel. - Feeding an unchecked value into a transform triggers Unity
"Invalid worldAABB"errors. See the Water Queries page.
Why is my water black in a build?
In player builds, per-object light probes are unbound for the fullscreen shading pass, which used to make the water and foam render black (worst at night). Tidal 2 binds ambient / lightmap data globally for that pass, so this is fixed. If you still see it:
- Run the Validator (
Window → Tidal 2 → Validator). - Confirm the bake shaders (zone bake, physics field, caustics) are in Project Settings → Graphics → Always Included Shaders - a common build-only failure the Validator flags.
Does Tidal 2 support VR / XR?
No. Experimental VR/XR integration was withdrawn from the 2.0 release (the OpenXR loader's play-mode initialization conflicts with editor workflows on some setups). VR support will return later as a separate, opt-in package configuration.
Can I have multiple water bodies?
Yes - up to 254 bodies (limited by stencil indices). Each body has its own
settings, material, GBuffers, zones, and canvas data, so bodies no longer fight over global
bindings. Note that per-body rendering-layer bits wrap past 32 bodies; that is visual sharing, not
a failure. Water queries are per-body - resolve the right body with
TidalManager.GetCameraTidalBody(cam).
Why is my zone or volume not affecting a body?
Scoping is now enforced per body. A zone or volume only applies to the bodies
named by its Affected Bodies list and Affected Layer Mask. Check that
the target body is in scope - a mismatched layer mask is the most common cause of an
"inactive" zone or volume.
How do I make something float?
Add the TidalBuoyancy component to any Rigidbody and assign 3-4 Float Points (empty
child transforms around the hull). It handles per-point uplift, air/water drag switching, current
push from the flow field, wave slide, and roll/pitch stabilisation, and auto-binds to the first
water body if none is assigned. It also ignores invalid water-height samples and self-recovers
from non-finite poses. See the Buoyancy page.
Which platforms are supported?
Windows Standalone on D3D11 / D3D12 is the optimized and tested target for 2.0. Vulkan is not supported in this release (a fix is planned for a follow-up), WebGL is unsupported (compute shaders required), and other platforms/APIs are untested. Requires Unity 6 (6000.0+) with URP 17; there is no Built-in or HDRP support. See Compatibility.
Why won't my water body rotate?
Bodies are world-axis aligned by design - the simulation and mesh assume a horizontal water plane, so rotation is locked to identity and the editor reverts any rotation you apply. Position is free (Y = water level), and scaling folds into Body Size for bounded bodies (the transform scale always returns to 1,1,1).
Where can I get support?
For bug reports, questions, or support requests, email:
support@warpdev.co