v16
object 061d48215af2ad72914a01605498214176c2d0ac
authorClaude Heiland-Allen <claude@mathr.co.uk>
Mon, 19 Jan 2015 16:23:18 +0000 (16:23 +0000)
mightymandel v16 stable release

User interface improvements:

* new parser for pre-processed FractInt .ppar center-mag variant
* new parser for FractInt .gif embedded metadata
* new parser for mightymandel .png embedded metadata
* `--interactive` mode waits for events instead of polling when rendering is
  finished, to reduce idle CPU load
* `extra/zoom` assembler has an optional frames-per-second argument (default 25)
* much more metadata is saved in PPM files and preserved by `extra/ppm2png.sh`
* available video memory and an estimate of the amount mightymandel allocated
  is reported on startup with `--verbose info`
* decoupled window size `--geometry` from image size `--size`
  * render HD zoom image sequence with a small window while you do other stuff
  * have HD window with a small image to speed up calculations while exploring
* new `--timeout` flag (0 for infinite, >0 for that many seconds, default 0)
  sets initial timeout
  * useful for tiled rendering where some tiles may be 100% interior
  * also used by the test suite to save output images while still timing out
* new `--max-blob` flag sets maximum size (in pixels) of glitched blobs to
  ignore (default 1, set to 0 if you want previous behaviour)

Rendering improvements:

* `--slice` option (range from 0 to 8, default 0) splits calculation into
  batches
  * allows rendering larger images in the same amount of video memory without
    the potential seams from tiling
  * provides progressive display with lofi image appearing quickly, gradually
    increasing in quality to final hifi image
  * number of iterates with `--slice S` is number of pixels / 4^S
  * per-iterate video memory usage is 160 bytes (--de) and 128 bytes (--no-de)
* per-pixel video memory usage reduced from 20 bytes to 16 bytes (--de) and
  12 bytes (--no-de)
* interior checking for period 1 cardioid and period 2 circle (fp32 and fp64)
  * halves time taken for fp64-seahorse-valley.mm
* increased the default number of iterations performed in each GPU pass
  * time taken for fp32-large-minibrot.mm reduced from 0.879s to 0.749s
  * time taken for fp64-large-minibrot.mm reduced from 9.982s to 7.262s
  * time taken for fpxx-large-minibrot.mm reduced from 392.4s to 306.6s
* glitch correction reference finding improved
  * should use fewer references for most images
  * uses a two-pass blob extraction method
  * first pass extracts glitched blobs
  * second pass extracts the most glitched sub-blobs within each blob
* `--no-glitch` masking defaults to black if all neighbours are glitched too
* `extra/zoom` assembler adds motion blur
  * variable shutter speed (range from 0.0 to 1.0, default 0.5, set to 0.0 if
    you want previous behaviour)
  * reduces unpleasant strobing at standard frame rates for fast zooms
  * improves compressibility (better quality at lower bitrates)

Documentation improvements:

* documentation available online at <http://mightymandel.mathr.co.uk>
* reformatted in doxygen-flavoured markdown
* `make -C doc` includes the user documentation too
  * output in `doc/mightymandel/index.html`, requires javascript
  * tested with doxygen-1.8.1.2-2 from Debian Wheezy
* documentation files renamed with `.md` extension and moved to `doc/`

Build system improvements:

* compiling from a release tarball works without git
* extra libraries needed on some systems are linked automatically
* version string is always up to date (regenerated each build)
* `make DEBUG=-s`compiles without debugging support (but `make clean` first)
* cross-compiling from Linux to Windows 32bit and 64bit (see \ref WINDOWS)
* compiling on OS X might be possible (untested stopwatch implementation)
* `release.sh` builds a few variants at once, tagging them by version

Internal changes:

* refactored parsers into separate files
* new stopwatch module for time measuring functionality
* new filename module for generating suitable filenames
* new metadata module for storing metadata about images
* new vram module for checking available video memory
* new slice module for generating slice ordering tables for progressive display
* refactored render engine core to poll for events
* static texture unit assignment simplifies code and reduces rebinding
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQEcBAABAgAGBQJUvS+hAAoJEHZDo4jueIiWkS0H/20uj1/zoEh3z7aHq/6n6P57
niSOeDRU/l7Gd765pTyaxOhM1pCxrIvaMA5KvF8zF7RQT6HClNmCUaQV1AZ00RVF
eczWbAHOZskDbjo0YhKqV7a5SS/N8vRjIeCagIaCqVzPBRVkqe1zcwhD/6zUh0v7
fgtsqrkEtFHIm4HnalgMMjt6YLlBGonIYwU4foGJIZ5jp595j1sPMLIjRQYeZc0l
oifh9x1sqsRagpsa37K8Ku00NLbAi7FMXHDnVHjiOUDHNX7SIG17ylhYBSaHiwQu
kOT5CZc19z3YlJyr4WZGC9leDZ6X/b0mUcLX7zNkGbqiJ73oi3hz6/3lGIG8oRE=
=qFnS
-----END PGP SIGNATURE-----