world X.
world Z.
time, in seconds (matches the value the renderer passes via ocean.time).
spectrum (same array the renderer uses; un-routed by LOD).
rest-plane Y (matches OceanLookSettings.oceanLevel).
Optionalout: Vec3optional out-param for the normal to avoid allocation when called every frame.
Evaluate the Gerstner-spectrum surface height + normal at world (x, z) at time
t. Mirrors the per-waveevalGerstnerfrom the WGSL helpers, summed across the spectrum.