mathr / blog / #

zoomasm 1.1 released

Zoom videos are a genre of 2D fractal animation. The rendering of the final video can be accelerated by computing exponentially spaced rings around the zoom center, before reprojecting to a sequence of flat images.

Some fractal software supports rendering EXR keyframes in exponential map form, which zoomasm can assemble into a zoom video. zoomasm works from EXR, including raw iteration data, and colouring algorithms can be written in OpenGL shader source code fragments.

zoomasm 1.1 brings two new features, and plenty of bug fixes. Full change log:

  • New: F9 key toggles user interface transparency.
  • New: .ppm output file saves an image sequence without FFmpeg.
  • Fix: no more garbage audio output for an instant on device open.
  • Fix: fix build with recent upstream imgui changes.
  • Fix: when loading a session, don’t reset the last timeline waypoint zoom depth to the default for the input keyframe count.
  • Fix: reduce timeline Z slider range to avoid glitches at extremes.
  • Fix: add an example preset that was missing from the distribution.
  • Doc: add demo/tutorial videos to documentation.
  • Doc: round recommended keyframe image sizes to multiples of 16 so that exrsubsample can be used without worrying about edge effects.
  • Win: include presets/ folder in Windows distribution.
  • Win: include PDF manual in Windows distribution.
  • Win: update imgui, miniaudio, tomlplusplus to latest versions. miniaudio needed a small patch to build as C++ void* casts must be explicit (unlike as in C); this will hopefully be fixed upstream soon.

Get it at

I had a report that zoomasm/FFmpeg deadlocks when recording on Microsoft Windows (it works fine in Wine on Linux, and the native Linux version has no issues). Make sure you save your session before recording on Windows, and if you have problems you can try the PPM export as a last resort (it doesn't need FFmpeg, but the output file size is huge). You can then encode with FFmpeg from the command line using -i foo-%08d.ppm (assuming you saved the output as foo.ppm). If anyone can fix the bidirectional process communication code to work on Microsoft Windows reliably, git patches would be very welcome via email - I don't have any Microsoft Windows here to test with.