Each seafloor in ApertureLab is a procedural recipe rather than a stored asset: it is built from published seabed morphology, evaluated at simulation resolution, and regenerated exactly from a seed. Re-seeding the recipe gives each scene a different seafloor, which matters for training data because a model trained on scenes that share one seafloor learns that seafloor.
Scene
A scene names the seafloor, the objects on it, the vehicle's motion, the sonar, and the products to write. Scenes inherit from each other, so a variation is a short file rather than a copy. A profile bundle can carry two imaging configurations at once, so the same seabed can be rendered as both a synthetic-aperture collection and a real-aperture side-scan line without a second scene.
Six bottom types are built in (sand, rippled sand, mud, rock, gravel, silt), each calibrated to a measured backscattering strength, and a scene can define its own. Objects come from a catalog of 69 placeable models, plus procedural rock and biota generators.
Realism
Straight lines are a common artifact of synthetic seabeds: a ripple field that stops abruptly on a grid boundary, a sediment patch with corners, a roughness change along a raster edge. A model trained on such scenes learns the artifact.
Seafloor zones are painted as a raster and then blended with a warped, feathered boundary, so a bottom-type change follows an irregular line and the roughness crossfades across it. The feather runs inward from the boundary rather than outward, which is what keeps a ripple patch from bleeding into its neighbor. Seam quality is scored in the test suite across all fifteen pairs of bottom types.
The features themselves follow published morphology: ripple geometry after Tang et al. 2009, pockmarks after Hovland and Judd, and seabed roughness after Goff and Jordan. Burial and scour follow Shields-criterion sediment mechanics, so a partially buried object sits at the depth the sediment and current would produce.
Texture
Seafloor texture is authored the way a Blender artist builds a material: as a graph of nodes. Seventeen node types are available (e.g., fractal noise, multifractal, Voronoi in several modes, the Tang ripple model, power-law roughness, pockmark and rock scatter, math and mixing operators). Together they drive four channels at once: the bathymetry, the bottom-type map, a per-cell backscatter gain, and rock placement.
The noise is a pure integer hash, so a graph evaluates identically at any resolution, on CPU or GPU, from the same seed. A graph therefore defines a reproducible distribution of seafloors rather than a single asset, which is the property that matters for training data. One graph reseeds into thousands of statistically distinct seafloors, and a scene that produced an unexpected result can be regenerated exactly.
Ground truth
Each pair below shows one seafloor twice at matched framing: the heightfield the scene defines and the sonar image the simulator produces from it. Every downstream label is computed from this authored geometry, so the labels are exact rather than estimated.
The heightfield preview takes 30 seconds and can be approved before any GPU time is spent on the image; the simulator traces exactly the approved geometry.