{"id":20410898,"url":"https://github.com/mintlu8/berdicles","last_synced_at":"2025-04-12T16:05:16.890Z","repository":{"id":246241933,"uuid":"820330758","full_name":"mintlu8/berdicles","owner":"mintlu8","description":"Expressive CPU particle system for the bevy engine.","archived":false,"fork":false,"pushed_at":"2024-09-06T10:17:10.000Z","size":277,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-10T08:51:07.326Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mintlu8.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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":"2024-06-26T09:00:07.000Z","updated_at":"2024-09-06T10:17:14.000Z","dependencies_parsed_at":"2024-06-26T19:41:49.170Z","dependency_job_id":null,"html_url":"https://github.com/mintlu8/berdicles","commit_stats":null,"previous_names":["mintlu8/berdicles"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mintlu8%2Fberdicles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mintlu8%2Fberdicles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mintlu8%2Fberdicles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mintlu8%2Fberdicles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mintlu8","download_url":"https://codeload.github.com/mintlu8/berdicles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224737131,"owners_count":17361345,"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":[],"created_at":"2024-11-15T05:48:59.594Z","updated_at":"2025-04-12T16:05:16.871Z","avatar_url":"https://github.com/mintlu8.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# berdicles\n\nInstancing and projectile system for bevy.\n\n## Use cases\n\nDespite the name, `berdicles` can do pretty much anything related to instancing,\nfor example render the same material with different colors.\nThe crate can create VFX such as particle systems, spawn hair or grass, manage projectile events, etc.\n\n## Feature Set\n\n* Instancing based particles.\n* Fully support bevy's mesh and material system.\n* Custom shaders and instance buffers.\n* Emit projectiles from parent projectiles.\n* Mesh based projectile trails.\n* Projectile events that spawn other particles, i.e. explosion.\n* Multiple renders from the same simulation result via `ProjectileRef`.\n* Billboard rendering.\n\nNon-features\n\n* GPU simulation.\n* SIMD.\n\n## Getting Started\n\nAdd a `ProjectileCluster`, `Mesh3d` and `InstancedMaterial3d` to an entity.\n\nTo create a `ProjectileCluster` we need a `ProjectileSystem` trait implementor and\na `Projectile` type that it can spawns.\n\nSee the examples folder for more information.\n\n## Trait Based Particles\n\nPhysics based particles is commonly seen in most particle system implementations,\nbut they might be frustrating to work with in some situations.\nWe provide alternative ways to implement particles, instead of defining things\nas velocities, forces or curves.\n\n```rust\nimpl Particle for SpiralParticle {\n    fn update(\u0026mut self, dt: f32) { \n        self.lifetime += dt;\n    }\n\n    fn get_transform(\u0026self) -\u003e Transform {\n        Transform::from_translation(\n            Vec3::new(self.lifetime, 0., 0.)\n        ).with_rotation(\n            Quat::from_rotation_y(self.lifetime)\n        )\n    }\n\n    fn expiration_state(\u0026self) -\u003e ExpirationState{\n        ExpirationState::explode_if(self.lifetime \u003e 8.)\n    }\n}\n```\n\n## Comparison with `bevy_hanabi`\n\n`berdicle` is more of a projectile system since we have more control\nover the simulation and the render pipeline.\nEvents can be easily extracted from `berdicles` due to this fact. However,\nfor most VFX with no gameplay function, \n`bevy_hanabi` should be the superior choice.\n\n## Versions\n\n| bevy | berdicles    |\n|------|--------------|\n| 0.14 | 0.1-0.2      |\n| 0.15 | 0.3-latest   |\n\n## License\n\nLicensed under either of\n\n* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e)\n* MIT license ([LICENSE-MIT](LICENSE-MIT) or \u003chttp://opensource.org/licenses/MIT\u003e)\n\nat your option.\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any\nadditional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmintlu8%2Fberdicles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmintlu8%2Fberdicles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmintlu8%2Fberdicles/lists"}