{"id":22804508,"url":"https://github.com/armemius/fractals","last_synced_at":"2025-07-26T01:18:57.875Z","repository":{"id":89670766,"uuid":"605509146","full_name":"Armemius/fractals","owner":"Armemius","description":"Rethinking my old fractal project using newer and more advanced technologies ","archived":false,"fork":false,"pushed_at":"2023-07-29T16:55:48.000Z","size":5385,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-04T12:18:18.673Z","etag":null,"topics":["github-pages","pet-project","web"],"latest_commit_sha":null,"homepage":"https://armemius.github.io/fractals/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Armemius.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-02-23T10:02:25.000Z","updated_at":"2024-04-07T18:43:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"9d5d2000-2dcc-4c21-9a60-adb97e26b199","html_url":"https://github.com/Armemius/fractals","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Armemius/fractals","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Armemius%2Ffractals","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Armemius%2Ffractals/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Armemius%2Ffractals/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Armemius%2Ffractals/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Armemius","download_url":"https://codeload.github.com/Armemius/fractals/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Armemius%2Ffractals/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267098354,"owners_count":24035743,"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","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["github-pages","pet-project","web"],"created_at":"2024-12-12T10:08:26.696Z","updated_at":"2025-07-26T01:18:57.832Z","avatar_url":"https://github.com/Armemius.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fractals \u003ca href=\"https://www.typescriptlang.org/\" title=\"Typescript\"\u003e\u003cimg src=\"https://github.com/get-icon/geticon/raw/master/icons/typescript-icon.svg\" alt=\"Typescript\" width=\"21px\" height=\"21px\"\u003e\u003c/a\u003e \u003ca href=\"https://reactjs.org/\" title=\"React\"\u003e\u003cimg src=\"https://github.com/get-icon/geticon/raw/master/icons/react.svg\" alt=\"React\" width=\"21px\" height=\"21px\"\u003e\u003c/a\u003e \u003ca href=\"https://www.rust-lang.org/\" title=\"Rust\"\u003e\u003cimg src=\"https://github.com/get-icon/geticon/raw/master/icons/rust.svg\" alt=\"Rust\" width=\"21px\" height=\"21px\"\u003e\u003c/a\u003e \u003ca href=\"https://webassembly.org/\" title=\"Wasm\"\u003e\u003cimg src=\"https://github.com/get-icon/geticon/raw/master/icons/webassembly.svg\" alt=\"Typescript\" width=\"21px\" height=\"21px\"\u003e\u003c/a\u003e\nI made a project for fractals a few years ago, and since lots of time have passed I decided to recreate this using new technologies and languages (the last version was written with C++ using SFML library) to make them more portable. \n\nThis version is written via \u003cb\u003eReact\u003c/b\u003e library with \u003cb\u003eTypescript\u003c/b\u003e as a main language, and since it is not very performant and fractals use a lots of calculations, I decided to use \u003cb\u003eWebassembly\u003c/b\u003e with \u003cb\u003eRust\u003c/b\u003e \u003cstrike\u003eso I can write blazingly fast code\u003c/strike\u003e\n\n~~At the moment all calculations are performed on CPU, it might be a big deal if I would leverage the GPU, but \u003cb\u003eWGPU\u003c/b\u003e is pretty complex, so maybe in the future ;-)~~\n\n**UPD:** Finally, an ability to use GPU was added, GPU computations use canvas as WebGPU texture and GLSL shaders for render. You can always switch between devices to see the difference\n\nNow you can browse what I've done using Github pages:\u003cbr\u003e\n\u003ca href=\"https://armemius.github.io/fractals/\" style=\"text-decoration: none; color: #34a853\"\u003earmemius.github.io/fractals\u003c/a\u003e\n\n## Fractals\n* Mandelbrot set\n* Julia set (C = [-0.67, -0.36])\n* Flaming ship\n* Newton fractal (Roots: [1.0, 0.0], [-0.5, 0.866], [-0.5, -0.866])\n\n## Settings\n### Visual\n* Grid - applies grid to the viewport, which reduces the number of calculations for fractal each frame, improves performance at the expense of quality\n* Noise - same as a grid, but pixels to skip are chosen randomly\n### Render modes\n* None - pretty self-explanatory, just doesn't render at all\n* Frame - renders whole frame of fractal (can be really slow)\n* Random pixels - updates random pixels on a frame (default)\n* Random rows - updates random rows of pixels on a frame\n* Random columns - updates random columns of pixels on a frame\n\n\u003cb\u003eIn future it might be possible to select the device to render on (CPU/GPU)\u003c/b\u003e\n\n## Gradient\nFor colouring, I used inversed ultra fractal gradient, how it looks like you can see below:\n\n\u003cimg src=\"./img/gradient.png\" alt=\"Gradient\"\u003e\n\n## Screenshots\n\u003cimg src=\"./img/mandelbrot_set.jpg\" alt=\"Mandelbrot set\"\u003e\n\u003cimg src=\"./img/julia_set.jpg\" alt=\"Julia set\"\u003e\n\u003cimg src=\"./img/flaming_ship.jpg\" alt=\"Flaming ship\"\u003e\n\u003cimg src=\"./img/newton_fractal.jpg\" alt=\"Newton fractal\"\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmemius%2Ffractals","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farmemius%2Ffractals","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmemius%2Ffractals/lists"}