This project is originally a school group project that I have decided to explore further and make it my own. The original project was a distributed system for generating and visualizing complex fractals in real-time. The project was built with Rust.
You can find the specific requirements for the original project in this repository.
Fractal Renderer is a high-performance, distributed system for generating and visualizing complex fractals in real-time. Built with Rust, it leverages the power of asynchronous programming and network communication to create stunning fractal images. The system supports various fractal types, including Mandelbrot, Julia sets, and Newton-Raphson, and offers customizable color palettes for vivid visualization. It also supports distributed workers for scalable fractal generation and interactive controls for real-time interaction with the fractal rendering.
- High-Performance Rendering: Utilizes worker dispatching and multi-threading for fast and efficient fractal rendering.
- Distributed System: Supports distributed workers for scalable fractal generation.
- Interactive Visualization: Offers real-time interaction with the fractal rendering, including zooming and panning.
- Multiple Fractal Types: Supports various fractal types including Mandelbrot, Julia sets, and Newton-Raphson.
- Customizable Color Palettes: Dynamic color palettes for rich and vivid fractal visualization.
- Cross-Platform: Runs on multiple platforms including Windows, macOS, and Linux.
- Rust and Cargo (latest stable version)
- TCP/IP network setup for distributed workers (optional)
- TODO: Web browser for real-time visualization (optional)
-
Clone the repository:
git clone https://github.com/adia-dev/frakt.git cd frakt
-
Build the project:
cargo build --release
-
Run the server (on the host machine):
cargo run -- --log-level debug server --width 800 --height 800 --address "localhost" --tiles 8
-
Run worker instances (on worker machines, optional):
cargo run -- --log-level debug worker --address "localhost" --port 8080 --count 10 --name "worker-1"
Edit config.toml
(or pass command-line arguments) to customize server settings, fractal parameters, and rendering options.
-
Interactive Controls:
- Zoom: Scroll up/down or
P
/M
keys. - Pan: Arrow keys to move the view.
- Change Fractals:
K
key to cycle through fractal types. - Change Color Palette:
L
key to cycle forward through color palettes,J
for backward.
- Zoom: Scroll up/down or
-
Web Interface WIP: Access the web dashboard at
http://<server_ip>:<server_port>
for real-time visualization (when enabled).
TODO:
For detailed documentation on fractal algorithms, system architecture, and API references, visit [Documentation Link]
.
Contributions are welcome! Please see CONTRIBUTING.md
for how to contribute to the project, including bug reporting, feature requests, and code submissions.
Distributed under the MIT License. See LICENSE
for more information.
- Abdoulaye Dia - Initial work - adia-dev
Special thanks to all the resources, libraries, and tools that made this project possible.
- Rust
- Tokio
- Pixels
- Fractal documentation and resources
- Wikipedia
- Mandelbrot with Rust
- Iqui's Blog
- ShaderToy palette examples