{"id":15155315,"url":"https://github.com/droggelbecher/bevy-fast-tilemap","last_synced_at":"2025-04-12T18:53:12.768Z","repository":{"id":153636600,"uuid":"512103727","full_name":"Droggelbecher/bevy-fast-tilemap","owner":"Droggelbecher","description":"Lightning fast tilemaps for bevy.","archived":false,"fork":false,"pushed_at":"2024-10-27T13:39:58.000Z","size":4437,"stargazers_count":83,"open_issues_count":1,"forks_count":18,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-03T22:08:18.578Z","etag":null,"topics":["bevy","gamedev","rust","tilemap"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/Droggelbecher.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-09T05:40:50.000Z","updated_at":"2025-03-05T22:12:36.000Z","dependencies_parsed_at":"2024-01-21T12:29:56.463Z","dependency_job_id":"2e23446c-f606-4aec-80e8-6428b4fd66b1","html_url":"https://github.com/Droggelbecher/bevy-fast-tilemap","commit_stats":{"total_commits":48,"total_committers":7,"mean_commits":6.857142857142857,"dds":0.5416666666666667,"last_synced_commit":"7874d36c96ac1dbaa12722a91c7e0ef10bebb1ef"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Droggelbecher%2Fbevy-fast-tilemap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Droggelbecher%2Fbevy-fast-tilemap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Droggelbecher%2Fbevy-fast-tilemap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Droggelbecher%2Fbevy-fast-tilemap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Droggelbecher","download_url":"https://codeload.github.com/Droggelbecher/bevy-fast-tilemap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248618243,"owners_count":21134200,"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":["bevy","gamedev","rust","tilemap"],"created_at":"2024-09-26T18:04:29.791Z","updated_at":"2025-04-12T18:53:12.747Z","avatar_url":"https://github.com/Droggelbecher.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Fast Tilemap for Bevy\n\n[![Crates.io](https://img.shields.io/crates/v/bevy_fast_tilemap)](https://crates.io/crates/bevy_fast_tilemap)\n[![docs](https://docs.rs/bevy_fast_tilemap/badge.svg)](https://docs.rs/bevy_fast_tilemap/)\n\nLightning fast tilemaps for [`bevy`](https://bevyengine.org/).\n\n## Features\n\n- Very high rendering performance (hundreds of fps, largely independent of map size).\n- Multiple layers can be achieved by multiple map instances or custom shader logic\n- Rectangular and axonometric (eg isometric) tile maps.\n- Coordinate conversion for eg computing map position of the mouse cursor.\n- Tiles can overlap either by \"dominance\" rule or by perspective.\n  Perspective mode allows an orthographic camera like 3d look,\n  that is, *tiles don't need to be flat but can be isometric \"objects\"* (see examples).\n- Optional custom mesh for which the map serves as a texture.\n- Color gradient for tinting the whole map.\n- Custom shader code that can apply per-tile effects such as tinting or *animation*.\n- Tiles may use textures bigger than a single tile. (see screenshot below).\n- Arbitrary boundary shapes through custom shader code.\n- Two kinds of \"animation\" are supported, you can\n  - Update the tile indices regularly from a system (see [Animation Example](examples/animation.rs))\n  - Inject some custom shader code that can animate a tile in whatever way you can express in WGSL.\n\n## Screenshots\n\n![iso_perspective](screenshots/iso_perspective.png)\n\nIsometric perspective rendering.\n\n![custom_mesh](screenshots/custom_mesh.png)\n\nMeshes don't have to be rectangles.\n\n![patterns](screenshots/patterns.png)\n\nTiles can use bigger textures and (through custom shader code) arbitrary boundary shapes.\n\nCheckout [screenshots/](screenshots/) for more.\n\n## How it works\n\nThe whole map is rendered as a single quad and a custom shader cares for rendering the\ncorrect tiles at the correct position.\n\nThis works by using a storage buffer with tile indices and a tilemap atlas with the tiles.\nWith some clever sampling, tiles can overlap with correct perspective so a \"tile\" can actually be\nany isometric object.\n*Bevy-fast-tilemap* store the storage buffer in a special material which you can access and change\n(see [examples/](examples/)).\nThe tilemap atlas should be provided by you (see [assets/](assets/) for atlas examples).\n\nAs of this writing, this should be (much) faster than most other bevy tilemap implementations out\nthere.\n\n## Limitations\n\n- Only tested on Windows, no WASM support\n- No support for rotating or scaling the entity holding the map (it will not look like you'd expect).\n  (You can of course still zoom/rotate the camera to achieve any such effect)\n- No support for using maps in a 3d setting.\n\nSee [Troubleshooting](docs/Troubleshooting.md) for common problems and their mitigations.\n\n## Related work\n\nIf you dont require all of `bevy_fast_tilemap`s performance and are looking for an approach that\nsupports some more tile shapes and allows to treat each tile as a separate entity, take a look at\n[bevy_ecs_tilemap](https://github.com/StarArawn/bevy_ecs_tilemap/) which (among others) inspired\nthis work.\n\n## Examples\n\nCheck out the [examples/](examples/) folder to get an overview.\nYou can run the examples like this:\n\n```bash\ncargo run --example bench\ncargo run --example animation\ncargo run --example iso_perspective\ncargo run --example custom_shader_code\ncargo run --example patterns\ncargo run --example updates\n...\n```\n\n## Bevy Compatibility\n\n|bevy|bevy_fast_tilemap|\n|---|---|\n|0.10|0.1.0 - 0.4.0|\n|0.11|0.5.0|\n|0.12|0.6.0|\n|0.13|0.7.0 - 0.7.6|\n|0.14|0.8.0|\n|0.14|0.8.1|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdroggelbecher%2Fbevy-fast-tilemap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdroggelbecher%2Fbevy-fast-tilemap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdroggelbecher%2Fbevy-fast-tilemap/lists"}