v15
object b65c0a5c52298baa19b1d61d3d6dc9b317143942
authorClaude Heiland-Allen <claude@mathr.co.uk>
Thu, 1 Jan 2015 22:43:25 +0000 (22:43 +0000)
mightymandel v15 stable release

User interface improvements:
  * --tile and --zoom can be combined
  * --zoom saves separate files instead of piping to stdout
  * --tile supports non-square tilings
  * keyboard controls for translation (cursor keys with shift and control mods)
  * all user interface actions (apart from close window) are disabled when not
    in interactive mode (to avoid accidentally messing up a render)
  * new parser for preprocessed .ppar FractInt files (thanks Adam Majewski)
    (only "corners" format is supported, "center-mag" is coming soon)
  * new script extra/split2ppar.sh to pre-process FractInt .par to .ppar

Rendering improvements:
  * very important fix to a bug that caused severe image corruption (an update
    to a variable was inside an if when it should have been outside)
  * --no-de uses 8 neighbours for smoother appearance (previously 4)
  * --no-glitch uses 8 neighbours for smoother appearance (previously 4)
  * --no-approx flag to disable series approximation in case of corrupt images
  * atom finding (used for initial reference point) more robust against failure
  * completion checking simplified, with a --sharpness flag to determine how
    sharp interior regions are
  * for perturbation rendering, a new --max-glitch flag sets a threshold of how
    many pixels are allowed to be glitched
  * glitch correction algorithm changed (now picks the most erroneous pixel
    with the highest iteration count)
  * tiled rendering has an automatic timeout that prevents infinite loop if a
    tile is 100% interior
  * extra/zoom sequence assembler output quality boost with simpler code

Documentation improvements:
  * updated all the user documetation
  * added a change log (this file)
  * classified the todo list by difficulty
  * added a hacking guide containing tips for hacking on mightymandel
  * some source code documentation in doxygen markup (incomplete so far)
  * more examples from http://www.chillheimer.de/kallesfraktaler/glitches.zip
  * more examples from http://reocities.com/CapeCanaveral/5003/par.htm
  * more examples from Adam Majewski and myself (Claude)
  * archived test suite results in test/

Build system improvements:
  * automatic version string generation using git describe
  * link with -lm
  * source code documentation to HTML extraction (make -C src doc)
  * test suite generates a nice tidy CSV file (make -C src test)
  * test suite warns to commit changes first (so version will be correct)
  * strip comments from glsl when building (C99 string constant must be <4095)

Internal changes (the big de-inversion of control):
  * struct view is gone, had too many unrelated things in one place
  * struct S is gone, had to much shared global mutable state for understanding
  * state module is gone, too much centralized interlocking confusions
  * new interact module that handles all the semantics of keyboard/mouse/etc
  * mightymandel glfw callbacks now delegate to interact module
  * new logging module that handles output at various levels of detail
  * new startup module that handles command line input (version, usage, banner,
    argument parsing)
  * record module simplified with a saner file name template, and the date is
    set once at program startup instead of changing with every save
  * new tiling module to handle all tiling state
  * new zoom module to handle all zooming state
  * render.h defines a struct render_options for all control over rendering, it
    has a flag set if paramters have been changed that require rendering to
    restart, otherwise the new visualisation parameters are applied live

Other internal changes:
  * fp##_escaped "flush" flag removed, now the necessary functionality is in
    fp32_colour "done" flag and fpxx_init without rasterizer discard
  * don't split iteration count into int/float parts for --no-de to simplify
    the colouring code amongst other things
  * uniformized all the stuff that needs to transform pixels to coordinates or
    the reverse to use center/radius/aspect representations
  * fpxx_escape uses precision of reference (instead of center) to initialize
  * usage of VBOs validated, no longer risking image corruption
  * skip check for escaping reference
  * lots of LOG_DEBUG messages added
  * factored out window creation to a new function
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQEcBAABAgAGBQJUpc21AAoJEHZDo4jueIiWoWEH/0rpthrSK4xZ9xyROhqNpMFi
Isq0uegQ6ucD8XP2n68tnNQ/Z+z9mhjUVjkhEdedBAMY2YDwqLZ4rsibMggXN9se
4aVE/Rxcy6mi3QH+jwYgqgQQlfpo08Z986EtCbTKZRiiuHE1su2fPV0I7FBB4Mu8
MEw+btkDj6fegmRoJGnTiKA//w5PMe2pz+acUdBLBMKBI/G0Duf3JoPO1ZegcN/T
1OKL4VMOx15qEyjoydls+kAmGCllv0BD53Tp3Y6ShtpVsFn6eheScJVAvUQtVaZZ
GhqygoBajNyReUV2m7zjRfZ+iyn2OPTh2/kI106sHB5Nhl1Vp9wcjIfZCdisq28=
=Yzk2
-----END PGP SIGNATURE-----