Skip to content

Latest commit

ย 

History

98 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ManpWIN

ManpWIN is a Windows fractal exploration and rendering application featuring advanced Mandelbrot and related fractal techniques including perturbation theory, optional Bilinear Approximation (BLA) acceleration, high-precision arithmetic, slope rendering, and a multithreaded formula parser.

The project combines decades of fractal development with a modern CMake-based build system, providing a powerful platform for both visual exploration and mathematical research into deep-zoom fractals and experimental formulae.

This repository contains a fully reproducible CMake-based build system supporting consistent Debug and Release builds with Visual Studio 2022.


Version 4.04

ManpWIN 4.04 is a stability and architecture update focused on multithreaded rendering reliability, numerical correctness, 3D rendering, Tierazon compatibility, and pixel rendering lifecycle management.


Recent Improvements (4.04)

Multi-threading and Rendering

  • Fixed unsafe partial thread startup handling when worker creation or memory allocation fails
  • Replaced obsolete worker-completion flags with direct thread-handle completion checking
  • Simplified completion handling across pixel, perturbation, and slope rendering
  • Fixed 3D rendering in both pixel and perturbation modes by correcting the effective number of rendering threads
  • Improved CPixel worker ownership, symmetry handling, worklist processing, and render lifecycle management

Numerical Stability

  • Fixed double-double and quad-double trigonometric function issues affecting some Tierazon fractals
  • Improved arithmetic consistency across DD and QD rendering paths

Tierazon and Perturbation

  • Fixed Tierazon filter initialisation ordering that could produce visible seams between multithreaded rendering strips
  • Corrected Tierazon filtering in perturbation rendering so filtering begins at the correct orbit iteration
  • Improved Tierazon filter coordinate initialisation in perturbation mode

General Stability

  • Audited and simplified CPixel initialisation and arithmetic setup
  • Removed obsolete thread-completion state and redundant waiting logic
  • General internal cleanup and stability improvements

โœจ Features

  • Mandelbrot and related fractals
  • Extreme deep-zoom rendering using perturbation theory, with optional Bilinear Approximation (BLA) acceleration for improved performance
  • Multithreaded rendering engine
  • Multithreaded formula parser
  • Slope derivative rendering modes
  • Fractint palette support
  • PNG export
  • Advanced plotting modes
  • Hypercomplex fractal support
  • High-precision arithmetic (MPFR, double-double, quad-double)
  • Template-based parser and arithmetic framework supporting unified fractal semantics
  • Preservation of legacy algorithms with modern execution architecture
  • True colour rendering
  • Support for many fractal types including Mandelbrot, Julia, Burning Ship, and more

๐Ÿ”ฌ Use Cases

ManpWIN is designed for both visual exploration and mathematical experimentation:

  • Deep zoom Mandelbrot and fractal structure analysis
  • Perturbation-based extreme scale rendering
  • Investigation of orbit behaviour and numerical stability
  • Custom formula experimentation via VM-based parser
  • Educational demonstrations of fractal dynamics

๐Ÿ–ผ๏ธ Example Output

High-Precision Fractal Rendering

Fractal

ManpWIN Interface

ManpWIN UI

๐ŸŽฌ Animation

Watch Animation

๐Ÿ‘‰ Download animation file (WEBM, ~5 MB)


๐Ÿ“Š Project Status

ManpWIN has reached a stable and reproducible build state with a fully functional multithreaded rendering pipeline.

Current State

  • โœ” Deterministic rendering across Mandelbrot, perturbation, and formula modes
  • โœ” Stable multithreaded execution (worklist + parser)
  • โœ” Verified Debug and Release builds via CMake + Visual Studio 2022
  • โœ” Verified extreme deep zoom rendering using perturbation theory and high-precision arithmetic
  • โœ” Ongoing collaboration and interest from the mathematical community
  • โœ” Improved numerical stability across multiple arithmetic types (MPFR, DD, QD)

๐Ÿ†• Recent Improvements

  • Fixed perturbation initialisation issue when reference generation occurs outside the perturbation engine
  • Improved rendering stability after toggling and recomputation
  • Stabilised trigonometric functions across multiple arithmetic types
  • Improved error handling in double-double (DD) and quad-double (QD) modes
  • Introduced template-based framework to support future extensibility of fractal calculations
  • Unified parser semantic architecture using templates
  • Reduced arithmetic-specific duplication across parser and trig systems
  • Introduced unified dispatch framework for DD/QD/MPFR arithmetic
  • Modernised hypercomplex trig implementation

๐Ÿ—๏ธ Build Requirements

  • Windows 10/11
  • Visual Studio 2022 (with C++ tools)
  • CMake โ‰ฅ 3.23
  • vcpkg installed at:
C:\vcpkg

โš™๏ธ Build Instructions

1. Clone repository

git clone https://github.com/PaulTheLionHeart/manpwin.git cd manpwin


2. Configure (CMake + vcpkg)

cmake -B build -S . ^ -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake ^ -DVCPKG_TARGET_TRIPLET=x64-windows-static

The x64-windows-static triplet is recommended because it produces a self-contained executable without requiring MPFR or other third-party runtime DLLs.


3. Build

Release: cmake --build build --config Release

Debug: cmake --build build --config Debug


4. Run

Release: build\Release\ManpWIN64.exe

