![]() A "passable" renderer no longer cuts it when we have hundreds of contributors, a paid full-time developer, thousands of individual users, and a growing number of companies paying people to work on Bevy apps and features. ![]() The shortcomings above were acceptable in Bevy's early days, but were clearly holding us back as Bevy grew from a one person side project to the most popular Rust game engine on GitHub (and one of the most popular open source game engines. This wasn't aligned with our goals for modularity and clarity. ![]() Repeating render logic was troublesome: Viewports, rendering to multiple textures / windows, and shadow maps were possible, but they required hard-coding, special casing, and boilerplate.This state (or at least, the component metadata) needed to be written to / read from Scenes, which was also suboptimal and error prone. This took up space, computing the state was expensive, and it gunked up user-facing APIs with a bunch of "do not touch" render Components. User-facing internals: It stored a lot of internal render state directly on each entity.suboptimal when compared to other options in the ecosystem. Often slow: Features like "sprite rendering" were built on the costly high-level abstractions mentioned above.When managing "render resources", it was easy to do something "wrong" and hard to tell "what went wrong". Users were often overwhelmed when trying to operate at any level but "high-level". Complex: The "high-level ease of use" came at the cost of significant implementation complexity, performance overhead, and invented jargon.However, it also had a number of significant shortcomings: High level data-driven API: this made it easy and ergonomic to write custom per-entity render logic.Multiple backends (both first and third party).Modular render logic (via the Render Graph).The old Bevy Renderer got a number of things right: We still have plenty of work to do, but I'm proud of what we have accomplished so far and I'm excited for the future!īefore we cover what's new, it's worth discussing why we embarked on such a massive effort. I am confident that the New Bevy Renderer will be a rallying point for the Bevy graphics ecosystem and (hopefully) the Rust graphics ecosystem at large. I promise I'll qualify all of those fluffy buzzwords below. The New Bevy Renderer wouldn't be what it is without them, and I highly recommend checking out their projects! We also learned a lot from (and worked closely with) other renderer developers in the Rust space, namely ( rafx) and ( rend3). Industry Proven: We've taken inspiration from battle tested renderer architectures, such as Bungie's pipelined Destiny renderer.Modular to its core: Standardized 2d and 3d core pipelines, extensible Render Phases and Views, composable entity/component-driven draw functions, shader imports, extensible and repeatable render pipelines via "sub graphs".Simpler: Fewer layers of abstraction, simpler data flow, improved low-level, mid-level, and high-level interfaces, direct wgpu access.We also have a ton of new features in development (cascaded shadow maps, bloom, particles, shadow filters, and more!) Prettier: We're releasing the new renderer alongside a number of graphical improvements, such as directional and point light shadows, clustered forward rendering (so you can draw more lights in a scene), and spherical area lights.Faster: More parallel, less computation per-entity, more efficient CPU->GPU dataflow, and (with soon-to-be-enabled) pipelined rendering.Read on for details! The New Bevy Rendererīevy 0.6 introduces a brand new modern renderer that is: Bevy ECS ergonomics and performance improvements.More powerful shaders: preprocessors, imports, WGSL support.You can test this out by running the Bevy Examples in your browser! Significantly faster sprite rendering with less boilerplate.A brand new modern renderer that is prettier, faster, and simpler to extend.There are a ton of improvements, bug fixes and quality of life tweaks in this release. To update an existing Bevy App or Plugin to Bevy 0.6, check out our 0.5 to 0.6 Migration Guide. Check out Bevy Assets for a collection of community-developed plugins, games, and learning resources. Bevy is also free and open source forever! You can grab the full source code on GitHub. You can check out Quick Start Guide to get started. Thanks to 170 contributors, 623 pull requests, and our generous sponsors, I'm happy to announce the Bevy 0.6 release on crates.io!įor those who don't know, Bevy is a refreshingly simple data-driven game engine built in Rust.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |