{"id":24478530,"url":"https://github.com/Shapur1234/Fractl","last_synced_at":"2025-10-02T03:32:04.176Z","repository":{"id":215085948,"uuid":"716038429","full_name":"Shapur1234/Fractl","owner":"Shapur1234","description":" Fractal renderer written in rust supporting multithreading, gpu compute and wasm","archived":false,"fork":false,"pushed_at":"2024-02-17T18:01:27.000Z","size":45815,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-21T10:12:33.377Z","etag":null,"topics":["cross-platform","fractal","fractal-images","fractal-rendering","freesoftware","gpu-computing","gpu-programming","nix","nix-flake","parallel","parallel-computing","parallel-programming","parallelism","rayon","rust","wasm","webgpu","wgsl-shader"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Shapur1234.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-08T10:52:43.000Z","updated_at":"2024-01-02T11:08:39.000Z","dependencies_parsed_at":"2024-01-17T20:14:20.475Z","dependency_job_id":"ce0d0a81-3c3b-4439-b043-302bb951bb1d","html_url":"https://github.com/Shapur1234/Fractl","commit_stats":{"total_commits":132,"total_committers":1,"mean_commits":132.0,"dds":0.0,"last_synced_commit":"c78f5c5587e9cdd85fca6c3b250fe8cc4eb08c27"},"previous_names":["shapur1234/fractl","shapur1234/fractaller"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shapur1234%2FFractl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shapur1234%2FFractl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shapur1234%2FFractl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shapur1234%2FFractl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shapur1234","download_url":"https://codeload.github.com/Shapur1234/Fractl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234930972,"owners_count":18909039,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-platform","fractal","fractal-images","fractal-rendering","freesoftware","gpu-computing","gpu-programming","nix","nix-flake","parallel","parallel-computing","parallel-programming","parallelism","rayon","rust","wasm","webgpu","wgsl-shader"],"created_at":"2025-01-21T10:12:38.518Z","updated_at":"2025-10-02T03:32:01.458Z","avatar_url":"https://github.com/Shapur1234.png","language":"Rust","readme":"# [Fractl](https://shapur1234.github.io/Fractl/)\n\n- Fractal renderer written in rust\n- Singlethreaded, multithreading (using [rayon](https://github.com/rayon-rs/rayon)) and gpu compute (using [wgpu](https://github.com/gfx-rs/wgpu) - [WebGpu](https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API) implementation) versions\n- Supports both native targets and [wasm](https://en.wikipedia.org/wiki/WebAssembly)\n- Currently renders the [Mandelbrot set](https://en.wikipedia.org/wiki/Mandelbrot_set) and the [Multibrot set](https://en.wikipedia.org/wiki/Multibrot_set)\n\n## Screenshots\n\n![Mandelbrot](./screenshot/mandelbrot.png)\n![Multibrot](./screenshot/multibrot.png)\n\n## How to\n\n- Try the [live demo](https://shapur1234.github.io/Fractl/) (Note: the web version runs on a signle thread without GPU acceleration, native version are much faster)\n- Download a pre-build binary from [./bin](./bin)\n- Run `cargo install fractl_gui` to install, optionally pick specific features (see \"Building using cargo\")\n\n### Controls\n\n| Key             | Action                                  |\n| --------------- | --------------------------------------- |\n| LeftMouseButton | Center view on cursor                   |\n| WSAD            | Move view                               |\n| R               | Reset view                              |\n| ScrollWheel     | Increase / Decrease zoom                |\n| O               | Increase zoom                           |\n| P               | Decrease zoom                           |\n| ArrowKey        | Increase / Decrease zoom in a direction |\n| T               | Reset zoom                              |\n| K               | Increase percision (max iterations)     |\n| L               | Decrease percision (max iterations)     |\n| M               | Next fractal                            |\n| N               | Previous fractal                        |\n| B               | Next fractal coloring                   |\n| V               | Previous fractal coloring               |\n| U               | Toggle UI                               |\n| Y               | Toggle crosshair                        |\n| C               | Increase exponent (for multi-fractals)  |\n| X               | Decrease exponent (for multi-fractals)  |\n| F11             | Toggle Fullscreen                       |\n| Escape          | Exit                                    |\n\n### Building using nix\n\n- (This should be the most reliable way)\n- Have [nix](https://nixos.org/) [installed](https://nix.dev/install-nix.html) on your system\n- Pick a package\n\n| Package                    | Description                               | Pararelism         | Floatin point percision |\n| -------------------------- | ----------------------------------------- | ------------------ | ----------------------- |\n| fractl_gui                 | Native gui                                | No                 | Double (f64)            |\n| fractl_gui-multithread     | Native gui                                | CPU multithreading | Double (f64)            |\n| fractl_gui-gpu             | Native gui                                | GPU compute shader | Single (f32)            |\n| fractl_gui-wasm            | Web gui                                   | No                 | Double (f64)            |\n| fractl_gui-win             | Native gui crosscompiled to Winows x86_64 | No                 | Double (f64)            |\n| fractl_gui-win-multithread | Native gui crosscompiled to Winows x86_64 | CPU multithreading | Double (f64)            |\n| fractl_gui-win-gpu         | Native gui crosscompiled to Winows x86_64 | GPU compute shader | Single (f32)            |\n\n- To build: `nix build .#Package`\n- To build and run locally: `nix run .#Package`\n- Example: `nix run .#gui-gpu`\n\n- Or use on of the build scripts in [./script](./script)\n\n### Building using cargo\n\n- Have [rust](https://www.rust-lang.org/tools/install) installed, or optionally use the included dev shelle: `nix develop`\n- Pick feautres\n\n| Feature    | Description                             | Notes                                                                       |\n| ---------- | --------------------------------------- | --------------------------------------------------------------------------- |\n| multithred | CPU multithreading                      | _multithread_ and _gpu_ cannot be enabled at the same time                  |\n| gpu        | GPU computing                           | _multithread_ and _gpu_, _gpu_ and _f64_ cannot be enabled at the same time |\n| f32        | Single percision floating point numbers | _f32_ and _f64_ cannot be enabled at the same time                          |\n| f64        | Double percision floating point numbers | _f32_ and _f64_ cannot be enabled at the same time                          |\n\n- To build: `cargo build --package=fractl_gui --no-default-features --release --features \"Feature1 Feature2\"`\n- To run: `cargo run --package=fractl_gui --no-default-features --release --features \"Feature1 Feature2\"`\n- Example: `cargo build --package=fractl_gui --no-default-features --release --features \"gpu f32\"`\n\n## Links\n\n- Source repo - [https://github.com/Shapur1234/Fractl](https://github.com/Shapur1234/Fractl)\n- Crates.io - [https://crates.io/crates/fractl_gui](https://crates.io/crates/fractl_gui)\n\n## TODO\n\n- Add Julia set, more fractals\n- F128 floating point\n- Wasm WebGpu with compute shader\n- Redox port\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FShapur1234%2FFractl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FShapur1234%2FFractl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FShapur1234%2FFractl/lists"}