Debug: build\Debug\ManpWIN64.exe


Alternative (recommended)

build_release.bat build_debug.bat


๐Ÿ“ Project Structure

ManpWIN/
โ”œโ”€ ManpWIN64/     # Main application sources
โ”œโ”€ parser/        # Formula parser engine
โ”œโ”€ pnglib/        # PNG implementation
โ”œโ”€ ZLib/          # Compression support
โ”œโ”€ qdlib/         # Quad-double arithmetic
โ”œโ”€ MPEG/          # MPEG support
โ”œโ”€ CMakeLists.txt # Root build configuration

External Dependencies (via vcpkg)

  • MPFR
  • GMP
  • libpng
  • zlib

๐Ÿงฏ Troubleshooting

Missing pnglib.lib: Reconfigure CMake and ensure pnglib builds as STATIC.

MPFR / GMP errors: Ensure vcpkg is installed and toolchain is set.

Blank screen: Ensure .rc files are included.

Debug vs Release mismatch: Check runtime library consistency.


๐Ÿ‰ Dragon Slayer Timeline

A chronological record of major battles during the ManpWIN modernisation.

  • ๐Ÿฒ Repository archaeology โ€” removed legacy and duplicate source files
  • โš”๏ธ CMake resurrection โ€” rebuilt modular build architecture
  • ๐Ÿงฑ pnglib integration โ€” fixed missing target + linker language issues
  • ๐Ÿ”— MPFR linking battle โ€” resolved dependency integration via vcpkg
  • ๐ŸชŸ Resource restoration โ€” fixed blank screen by restoring .rc compilation
  • ๐Ÿง  Parser evolution โ€” multithreaded formula parser stabilised
  • ๐ŸŽฏ Plotting expansion โ€” new slope rendering + plotting modes added
  • ๐Ÿ› Debug infinite loop hunt โ€” tracked worklist spin behaviour
  • ๐ŸŽจ Palette parser fix โ€” vector migration introduced subtle indexing bug
  • ๐Ÿงฉ Solid guessing initialization bug โ€” uninitialised variable causing lock
  • โš™๏ธ CRT conflict resolution โ€” /NODEFAULTLIB:LIBCMTD investigation
  • ๐Ÿฐ First stable reproducible CMake build โ€” Debug + Release verified
  • ๐Ÿท Milestone tagged โ€” historic stabilisation snapshot captured
  • ๐Ÿงญ Stability phase reached โ€” deterministic behaviour restored
  • ๐Ÿ”ฌ Research interest โ€” project now attracting mathematical exploration
  • ๐Ÿ‰ Perturbation dragon โ€” fixed uninitialised power causing incorrect rendering after toggling
  • ๐Ÿงฎ Arithmetic stabilisation โ€” improved trig behaviour across DD/QD/MPFR
  • ๐Ÿงฑ Template foundation โ€” introduced templated framework for future fractal expansion
  • ๐Ÿง  Semantic unification โ€” parser/trig arithmetic consolidated via templates
  • ๐Ÿ‰ Layer discipline restored โ€” VM, dispatch, and semantic layers separated cleanly
  • ๐Ÿ”ฎ Transcendental perturbation groundwork โ€” infrastructure prepared for future symbolic perturbation research
  • ๐Ÿ“Š Status Information modernisation โ€” improved progress reporting and diagnostics
  • ๐Ÿงต Thread progress overhaul โ€” status reporting now reflects the slowest active worker thread
  • ๐Ÿ“š Documentation refresh โ€” Status Information help page and keyboard documentation updated
  • ๐Ÿงญ Deep zoom expedition โ€” tracked and eliminated long-standing perturbation teleporting
  • ๐Ÿ›ฐ Reference orbit refinement โ€” improved perturbation reference generation and rebasing
  • ๐Ÿงฉ Hidden missing else โ€” restored correct rebasing when BLA is disabled
  • ๐ŸŒŠ KFR smoothing restored โ€” preserved smoothing values when reading and writing .KFR files
  • ๐Ÿ“‹ Metadata consistency โ€” parameter dialogues now correctly rebuild fractal metadata across all new fractal families
  • ๐Ÿงฎ DD/QD trig repair โ€” fixed transcendental arithmetic issues affecting Tierazon fractals
  • ๐ŸงŠ 3D rendering restored โ€” corrected effective thread handling in pixel and perturbation modes
  • ๐Ÿงต Thread lifecycle cleanup โ€” removed completion races and simplified worker startup/shutdown handling
  • ๐Ÿ‰ CPixel audit โ€” verified strip ownership, symmetry, worklists, arithmetic initialisation, and rendering lifecycle

๐Ÿค Contributing Notes

  • Never commit build directory
  • Tag stable milestones
  • Keep Debug and Release working
  • Prefer incremental commits

๐Ÿ† Milestone

First stable reproducible CMake build achieved.

๐Ÿ” Reproducibility


A key goal of the modernisation effort is reproducibility:

  • Clean CMake-based builds
  • Controlled dependency handling via vcpkg
  • Verified Debug and Release parity
  • Deterministic rendering across runs (within current numerical limits)

๐Ÿ™ Credits


Paul the LionHeart

Author

ChatGPT

Workshop Assistant

About

A Windows fractal generator derived from DOS FRACTINT with lots of additional features by Paul de Leeuw

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages