The close-up detail layer: one shared baked wave patch, replayed as a flipbook, turned into a detail normal map and advected along the local flow.
Close to the camera, any wave field runs out of resolution. A patch that reads perfectly at fifty metres becomes a smooth plastic sheet at two. The detail layer exists to fill that gap: a small, fast tiling wave patch whose only job is to add fine structure to the surface, plus the machinery that keeps it animating, advecting with the flow, and correctly sloped without an artist tuning it into place.
The detail patch is configured once in the plugin's runtime settings and shared by the whole world. It is deliberately not derived from any water body's own waves, and the source comments are explicit about why: binding it to a body's waves would make the detail vanish the moment someone picked a non-spectral wave type, would tie a shared layer to one body's lifetime, and would put a live spectral simulation on the critical path of every frame. Replaying a bake costs one small pass instead. The patch is a flipbook: a columns-by-rows atlas of displacement frames played over a loop duration, wrapping seamlessly, with a patch length that converts texel spacing into world distance.
In the shallow-water surface shader the detail flipbook is not sampled on static UVs. Two staggered phases advect the sampling position along the local velocity, and a cyclic blend hides each phase reset, the same technique the interaction foam's flow mapping uses. Velocity is converted into UV space through the patch length, so the drift is physically scaled with no artistic multiplier on top. Per-cycle pseudo-random offsets break up repetition between phases. The baked vertical displacement rides on the solver surface and the baked horizontal displacement sharpens crests, exactly as the ocean's baked path does. Three independent low-velocity gates, one each for the wave normal, the world position offset and foam, fade the whole layer out in still water, because slow water should not be carrying fast-water detail.
Two other mechanisms share the same job. The water material carries a tiling normal-and-height texture with separate near and far strengths, near and far scales, a far displacement term, a Fresnel power on the distant normal, and distant normal length and offset controls, so the tiling normal can be strong underfoot and restrained at the horizon. On the FFT ocean, an anti-tiling blend fades the pure patch into a mix of four neighbouring tiles, each offset by a hash of its tile coordinates, using a quintic smoothstep so no inflection is visible at a tile boundary. Near the camera the pure patch is kept intact; the blend only takes over with distance.
| Before | Oceanology Pro | |
|---|---|---|
| Wave-type coupling | Detail disappears if the body uses a wave type that cannot produce it | Survives any wave type, because it is a separate bake |
| Frame cost | A live spectral simulation on the critical path | One small compute pass, and only while a consumer is registered |
| Lifetime | Tied to one water body | One shared layer per world |
| Editor and paused behaviour | Depends on whatever the body is doing | Own clock, ticks in editor and while paused, animates identically everywhere |
| Atlas layout | 1 to 16 columns and rows, default 8 by 8 |
| Frames | Default 64; must not exceed columns times rows or the patch is rejected |
| Loop duration | Default 16 seconds, minimum 0.01 |
| Patch length | Default 2000 cm, minimum 1; sets the slope of every detail normal |
| Slope Scale | 0.01 to 10, default 1, where 1 means normals are consistent with the patch they came from |
| Cell size fed to the shader | Patch length divided by frame resolution, divided by Slope Scale |
| Output target | RGBA16f render target at the atlas frame resolution, 8 by 8 thread groups |
| Frame blend | Four-frame Catmull-Rom, frames chosen from the subsystem's own clock |
| FFT anti-tiling range | Pure patch to 10000 cm, fully blended by 50000 cm |
This is one entry on the Galidar roadmap. For what already shipped in each release, see the Changelog.