Mandel Machine
Mandel Machine is a highly efficient Mandelbrot set explorer developed by Botond Kósa.
Download area:
Main features:
- Up to 536 MP (~23000x23000) image size
- Up to 32x32 supersampling
- Magnification up to 10000 zooms (image size ~3.2E-3010)
- Max iterations up to 800 millions
- Intuitive mouse navigation:
- Zoom in and out with the mouse wheel
- Zoom in faster by double-clicking
- Click-and-drag to select area to zoom into
- Selection rectangle can be moved, resized and rotated
- Right click and drag to pan (experimental)
- Optimizations to speed up calculations:
- Extensive use of SIMD instruction sets (SSE2, SSE3, AVX) with double data types
- Inner loops implemented in assembly language
- Arbitrary precision fixed point arithmetic using 64-bit integer data types, fully unrolled loops
- Perturbation algorithm with series approximation
- Tweaked Mariani/Silver algorithm to guess areas with monotonic iteration counts
- Multi-core support (up to 32 threads)
- Pixel grouping to fully saturate the execution units of modern CPUs (up to 16 pixels with SSE2, up to 32 with AVX-capable CPUs)
- Iteration counts histogram
- Coloring options:
- 7 palette presets
- Palette can be extracted from any JPG/PNG/BMP/GIF image
- 8 different iteration transfer functions
- Color density & offset adjustable
- Smooth/solid/inverted dwell bands
- Bump mapping to create 3D-look
- Automatic correction of glitches caused by perturbation algorithm
- Detailed statistics
- Full history of changes
- Save/load location and rendering attributes
- Save images as JPG or PNG files
- Copy image to clipboard
Features coming soon:
- Calculate distance estimates
- Palette editor
- Movie maker
Changelog
v1.3.15 - 2015.06.16
- NEW: Zoom into pattern centroid with a single click (experimental)
- FIXED: Application crashes when calculating with series approximation turned off
- FIXED: Application crashes when calculating with iteration limit higher than 10 millions
- Known issues:
- Pixel guessing is not working during glitch correction
- Glitch correction is not working when calculating with scaled doubles
v1.3.14 - 2015.06.14
- NEW: Palette preset: Petal Colors by Alef
- NEW: Window location is saved on exit and restored on startup
- NEW: Reference calculation can be aborted
- IMPROVED: Magnification limit increased to 10000
- IMPROVED: Max. iteration limit increased to 800 millions
- IMPROVED: Progress is displayed during reference calculation
- FIXED: Successive palette changes are not saved in history
- FIXED: Iteration data is sometimes saved incorrectly
- Known issues:
- Pixel guessing is not working during glitch correction
- Glitch correction is not working when calculating with scaled doubles
v1.3.13 - 2014.12.16
- NEW: Palette preset: Grayscale Histogram Coloring
- FIXED: Application crashes when aborting during reference calculation or series approximation initialization
- Known issues:
- Pixel guessing is not working during glitch correction
- Glitch correction is not working when calculating with scaled doubles
v1.3.12 - 2014.12.13
- CHANGED: Default value of OOM diff between terms raised from 1 to 2 to avoid some glitches caused by overly aggressive series approximation
- IMPROVED: History is loaded 20% faster
- FIXED: Application freezes when trying to run the benchmark
- FIXED: Application crashes when increasing image size or supersampling with bump mapping turned on
- FIXED: Successive zoom-in actions by the mouse wheel are not saved in history
- FIXED: Trying to zoom out with the mouse wheel or touchpad may result in zooming in instead
- Known issues:
- Pixel guessing is not working during glitch correction
- Glitch correction is not working when calculating with scaled doubles
v1.3.11 - 2014.12.09
- IMPROVED: Normal map caching allows bump mapping to be performed 2x faster (RAM usage is 12 bytes/pixel; can be switched off under Rendering / Post processing)
- Known issues:
- Pixel guessing is not working during glitch correction
- Glitch correction is not working when calculating with scaled doubles
v1.3.10 - 2014.12.07
- NEW: Bump mapping effect (under Rendering / Post processing)
- IMPROVED: Color density adjustment does not wrap palette around when rendering with histogram coloring
- CHANGED: Default pixel guessing strategy is Fill: only interior areas of the Mandelbrot set are guessed (Interpolate causes artifacts in interpolated areas when bump mapping is enabled)
- FIXED: JPEG file is not truncated to new size when overwriting a larger file
- Known issues:
- Pixel guessing is not working during glitch correction
- Glitch correction is not working when calculating with scaled doubles
v1.3.9 - 2014.11.28
- NEW: Fractal images can be saved in JPEG format
- Known issues:
- Pixel guessing is not working during glitch correction
- Glitch correction is not working when calculating with scaled doubles
v1.3.8 - 2014.11.26
- NEW: Optimization called Local bailout check deferral can be switched off under Computation
- NEW: Palette presets from SeryZone: Strange Soft Colors, Dusk Colors
- IMPROVED: More accurate palette interpolation with no overshoot
- FIXED: Palette preset phaumann's Histogram Coloring corrected by SeryZone
- Known issues:
- Pixel guessing is not working during glitch correction
- Glitch correction is not working when calculating with scaled doubles
v1.3.7 - 2014.11.19
- NEW: Sensitivity of series approximation is adjustable in the Location toolbox: the number set in OOM diff between terms specifies the difference in orders of magnitude between the last term and other terms.
- IMPROVED: Series approximation is more aggressive by default, using an OOM diff between terms of 1 instead of 16
- CHANGED: Ultra Fractal default palette modified (contains more orange and purple hues) to imitate the original more accurately
- Known issues:
- Pixel guessing is not working during glitch correction
- Glitch correction is not working when calculating with scaled doubles
v1.3.6 - 2014.11.16
- NEW: Compressed iteration data (.mmit) files can be loaded in the absence of the corresponding fractal definition (.mmf) file
- NEW: Kalles Fraktaler Palette (.kfp) files can be loaded
- NEW: History of previous changes is loaded on startup - work can be continued even after a crash
- CHANGED: History is saved in a subfolder under the application folder instead of the TEMP folder. Deletion of saved history items on application exit can be toggled under Settings.
- IMPROVED: Parameters can be selectively loaded from .kfr and .kfp files
- IMPROVED: References are calculated up to 80% faster when the iteration limit is below 10 million, at slightly increased RAM usage
- FIXED: State is saved in history for every intermediate value when continuously adjusting color density/offset with arrow keys
- FIXED: Lossy compression of iteration data used in .mmit files may cause stripes in slowly changing gradients
- Known issues:
- Pixel guessing is not working during glitch correction
- Glitch correction is not working when calculating with scaled doubles
v1.3.5 - 2014.11.08
- NEW: Smooth (C1 continuous) interpolation of color gradients can be toggled in Palette window
- IMPROVED: New widget allowing finer control over color density/offset
- IMPROVED: Color density range extended to -500; fractional values are also allowed
- IMPROVED: Coloring of KFR files is loaded more accurately
- FIXED: State is saved in history twice when adjusting color density/offset with arrow keys
- FIXED: KFR files with iteration division greater than 1 are loaded incorrectly
- Known issues:
- Pixel guessing is not working during glitch correction
v1.3.4 - 2014.11.06
- FIXED: Application crashes when trying to extract palette from an image
- FIXED: Application may crash when computing a reference with 0 imaginary part
- FIXED: Series approximation breaks around (-2,0)
- FIXED: Application may hang when computation is aborted
- Known issues:
- Pixel guessing is not working during glitch correction
v1.3.3 - 2014.10.15
- NEW: Iteration data can be saved in uncompressed format
- Known issues:
- Series approximation breaks around (-2,0)
- Application may crash when computing a reference with 0 imaginary part
- Pixel guessing is not working during glitch correction
v1.3.2 - 2014.10.12
- NEW: Iteration data can be saved/loaded beside fractal definition
- NEW: Compression level for iteration data can be adjusted under Settings
- IMPROVED: Iteration data is saved in a more compressible format
- IMPROVED: Smooth scrolling of toolboxes/history
- IMPROVED: Zoom range in Image toolbox extended to 1/16x and 16x
- IMPROVED: Up to 2x faster rendering of the image when adjusting rendering attributes due to lossless compression of palette
- IMPROVED: More precise palette interpolation with less overshoot
- FIXED: Glitches may appear in the centroids of embedded Julias when using perturbation with reduced scale floats
- FIXED: Application hangs when trying to compute an image with huge dimensions and magnification close to the limit
- FIXED: Iteration color density is sometimes loaded incorrectly from .mmf files
- Known issues:
- Series approximation breaks around (-2,0)
- Application may crash when computing a reference with 0 imaginary part
- Pixel guessing is not working during glitch correction
v1.3.1 - 2014.10.01
- IMPROVED: Iteration data in history is saved and loaded up to 10x faster
- FIXED: Saved iteration data may be corrupted when the iteration span is larger than one million
- Known issues:
- Series approximation breaks around (-2,0)
- Application may crash when computing a reference with 0 imaginary part
- Glitches may appear in the center of embedded Julias when using perturbation with reduced scale floats
v1.3 - 2014.09.30
- NEW: Toolbox for adjusting application-wide settings. Previously saved settings are loaded on startup.
- NEW: Mouse navigation settings (zoom increase by scrolling/double click, auto-apply selection) can be adjusted in the Settings toolbox
- FIXED: Iteration data is not saved in history - a recalculation is needed if location or computation attributes are changed
- Known issues:
- Series approximation breaks around (-2,0)
- Application may crash when computing a reference with 0 imaginary part
- Glitches may appear in the center of embedded Julias when using perturbation with reduced scale floats
v1.2.10 beta - 2014.09.16
- NEW: Supersampled images can be saved or copied to clipboard at different resolutions
- CHANGED: Memory available to the application is set to match the amount of free RAM in the system
- CHANGED: Perturbation algorithm automatically used when standard double precision calculation is not enough (beyond ~42 zooms)
- CHANGED: Histogram is displayed for the covered iteration range only
- FIXED: Application may crash when zooming into an empty region
- FIXED: Memory leak in history when using a palette that was extracted from an image
- FIXED: Image is always recalculated after loading rendering parameters from a file
- Known issues:
- Series approximation breaks around (-2,0)
- Application may crash when computing a reference with 0 imaginary part
- Features temporarily turned off in this beta:
- Saving of iteration data in history - a recalculation is needed if location or computation attributes are changed
v1.2.9 beta - 2014.09.10
- FIXED: Application may crash when zooming in/out during the glitch correction phase
- FIXED: Palette is not saved correctly in .mmf files
- Known issues:
- Series approximation breaks around (-2,0)
- Application may crash when computing a reference with 0 imaginary part
- Features temporarily turned off in this beta:
- Saving of iteration data in history - a recalculation is needed if location or computation attributes are changed
v1.2.8 beta - 2014.09.09
- IMPROVED: Wider pixel grouping (16-fold on SSE2, 32-fold on AVX-capable CPUs) when using perturbation with reduced scale floats
- IMPROVED: Scale reduction to floats enabled from 80-bit extended precision as well
- FIXED: 16-fold pixel grouping is not used during glitch correction
- FIXED: Glitch correction is not working when calculating with 80-bit extended precision
- Known issues:
- Palette is not saved correctly in .mmf files
- Series approximation breaks around (-2,0)
- Application may crash when computing a reference with 0 imaginary part
- Application may crash when zooming in/out during the glitch correction phase
- Features temporarily turned off in this beta:
- Saving of iteration data in history - a recalculation is needed if location or computation attributes are changed
v1.2.7 beta - 2014.09.05
- IMPROVED: Glitch centroids are located up to 70% faster
- FIXED: Minibrots are identified as glitches and get filled with junk
- FIXED: Application may crash or turn perturbation off when zooming in/out with the mouse wheel
- FIXED: Application hangs when calculating perturbation algorithm with ASFloat data type
- Known issues:
- Palette is not saved correctly in .mmf files
- Glitch correction is not working when calculating with 80-bit extended precision
- Series approximation breaks around (-2,0)
- Features temporarily turned off in this beta:
- Saving of iteration data in history - a recalculation is needed if location or computation attributes are changed
v1.2.6 beta - 2014.09.03
- NEW: Glitch correction based on the algorithm from Paul G. Derbyshire (Pauldelbrot)
- NEW: Iterations skipped by series approximation can be limited
- NEW: Check for newer versions on startup
- NEW: GUI controls are disabled during calculation
- IMPROVED: Magnification limit increased to 8000
- FIXED: False GFLOPS values are reported under Statistics
- FIXED: Save image function produces corrupted PNGs
- Known issues:
- Palette is not saved correctly in .mmf files
- Glitch correction is not working when calculating with 80-bit extended precision
- Series approximation breaks around (-2,0)
- Features temporarily turned off in this beta:
- Saving of iteration data in history - a recalculation is needed if location or computation attributes are changed
v1.2.5 beta - 2014.08.16
- IMPROVED: Magnification limit increased to 6000
- IMPROVED: Per-pixel cost of series approximation reduced by 65% - large images are calculated up to 30% faster
- FIXED: Patterned glitches appear in deep Julias when the reference pixel if off-center
- Known issues:
- Palette is not saved correctly in .mmf files
- Application may hang when adjusting a parameter during calculation - always cancel the calculation first with the Esc key
- Features temporarily turned off in this beta:
- Glitch correction
- Saving of iteration data in history - a recalculation is needed if location or computation attributes are changed
v1.2.4 beta - 2014.08.13
- FIXED: Glitches appear due to reference orbit calculation with too few digits (Tick-tock location)
- FIXED: Some locations are not rendered at all (Verstoppertje location)
- FIXED: Application hangs when saving very large PNG images due to excessive memory usage
- Known issues:
- Palette is not saved correctly in .mmf files
- Application may hang when adjusting a parameter during calculation - always cancel the calculation first with the Esc key
- Features temporarily turned off in this beta:
- Glitch correction
- Saving of iteration data in history - a recalculation is needed if location or computation attributes are changed
v1.2.3 beta - 2014.08.11
- IMPROVED: Magnification limit increased to 5300
- IMPROVED: Up to 5x faster initialization of series approximation
- IMPROVED: Up to 2x faster calculation when using perturbation with ASFloat data type
- IMPROVED: Up to 1.25x faster calculation when using perturbation with 80-bit extended data type
- IMPROVED: Wider pixel grouping (8-fold on SSE2, 16-fold on AVX-capable CPUs) at zoom levels below 50 when not using perturbation
- CHANGED: Benchmark runs made longer to provide more repeatable results
- CHANGED: "Ignore small addends" option renamed to "Ignore delta0 if negligible"
- FIXED: Series approximation sometimes breaks embedded Julias near the edges of the image
- FIXED: Minibrots get distorted when using perturbation with too low iteration limit
- FIXED: Application crashes on CPUs or operating systems with no AVX support
- Known issues:
- Palette is not saved correctly in .mmf files
- Application may hang when adjusting a parameter during calculation - always cancel the calculation first with the Esc key
- Features temporarily turned off in this beta:
- Glitch correction
- Saving of iteration data in history - a recalculation is needed if location or computation attributes are changed
v1.2.1 beta - 2014.05.27
- NEW: Statistics about data types used for perturbation calculation
- NEW: Automatic reduction of scale from double to float on AVX-capable CPUs
- IMPROVED: Palette can be extracted from gif images as well
- FIXED: Image gets corrupted when using series approximation with too few terms
- FIXED: Application hangs when using extended scale without ignoring small addends
- Known issues:
- Palette is not saved correctly in .mmf files
- Application may hang when adjusting a parameter during calculation - always cancel the calculation first with the Esc key
- Features temporarily turned off in this beta:
- Glitch correction
- Saving of iteration data in history - a recalculation is needed if location or computation attributes are changed
v1.2 beta - 2014.05.20
- NEW: Magnification limit increased to 3700, 80-bit extended data type used beyond 1900 zooms
- NEW: Automatic reduction of scale from extended to double or scaled double when ignoring small addends - enables the use of SIMD codepaths beyond 1900 zooms
- IMPROVED: Number of terms used for series approximation is adjustable (up to 130)
- IMPROVED: Faster calculation using double precision through wider pixel grouping (8-fold on SSE2, 16-fold on AVX-capable CPUs) when using perturbation
- IMPROVED: Faster saving of PNG images
- IMPROVED: Faster palette updates
- CHANGED: Shorter transitions when zooming in/out
- CHANGED: Iteration values are stored in 64 bits/pixel - memory usage increased by 50% when rendering very large images
- CHANGED: JRE is no longer bundled with the application - it automatically searches for a 64-bit JRE of version 1.7.0 or newer
- FIXED: Palette changes are not saved in history
- FIXED: Inertial scrolling causes the image to zoom in/out further than desired
- Known issues:
- Palette is not saved correctly in .mmf files
- Application may hang when adjusting a parameter during calculation - always cancel the calculation first with the Esc key
- Application hangs when using extended scale without ignoring small addends
- Features temporarily turned off in this beta:
- Glitch correction
- Saving of iteration data in history - a recalculation is needed if location or computation attributes are changed
v1.1.4 - 2014.03.19
- NEW: Palette can be saved into .mmf files
- FIXED: No history item created when dragging the color density/offset sliders
- FIXED: When adjusting the color density/offset sliders, the image may be rendered with the old values
v1.1.3 - 2014.03.13
- FIXED: Palette images with high width/height ratio are displayed as a thin line
v1.1.2 - 2014.03.11
- IMPROVED: Palette can be extracted from bmp images as well
v1.1.1 - 2014.03.11
- NEW: Image size in megapixels shown in the Image box
- FIXED: Application crashes when trying to create an image that doesn't fit into the memory or is larger than 536 MP
v1.1 - 2014.02.27
- NEW: Automatic correction of flat blobs caused by the perturbation algorithm
- FIXED: Stack overflow can occur when rendering super dense areas with 1000+ magnification and pixel grouping of 2
v1.0.6 - 2014.02.26
- FIXED: Application sometimes hangs when using perturbation method with pixel guessing off
- FIXED: Bogus pixels with infinite or NaN iteration count appear in super dense areas
v1.0.5 - 2014.02.21
- CHANGED: New distribution format, standalone app without installer, embedded JRE does not have to be downloaded with each upgrade
- FIXED: Zooming in/out with mouse wheels doesn't work if computation is still running
- FIXED: Application crashes when running with the standard HotSpot JVM
v1.0.4 - 2014.02.17
- NEW: Correct blobs manually by right clicking inside the blob to add a new reference point (experimental)
- CHANGED: Initial reference point is the center pixel; hillclimbing algorithm for finding a reference with highest iteration count is no longer used
- FIXED: Image becomes distorted when approaching a minibrot using perturbation method with scaled double
- IMPROVED: Maximum number of working threads increased from 8 to 32
- IMPROVED: Palette size increased from 4K to 1M to support KFR files with a high number of key colors
- IMPROVED: Minimum color density extended from -300 to -400 to support KFR files with high iteration division
- IMPROVED: Fractal window can be iconified to eliminate repaint overhead when rendering with high supersampling
v1.0.3 - 2014.02.15
- FIXED: Small addends are never ignored when using perturbation method with scaled double and SSE2/SSE3 codepaths
- FIXED: Application crashes when using perturbation method with scaled double, SSE2/SSE3 codepaths and pixel grouping of at least 6
- IMPROVED: Detailed history labels when zooming in/out or panning
v1.0.2 - 2014.02.13
- FIXED: Application hangs when using perturbation method with such a low iteration limit that the whole image becomes one-colored
- FIXED: Computation cannot be aborted with ESC key during reference orbit calculation and series approx. initialization
v1.0.1 - 2014.02.12
- FIXED: Application hangs when increasing iteration limit with histogram coloring
- FIXED: Application hangs when using perturbation method after a benchmark run
- IMPROVED: Reduced memory usage when using perturbation method and high iteration limit (millions)
v1.0.0 - 2014.02.11