Release Notes
v0.5.6 — 2026-06-03
New Features
Shallow-water transparency for rain-on-grid (-wetdepth, a / A)
A new
-wetdepth <float>option fades out very shallow water so that near-dry cells do not clutter the view in rain-on-grid simulations. Triangles with depth below the threshold fade linearly from fully transparent (dry) to the minimum opacity (-alphamin).Adjust the threshold interactively with
a(decrease) /A(increase), stepping through{1, 2, 5} × 10ⁿvalues (0.05 → 0.1 → 0.2 → …). Set to 0 (afrom 0.05) to return to the standard opacity ramp.
UTM georeferencing override (--epsg)
Pass
--epsg <EPSG-code>to supply or correct the UTM zone used for automatic map tile fetching. Useful when the zone embedded in the SWW file is missing or records the wrong hemisphere:anuga_viewer --epsg 32755 simulation.sww # force UTM zone 55 SouthStandard UTM EPSG codes are accepted: 32601–32660 (north), 32701–32760 (south).
Redesigned information HUD
Status items are now spread across the side margins instead of stacking in the centre-bottom, leaving the terrain view unobstructed:
Left edge:
wireframe (w),culling (c),color (v/V),wetdepth (a/A)Right edge (right-aligned):
recorder (1),grid (g),vscale (z/Z),mode (t)Bottom: filename (dedicated row, free to stretch)
Top corners:
ANUGA Viewertitle and simulation timeEach label now shows the key that controls it (e.g.
color (v/V)), so the HUD doubles as a quick reference.The
ikey cycles through three states: full → minimal (title + time only) → off → full. Minimal mode is useful for screenshots and presentations.
Bug Fixes
Satellite texture black when ``–epsg`` corrects the hemisphere — the stitched
_satellite.jpgcached from a previous run (built from wrong-zone tiles) was silently reused. The UTM zone is now embedded in the output filename (e.g._z55S_satellite.jpg) so each zone gets its own cached texture and stale files are never picked up.``a`` key stuck at 0.1 — pressing
ato decrease the wetdepth threshold from 0.1 returned 0.1 unchanged becausenicePrev(0.1)clamps at its floor. The 0.1 → 0.05 step is now handled explicitly.Redundant georef sidecar — OSM and satellite textures cover the same UTM extent so their
.georeffiles were always identical. Both now share a single_z55S.georeffile.
v0.5.5 — 2026-06-01
New Features
GDAL-free map tile fetching via libcurl
Map tiles (OSM and ESRI satellite) are now fetched with libcurl and pure inverse Transverse Mercator mathematics — no GDAL required. This removes ~150 MB of transitive dependencies and shrinks the AppImage from 65 MB to 14 MB and the Windows installer by ~25 MB.
GDAL can still be enabled for
-texture GeoTIFFgeoreferencing by building withmake GDAL_LIBS="$(gdal-config --libs)" GDAL_CFLAGS="$(gdal-config --cflags)".
Windows one-click installer
A self-contained NSIS installer (
anuga-viewer-windows-setup.exe) is now provided on the Releases page. It registers.swwfile associations, adds Start Menu and Desktop shortcuts, and includes a standard uninstaller.
Per-tile download progress
A progress counter (e.g.
[OSM] tile 5/20) is printed to the terminal while map tiles are fetched, giving feedback during the initial download on slower connections.
Bug Fixes
ESRI satellite tiles saved with wrong extension — ESRI serves JPEG tiles despite no format hint in the URL; tiles are now detected by magic bytes (
0xFF 0xD8) and saved as.jpg.Stale GDAL libs in AppImage —
linuxdeployonly adds libraries, never removes them; old GDAL deps persisted across builds untilAppDir/usr/libis cleared at the start of eachmake appimagerun.
v0.5.4 — 2026-05-31
New Features
Precomputed max quantities (faster startup for large simulations)
When an SWW file was produced with ANUGA’s
Collect_max_quantities_operator(orset_collect_max_quantities), the viewer reads the pre-stored centroid arrays (max_stage_c,max_depth_c,max_speed_c,max_uh_c) directly instead of scanning every timestep. This can reduce startup time significantly for large multi-processor simulations. For SWW files without these variables the viewer falls back to scanning all timesteps as before.
Independent bedslope texture cycling (t key)
The
tkey now controls only the bedslope texture, independently of the water colour mode and transparency. The available modes cycle in sequence (only modes with tiles present are offered):
Mode
Bedslope appearance
colourTerrain shaded by elevation (no texture)
osmOpenStreetMap tiles draped over terrain
satelliteESRI satellite imagery draped over terrain
A
-texturefile on the command line adds amapmode alongsidecolour. Water transparency is now fully independent oft.
Independent colour range endpoint controls
The colour scale endpoints can now be adjusted independently:
Key
Effect
]Increase the right endpoint (max) by one step
[Decrease the right endpoint (max) by one step
}Increase the left endpoint (min) by one step (stage modes)
{Decrease the left endpoint (min) by one step (stage modes)
.Pan the entire range right by one step (stage modes)
,Pan the entire range left by one step (stage modes)
The step size is proportional to the current range width so nudges stay responsive at any zoom level. Neither endpoint will cross zero in the direction it came from.
Previously
[/]zoomed symmetrically around the range midpoint, making it hard to set one bound without disturbing the other.
Smarter colour range defaults
Colour scale limits are now initialised from actual data values:
Stage and max-stage ranges are detected from the wet-cell values at startup, not the full terrain elevation span.
Depth, speed, and momentum limits are set from the per-vertex maxima.
All limits are rounded to a nice
{1, 2, 5} × 10ⁿboundary.
Bug Fixes
Map texture distorted at startup — OSG’s default power-of-two requirement was silently downscaling GeoTIFFs with non-power-of-two dimensions (e.g. 2048 × 1392 → 2048 × 1024, a 26 % height loss). Fixed with
setResizeNonPowerOfTwoHint(false); modern OpenGL handles non-power-of-two textures natively.Map tile reloaded unnecessarily at startup — the bedslope constructor called
sww->getBedslopeTexture()even when the viewer starts in untextured mode, triggering a redundant disk read on every launch.CM_MAX_STAGE colour scale wrong — was mapping max-depth values through the depth colour scale instead of mapping absolute max-stage elevation through the stage scale. Now uses the same
stageoffset/stageheightmaxreference asCM_STAGE.Colour range keys did not repaint water surface — nudging the colour scale required waiting for the next timestep change before the new range was visible. A forced refresh is now triggered immediately.
v0.5.2 — 2026-05-24
New Features
Three-state view mode cycling (t key)
With an OSM or satellite texture loaded, pressing
tnow cycles through three distinct view modes:
Mode
Description
landscape (osm)Map tiles on terrain, water surface hidden — pure map view for navigating the domain
colour (osm)Water coloured by quantity, map tile background
colourWater coloured by quantity, plain terrain
The viewer opens in
landscape (osm)mode so the terrain map is immediately visible. Pressingtonce reveals the flood with the map as a background; pressing again hides the map.
Stage colour scale relative to domain elevation (-stagemin)
The stage colour mode now shows stage elevation above the domain’s lowest bedslope point (auto-detected from the SWW file) rather than above absolute zero. This makes the default
heightmaxof 1.0 m give a meaningful colour range for typical shallow-water simulations even when the domain sits at 600+ m above sea level.Use
-stagemin <float>to set a custom reference elevation (e.g.-stagemin 620for a domain whose lowest point is 620 m ASL). Combine with-hmaxto set the upper bound:-stagemin 620 -hmax 10colours the range 620–630 m.
Bug Fixes
Bedslope texture suppressed after file refresh —
onRefreshData()was unconditionally setting the geometry colour array to the default brown, which inGL_MODULATEmode multiplied against the active map tile texture and made it nearly invisible. The colour is now white when a texture is active, andonRefreshTextured()is called at the end of every refresh to restore the correct tex-coord array and material diffuse.
v0.5.3 — 2026-05-25
New Features
Natural water colour mode (CM_BLUE)
A new
CM_BLUEmode renders the water surface as a flat steel blue with a sphere-mapped environment reflection, giving a realistic water appearance without heat-map colouring. This is now the first (default) colour mode. Pressvto advance to the existing stage / depth / speed / momentum / max-* modes.
Bug Fixes
AppImage resources not found —
fonts/andimages/were not bundled inside the AppImage. They are now included underusr/bin/and located viaSWOLLEN_BINDIR=$APPDIR/usr/binin a customAppRunscript, so the AppImage works from any working directory.Makefile default target rebuilt only one object — placing
-include $(OBJ:.o=.d)before the$(TARGET)rule allowed.ddependency files to hijack the default target. Moved to after the target rule;makenow rebuilds the full binary as expected.
v0.5.1 — 2026-05-23
Bug Fixes
Momentum units garbled —
m²/s(UTF-8 superscript) has been replaced withm^2/s(plain ASCII) everywhere it appears: the-helptext, the HUD colour-scale label, and the timeseries plot y-axis.Help screen unreadable —
-helppreviously printed hundreds of lines of OSG internal options, burying the viewer’s own flags. It now shows a compact, single-screen summary of viewer options and keyboard shortcuts. The full OSG reference is still accessible via--osg-help.
v0.5.0 — 2026-05-23
New Features
Automatic OpenStreetMap texture draping
When an SWW file contains georeferencing metadata (UTM zone and hemisphere), the viewer automatically downloads OpenStreetMap tiles and drapes them as a texture over the bedslope terrain — no extra flags required. The resulting GeoTIFF is cached next to the SWW file so subsequent launches use it instantly.
Attribution: map data © OpenStreetMap contributors — openstreetmap.org/copyright
Satellite imagery option (-maptiles satellite)
Pass
-maptiles satelliteto use ESRI World Imagery instead of the default OpenStreetMap street map. Both GeoTIFFs are cached independently, so you can switch between them without re-downloading.Attribution: imagery © Esri, Maxar, Earthstar Geographics, and GIS User Community
Map tile source flag (-maptiles osm|satellite|none)
Value
Effect
osmOpenStreetMap street map (default)
satelliteESRI World Imagery
noneSkip tile fetch; show bedslope without texture
Bug Fixes
UTM zone not read from SWW — the zone, hemisphere, and corner-offset attributes were read after
nc_close(), so all NetCDF calls silently failed and the zone was reported as −1. Moved all global-attribute reads to before the file is closed.GDAL path compiled out — the Makefile linked
-lgdalbut never defined-DHAVE_GDAL, soosmtexture.cppalways compiled the no-op stub.GDAL_CFLAGSand-DHAVE_GDALare now set automatically whengdal-configis present.
v0.4.0 — 2026-05-21
New Features
Timeseries plot for dry points
Shift + left-click now works anywhere on the terrain, not just on wet triangles. Clicking a dry area shows the timeseries of the selected quantity at that point for the full simulation duration.
Timeseries quantity matches colour mode
The timeseries graph always shows the same quantity as the active colour mode. Pressing
vorVto change colour mode now immediately updates the graph — no need to re-click the point.
Improved timeseries graph appearance
The graph panel now uses a semi-transparent navy background that lets the 3D scene show through. The data line is 2.5 px wide and the grid border is 1.5 px wide, making both clearly visible. Y-axis labels include the quantity unit (m, m/s, m²/s).
Bug Fixes
Timeseries graph invisible — the background panel was assigned to OSG’s
TRANSPARENT_BIN, which caused it to be rendered after all opaque geometry and paint over the grid and data line. Removed the hint so the geode draws in insertion order (background first, then lines on top).AppImage crash on startup —
libfreetype.so.6was not bundled in the AppImage (linuxdeploy blacklists it as “standard”), but conda environments can expose an incompatible version. The library is now included explicitly.
v0.3.0 — 2026-05-21
New Features
Stage colour mode — current absolute water surface elevation is now the
first (default) colour mode. The full cycle (v / V) is: stage →
depth → speed → momentum → max depth → max speed → max momentum → max stage.
Reverse colour mode cycling (V)
Press
V(Shift+v) to step backwards through the colour modes.
Keyboard pan for touchpad users (Shift + arrow keys)
Hold Shift and press any arrow key to pan the camera. Each keypress moves the scene by 3 % of the current eye distance, so panning stays proportional at any zoom level. This provides middle-mouse-button panning for users on touchpads.
Bug Fixes
Camera reset (
xkey) — now reliably resets the view to the default position. Previously the reset was queued as an event and did not always fire.
v0.2.0 — 2026-05-20
New Features
Seven water colour modes (cycle with v)
Four new max-over-time modes join the existing momentum, speed, and depth modes. The max modes are computed once when the file is opened and show the worst-case flood extent frozen in time, independent of the current animation timestep:
max depth — peak water depth at each point over all timesteps
max speed — peak flow speed at each point over all timesteps
max momentum — peak momentum magnitude at each point over all timesteps (m²/s)
max stage — depth above bed at the moment of peak stage (high-water mark)
Interactive vertical exaggeration (z / Z keys)
Press
Zto exaggerate orzto flatten the vertical scale. Each keypress changes the scale by a factor of 1.5. The current multiplier is shown in the HUD alongside the other status lines. The-scalecommand-line option sets the initial value.
Interactive colour scale ([ / ] keys)
Nudge the colour saturation scale for the active mode up or down by 20% without leaving the viewer. The mode name and current scale value are shown in the HUD. New
-speedmaxand-momentummaxcommand-line options set the initial values.
Bug Fixes
Lighting at non-unit z scale — surface normals are now recomputed in world space when vertical exaggeration is changed, giving correct shading at any scale. Previously, normals were distorted by the inverse-transpose of the scale transform, making gently-sloping surfaces appear to be lit from the side.
Speed colour mode — speed is now computed as
momentum_magnitude / depthusing raw NetCDF values in metres, not normalised vertex coordinates. Previously, physically reasonable speeds required an unrealistically largespeedmax(≈ 1000 m/s).Colour gradient direction — the gradient was inverted (red = low, blue = high). It now follows the standard heatmap convention: blue = low, green = mid, red = high.
Depth colour mode — was rendering as uniform grey. Now uses the same blue→green→red gradient scaled to
heightmaxmetres.Switching colour modes — pressing
vnow immediately redraws the water surface. Previously the display was not updated until the next timestep change.Max colour modes animation — the water surface geometry is now frozen at the high-water mark when in any max mode. Previously the mesh still animated with the current timestep, causing flickering wet/dry changes.
Startup window — the viewer now opens in a decorated window (1024 × 768) rather than a borderless full-screen-sized window.
v0.1.0 — 2026-05-19
First packaged release. Pre-built packages available for Linux (AppImage), macOS (DMG), and Windows (ZIP).
Includes the core ANUGA Viewer features:
Animated 3D water surface over bedslope terrain
Bedslope texture mapping (projected or GDAL georeferenced)
Water colour modes: momentum, speed, depth
Timeseries plot on shift+click
Wireframe, culling, lighting, and grid overlay toggles
Camera path recording and JPEG frame export for movie production
Skybox environment