{"id":25676896,"url":"https://github.com/bezo97/ifsrenderer","last_synced_at":"2025-04-23T14:29:33.143Z","repository":{"id":39980479,"uuid":"141936855","full_name":"bezo97/IFSRenderer","owner":"bezo97","description":"3D IFS fractal renderer and editor","archived":false,"fork":false,"pushed_at":"2025-04-19T21:04:44.000Z","size":3894,"stargazers_count":71,"open_issues_count":14,"forks_count":8,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-19T22:11:56.399Z","etag":null,"topics":["3d","art","csharp","dotnet","fractal","glsl","graphics","wpf"],"latest_commit_sha":null,"homepage":"https://ifsrenderer.z97.io/","language":"C#","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/bezo97.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2018-07-22T22:56:03.000Z","updated_at":"2025-04-19T21:00:03.000Z","dependencies_parsed_at":"2024-01-03T00:31:33.283Z","dependency_job_id":"777f9669-10e6-4017-b37a-ace1e88ccee6","html_url":"https://github.com/bezo97/IFSRenderer","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bezo97%2FIFSRenderer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bezo97%2FIFSRenderer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bezo97%2FIFSRenderer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bezo97%2FIFSRenderer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bezo97","download_url":"https://codeload.github.com/bezo97/IFSRenderer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250451357,"owners_count":21432809,"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":["3d","art","csharp","dotnet","fractal","glsl","graphics","wpf"],"created_at":"2025-02-24T14:49:38.455Z","updated_at":"2025-04-23T14:29:33.126Z","avatar_url":"https://github.com/bezo97.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿\u003ch1\u003e\n    \u003cimg align=\"left\" src=\"https://github.com/bezo97/IFSRenderer/raw/master/Assets/icon_128.png\"\u003e\n    \u003cp align=\"center\"\u003e\u003csamp\u003eIFSRenderer\u003c/samp\u003e\u0026emsp;\u0026emsp;\u0026emsp;\u0026emsp;\u0026emsp;\u003c/p\u003e\n\u003c/h1\u003e\n\u003cbr/\u003e\n\u003ch3 align=\"center\"\u003e\n\t3D IFS fractal renderer and editor\n\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n\t\u003cstrong\u003e\n\t\t\u003ca href=\"https://www.youtube.com/watch?v=R5YWiZQUadE\"\u003eDemo\u003c/a\u003e\n\t\t•\n\t\t\u003ca href=\"https://github.com/bezo97/IFSRenderer/wiki\"\u003eWiki\u003c/a\u003e\n\t\t•\n\t\t\u003ca href=\"https://github.com/bezo97/IFSRenderer/releases/latest\"\u003eDownload\u003c/a\u003e\n\t\u003c/strong\u003e\n\u003c/p\u003e\n\u003cdiv align=\"center\" markdown=\"1\"\u003e\n\n[![release](https://img.shields.io/github/v/release/bezo97/IFSRenderer?include_prereleases\u0026sort=semver)](https://github.com/bezo97/IFSRenderer/releases/latest)\n[![library](https://img.shields.io/nuget/vpre/IFSEngine?label=library)](https://www.nuget.org/packages/IFSEngine/)\n[![dotnet](https://img.shields.io/badge/.NET%208-WPF-blueviolet)]()  \n\n[![help](https://img.shields.io/github/issues/bezo97/IFSRenderer/help-wanted)](https://github.com/bezo97/IFSRenderer/issues)\n[![license](https://img.shields.io/github/license/bezo97/IFSRenderer)](/LICENSE)\n\n\u003c/div\u003e\n\nIFSRenderer started as a weekend project to help me understand how the fractal flame algorithm works. \nMy initial goal was to just implement it in 3D, but it has grown into a passion project and then into my master's thesis. \nI'm releasing it as an open-source project in the hope that it will be useful to the fractal artist community.\n\n## 🗸 Features\n- [x] Render 3D IFS (Iterated Function System) fractals\n- [x] Real-time interaction\n- [x] Node-based editor\n- [x] Mutation-style generator \n- [x] Extendable with Plug-Ins\n- [x] Animations\n- [x] Fisheye projection, ideal for planetarium dome masters\n\nPlanned:\n- [ ] Gradient editor\n- [ ] Animation curve editor\n- [ ] More intuitive coloring methods\n- [ ] [*Add Your Ideas*](https://github.com/bezo97/IFSRenderer/discussions/categories/ideas)\n\n## 📀 Installation\n\n### Minimum Requirements\n- Windows 10 or later\n- OpenGL 4.5 capable graphics card\n\n### Downloads\nGet the latest installer or portable version **[HERE](https://github.com/bezo97/IFSRenderer/releases/latest)**.  \nPrevious versions can be found on the [Releases](https://github.com/bezo97/IFSRenderer/releases) tab.\n\n### Build instructions\nYou may build the project yourself using Visual Studio 2022 (with .NET Desktop Development workload).\nSince the default transforms are hosted in a separate repo, use the `--recurse-submodules` switch when cloning:  \n```\ngit clone --recurse-submodules https://github.com/bezo97/IFSRenderer.git\n```\nThe Setup project uses a [VS extension](https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2022InstallerProjects), \nwhich is not required to build the portable IFSRenderer executable. You can ignore the \"unsupported\" warning and keep the Setup project unloaded.\n\n### Contributing\n\nPlease follow the `.editorconfig` file in the root of the repository. If you submit a pr it must have the right formatting, otherwise the PR fails. You can fix the formatting by using the cleanup found in Visual Studio / Visual Studio Code / Rider, which will respect the `editorconfig`.\n\nTo fix the formatting through the CLI run the following in the root of the project:\n\n```bash\n# You only need to restore the first time, or when the tools change\ndotnet tool restore\n\ndotnet dotnet-format\n```\n\n## 🕹️ Usage\n\n### Using the editor\n\nBeginners should start with the *[Getting Started Guide](https://github.com/bezo97/IFSRenderer/wiki/Getting-Started-Guide)*. See the [Wiki](https://github.com/bezo97/IFSRenderer/wiki) for more.\n\n### Using the library\nAdd the [latest NuGet package](https://www.nuget.org/packages/IFSEngine/) to your project. Here are some getting-started snippets.\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eShow snippets\u003c/b\u003e\u003c/summary\u003e\n\nGenerate a random fractal:\n\n```csharp\n//Initialize\nusing RendererGL renderer = new(graphicsContext);\nrenderer.Initialize(loadedTransforms);\nGenerator generator = new(loadedTransforms);\n//Generate fractal\nIFS fractal = generator.GenerateOne(new GeneratorOptions{ });\nfractal.ImageResolution = new Size(1920, 1080);\n//Render\nrenderer.LoadParams(fractal);\nrenderer.DispatchCompute();\nrenderer.RenderImage();\n//Save HDR image\nvar histogramData = await renderer.ReadHistogramData();\nusing var fstream = File.Create(path);\nOpenEXR.WriteStream(fstream, histogramData);\n\n```\n\nModify a fractal programmatically:\n```csharp\n//Load from file\nIFS myFractal1 = IfsSerializer.LoadJson(\"myFractal1.ifsjson\", loadedTransforms, true);\n//Change params\nIterator selected = myFractal1.Iterators.First(i =\u003e i.Opacity == 0);\nIterator duplicated = myFractal1.DuplicateIterator(selected);\nduplicated.Opacity = 1;\nduplicated.TransformVariables[\"Strength\"] = 10.0;\n//Save to file\nIfsSerializer.SaveJson(myFractal1, \"myFractal1.ifsjson\");\n```\n\nRender images:\n```csharp\nfor (double i = 0.0; i \u003c= 1.0; i += 0.1)\n{\n    selectedIterator.TransformVariables[\"weight\"] = i;\n    renderer.InvalidateParams();\n    renderer.DispatchCompute();\n    renderer.RenderImage();\n    var image = await renderer.ReadPixelData();\n    myRenderedImages.Add(image);\n}\n```\nAlternatively, image data can be written directly to a bitmap:\n```csharp\nawait renderer.CopyPixelDataToBitmap(myBitmapPtr);\n```\n\u003c/details\u003e\n\n## ❔ Support\n- Browse the [Wiki](https://github.com/bezo97/IFSRenderer/wiki) pages\n- [Report a bug](https://github.com/bezo97/IFSRenderer/issues/new?assignees=\u0026labels=\u0026template=bug_report.md)\n- Discuss issues on the [Forum](https://github.com/bezo97/IFSRenderer/discussions)\n\n##  Acknowledgements\nBelow is a list of awesome people who contributed to IFSRenderer, thank you!\nI'd like to also mention people who indirectly helped the project succeed through teachings/mentorship/advices/etc.: \n[ancientc](https://github.com/ancientc), [BenceKovari](https://github.com/BenceKovari), [drecouse](https://github.com/drecouse), [lycium](https://github.com/lycium), [tibitoth](https://github.com/tibitoth)\n### Contributors\n[bezo97](https://github.com/bezo97) (Creator \u0026 Maintainer), [AliBee](https://github.com/BenjaminBako), [KuraiAndras](https://github.com/KuraiAndras), [Rychveldir](https://www.deviantart.com/rychveldir), [Sekkmer](https://github.com/TiborDravecz), [Bastitron](https://github.com/Bastitron), [*Add Your Name*](https://github.com/bezo97/IFSRenderer/fork)\n\n---\n\n## ⚖️ License\nCopyright (C) 2021-2024 Dócs Zoltán \u0026 contributors  \nIFSRenderer is licensed under [**GPLv3**](/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbezo97%2Fifsrenderer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbezo97%2Fifsrenderer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbezo97%2Fifsrenderer/lists"}