{"id":16323648,"url":"https://github.com/im-rises/particlesystem","last_synced_at":"2025-04-09T07:30:37.963Z","repository":{"id":65371240,"uuid":"561023399","full_name":"Im-Rises/ParticleSystem","owner":"Im-Rises","description":"Particle system made in C++ with OpenGL","archived":false,"fork":false,"pushed_at":"2024-09-03T21:49:21.000Z","size":3732,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-24T02:35:52.509Z","etag":null,"topics":["cmake","cpp","engine","game-development","game-engine","gamedev","imgui","opengl","particle-system","particles"],"latest_commit_sha":null,"homepage":"https://im-rises.github.io/particle-system-webgl","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Im-Rises.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-11-02T19:20:49.000Z","updated_at":"2025-02-11T06:27:25.000Z","dependencies_parsed_at":"2023-02-18T18:15:25.133Z","dependency_job_id":null,"html_url":"https://github.com/Im-Rises/ParticleSystem","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2FParticleSystem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2FParticleSystem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2FParticleSystem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2FParticleSystem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Im-Rises","download_url":"https://codeload.github.com/Im-Rises/ParticleSystem/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247997861,"owners_count":21030693,"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":["cmake","cpp","engine","game-development","game-engine","gamedev","imgui","opengl","particle-system","particles"],"created_at":"2024-10-10T22:55:20.539Z","updated_at":"2025-04-09T07:30:37.055Z","avatar_url":"https://github.com/Im-Rises.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ParticleSystem\n\n\u003cp align=\"center\"\u003e\n      \u003cimg src=\"https://user-images.githubusercontent.com/59691442/183268126-b3d19e66-8f2d-463a-805e-ae6ef7cc6c01.png\" alt=\"cmakeLogo\" style=\"height:60px;\"/\u003e\n      \u003cimg src=\"https://img.shields.io/badge/C%2B%2B-00599C?style=for-the-badge\u0026logo=c%2B%2B\u0026logoColor=white\" alt=\"cppLogo\" style=\"height:60px;\"/\u003e\n      \u003cimg src=\"https://user-images.githubusercontent.com/59691442/190315010-0a84e171-a2bc-42a4-91c8-bb850960209c.png\" alt=\"openglLogo\" style=\"height:60px;\"/\u003e\n      \u003cimg src=\"https://user-images.githubusercontent.com/59691442/190315147-ec9dc33f-0090-4f0d-98ab-514eb1463e01.png\" alt=\"glfwLogo\" style=\"height:60px;\"/\u003e\n\u003c/p\u003e\n\n## Description\n\nThis project is a particle system made in C++ using OpenGL and GLFW.\n\nThe UI is made using ImGui and allows you to modify some parameters of the particle system and the camera view.\n\nThis project has been ported to `WebGL` using `Emscripten`. You can find the source\ncode [here](https://github.com/Im-Rises/particle-system-webgl). The webgl version can be tested at the link below.\n\n## 🚀🚀[you can try the webgl build online by clicking here](https://im-rises.github.io/particle-system-webgl/) 🚀🚀\n\n\u003e **Note**  \n\u003e This project was made as a learning exercise to learn some OpenGL features.\n\n## Features\n\n- [x] Particle system\n- [x] ImGui UI\n- [x] Camera movement\n- [x] Pausing the simulation\n- [x] Different settings for the particle system\n- [x] Different settings for the camera\n\n## Images and Videos\n\n[![Watch the video](https://user-images.githubusercontent.com/59691442/216751976-c06c492d-5dfb-466c-afe9-ec44e94e5db9.png)](https://www.youtube.com/watch?v=h5X1RaElC7Y)\n\n[![Watch the video](https://user-images.githubusercontent.com/59691442/216753254-f3315a71-f073-420e-b4e3-86a024913683.png)](https://www.youtube.com/watch?v=h5X1RaElC7Y)\n\nClick on the images to watch the video.\n\n## Dependencies\n\n- C++ 14\n- C++ compiler (MSVC, Mingw, ...)\n- CMake\n- Glad\n- GLFW (3.3.8)\n- OpenGl (3.3)\n- Dear ImGui (1.88)\n- glm (0.9.8.5)\n- stb (2.28)\n\n## Table of Contents\n\n1. [Description](#description)\n2. [Features](#features)\n3. [Images and Videos](#images-and-videos)\n4. [Dependencies](#dependencies)\n5. [Table of Contents](#table-of-contents)\n6. [Project Architecture](#project-architecture)\n7. [Quickstart](#quickstart)\n\t1. [Windows](#windows)\n\t2. [Linux](#linux)\n\t3. [MacOs](#macos)\n8. [Controls](#controls)\n9. [Compilation](#compilation)\n\t1. [Windows](#windows)\n\t2. [Linux](#linux)\n\t3. [MacOs](#macos)\n10. [GitHub-Actions](#github-actions)\n11. [Documentation](#documentation)\n12. [Contributors](#contributors)\n\n## Project Architecture\n\n\u003cdetails\u003e\n\u003csummary\u003eClick to expand\u003c/summary\u003e\n\n~~~\nParticleSystem\n├── .github\n|  ├── labels.yml\n|  ├── release.yml\n│  ├── workflows\n│  │   |── cmake.yml\n│  │   |── codeql.yml\n│  │   |── cpp-cmake-publish.yml\n│  │   |── cpp-linter.yml\n│  │   |── dependency-review.yml\n│  │   |── flawfinder.yml\n│  │   |── greetings.yml\n│  │   |── label.yml\n│  │   |── msvc.yml\n│  │   |── stale.yml\n├── dependencies\n|  ├── glad\n|  ├── glfw\n|  ├── glm\n|  ├── imgui\n|  ├── stb\n├── ParticleSystem\n|  ├── Shader\n│  │   |── *\n|  ├── Texture\n│  │   |── *\n|  ├── Scene\n│  │   |── *\n|  ├── CMakeLists.txt\n|  ├── InputManager.cpp\n|  ├── InputManager.h\n|  ├── main.cpp\n|  ├── ParticleSystemLauncher.cpp\n|  ├── ParticleSystemLauncher.h\n├── .clang-format\n├── .clang-tidy\n├── .editorconfig\n├── .gitattributes\n├── .gitignore\n├── CMakelists.txt\n├── CMakePresets.json\n├── CMakeSettings.json\n├── imgui.ini\n├── README.md\n~~~\n\n\u003c/details\u003e\n\n## Quickstart\n\nTo download the app, you can click one of the icons below (depending on your operating system). You can also click the\nrelease section of the GitHub page.\n\nDepending on you `operating system` you will need to install some libs, they are installed differently depending on your\nsystem, please follow one of the section below `Windows` or `Linux` or `MacOs`.\n\nFor the compilation, follow the section `Compilation`.\n\nThe controls are described in the section `Controls`.\n\n\u003e **Warning**\n\u003e Be sure to put the `imgui.ini` file in the same folder as the executable.\n\u003e You can find it in the `root` of the project. If you don't do this, the UI will not be displayed correctly.\n\n### Windows\n\n\u003ca href=\"https://github.com/Im-Rises/ParticleSystem/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/badge/Windows-0078D6?style=for-the-badge\u0026logo=windows\u0026logoColor=white\" alt=\"cmakeLogo\" style=\"height:40px;\"/\u003e\u003c/a\u003e\n\nFor Windows users you don't need to install the libs. You can just download the app and run it.\n\n```bash\n.\\ParticleSystem.exe\n```\n\n### Linux\n\n\u003ca href=\"https://github.com/Im-Rises/ParticleSystem/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/badge/Linux-FCC624?style=for-the-badge\u0026logo=linux\u0026logoColor=black\" alt=\"cmakeLogo\" style=\"height:40px;\"/\u003e\u003c/a\u003e\n\nFor Linux users, you need to install the GLFW lib, to do so type one of the following commands:\n\n```bash\nsudo apt-get install libglfw3\n```\n\nor if you're a developer and want to compile the app, please install this version of GLFW:\n\n```bash\nsudo apt-get install libglfw3-dev\n```\n\nThen you can start by double-clicking the executable of typing the following command next to it:\n\n```bash\n./ParticleSystem\n```\n\n### MacOs\n\n\u003ca href=\"https://github.com/Im-Rises/ParticleSystem/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/badge/mac%20os-000000?style=for-the-badge\u0026logo=apple\u0026logoColor=white\" alt=\"cmakeLogo\" style=\"height:40px;\"/\u003e\u003c/a\u003e\n\nFor macOS users you will need to install Brew, please follow the instruction in the link below:  \n\u003chttps://brew.sh\u003e\n\nOnce it is installed, you can type the following command to install GLFW.\n\n```bash\nbrew install glfw\n```\n\nThen you can start by double-clicking the executable of typing the following command next to it:\n\n```bash\n./ParticleSystem\n```\n\n## Controls\n\nThe speed and some parameters can be modified directly in the ImGui windows.\n\n| Action              | Key                                 |\n|---------------------|-------------------------------------|\n| Translate camera    | (WASD) or (↑ ← ↓ →)                 |\n| Pause/Resume        | P                                   |\n| Move up/down camera | (Space/Shift) or (Page up/down)     |\n| Rotate camera       | Right Mouse Button + Mouse movement |\n| Exit app            | Escape                              |\n\n\u003e **Note**\n\u003e You can the inputs by changing their attribution in the `InputManager.cpp` file,\n\u003e if so you'll need to compile the project.\n\n## Compilation\n\nTo compile the app, the first thing you need to do is install a C++ compiler:\n\n- Visual Studio (MSVC)\n- Mingw\n- ...\n\nYou also need to install Cmake:  \n\u003chttps://cmake.org\u003e\n\nOnce your environment is set up, depending on your operating system you'll need to install some libs before compiling\nthe project. Refer to the section below `Windows` or `Linux` or `MacOs`.\n\n### Windows\n\nWindows users can directly compile the project by typing the following command at the project root folder:\n\n```bash\ncmake -B . -DCMAKE_BUILD_TYPE=\u003cDebug/Release\u003e\n```\n\nthen\n\n```bash\ncmake --build . --config \u003cDebug/Release\u003e\n```\n\nYou need to replace `\u003cDebug/Release\u003e` by the build type you want to use.\n\n\u003e **Note**  \n\u003e If you're using Visual Studio, you can install CMake directly from the IDE (Visual Studio Installer).\n\u003e Then you need to open the Project as a CMake Project, not a Visual Studio Project!\n\n\u003e **Warning**  \n\u003e The project is set up to be built using CMake and vc2019 for Windows. If you want to modify the\n\u003e compiler for vc2022 or other you will need to change the CMakeLists.txt .lib linking file accordingly to your vc20**\n\u003e version.\n\n### Linux\n\nLinux's users need to install some libs before compiling the project:\n\nFirst thing to do is to install CMake, type the following command to install it.\n\n```bash\nsudo apt-get install cmake\n```\n\nYou also need to install the GLFW lib. Type the following command at the project root.\n\n```bash\nsudo apt-get install libglfw3-dev\n```\n\nYou are now able to compile the project. Go to the project root and type the following command:\n\n```bash\ncmake -B . -DCMAKE_BUILD_TYPE=Release\n```\n\n### MacOs\n\nFor macOS user, you should install brew package manager by following the instructions in the link below:  \n\u003chttps://brew.sh\u003e\n\nThen type the following command to install cmake:\n\n```bash\nbrew install cmake\n```\n\nand this one to install GLFW\n\n```bash\nbrew install glfw\n```\n\nYou are now able to compile the project. Go to the project root and type the following command:\n\n```bash\ncmake -B . -DCMAKE_BUILD_TYPE=Release\n```\n\n## Github-Actions\n\n[![CodeQL](https://github.com/Im-Rises/ParticleSystem/actions/workflows/codeql.yml/badge.svg?branch=main)](https://github.com/Im-Rises/ParticleSystem/actions/workflows/codeql.yml)\n[![CMake](https://github.com/Im-Rises/ParticleSystem/actions/workflows/cmake.yml/badge.svg?branch=main)](https://github.com/Im-Rises/ParticleSystem/actions/workflows/cmake.yml)\n[![Cpp Cmake Publish](https://github.com/Im-Rises/ParticleSystem/actions/workflows/cpp-cmake-publish.yml/badge.svg?branch=main)](https://github.com/Im-Rises/ParticleSystem/actions/workflows/cpp-cmake-publish.yml)\n[![flawfinder](https://github.com/Im-Rises/ParticleSystem/actions/workflows/flawfinder.yml/badge.svg?branch=main)](https://github.com/Im-Rises/ParticleSystem/actions/workflows/flawfinder.yml)\n[![Microsoft C++ Code Analysis](https://github.com/Im-Rises/ParticleSystem/actions/workflows/msvc.yml/badge.svg?branch=main)](https://github.com/Im-Rises/ParticleSystem/actions/workflows/msvc.yml)\n[![cpp-linter](https://github.com/Im-Rises/ParticleSystem/actions/workflows/cpp-linter.yml/badge.svg?branch=main)](https://github.com/Im-Rises/ParticleSystem/actions/workflows/cpp-linter.yml)\n\nThe project is set with a set of different scripts:\n\n- CodeQL: This script is used to check the code for security issues.\n- CMake: This script is used to build the project.\n- Cpp Cmake Publish: This script is used to publish the project on GitHub.\n- Flawfinder: This script is used to check the code for security issues.\n- Microsoft C++ Code Analysis: This script is used to check the code for security issues.\n- Cpp Linter: This script is used to check the code for security issues.\n\n## Libraries\n\nglfw:  \n\u003chttps://www.glfw.org/docs/latest/\u003e\n\nglm:  \n\u003chttps://glm.g-truc.net/0.9.9/index.html\u003e\n\nglad:  \n\u003chttps://glad.dav1d.de/\u003e\n\nstb (stb_image):  \n\u003chttps://github.com/nothings/stb/blob/master/stb_image.h\u003e\n\nDear imgui:  \n\u003chttps://github.com/ocornut/imgui\u003e\n\nOpenGL:  \n\u003chttps://www.opengl.org/\u003e\n\n## Documentation\n\nlearnopengl (OpenGL tutorial):  \n\u003chttps://learnopengl.com/In-Practice/2D-Game/Particles\u003e\n\nopengl-tutorial (OpenGL tutorial):  \n\u003chttp://www.opengl-tutorial.org/intermediate-tutorials/billboards-particles/particles-instancing/\u003e\n\n3dgep:  \n\u003chttps://www.3dgep.com/simulating-particle-effects-using-opengl/\u003e\n\nlevelup (Particle Generation):  \n\u003chttps://levelup.gitconnected.com/how-to-create-instanced-particles-in-opengl-24cb089911e2\u003e\n\nunrealistic.dev (Change CMake working directory):  \n\u003chttps://unrealistic.dev/posts/setting-debug-parameters-with-cmake-tools-for-visual-studio\u003e\n\n## Contributors\n\nQuentin MOREL:\n\n- @Im-Rises\n- \u003chttps://github.com/Im-Rises\u003e\n\n[![GitHub contributors](https://contrib.rocks/image?repo=Im-Rises/ParticleSystem)](https://github.com/Im-Rises/ParticleSystem/graphs/contributors)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim-rises%2Fparticlesystem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fim-rises%2Fparticlesystem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim-rises%2Fparticlesystem/lists"}