A procedural sky plugin for bevy

Overview

bevy_atmosphere

A procedural sky plugin for bevy

Crates.io docs.rs

Example

use bevy::prelude::*;
use bevy_atmosphere::*;
fn main() {
    App::build()
        .insert_resource(bevy_atmosphere::AtmosphereMat::default()) // Default Earth sky
        .add_plugins(DefaultPlugins)
        .add_plugin(bevy_atmosphere::AtmospherePlugin { dynamic: false }) // Set to false since we aren't changing the sky's appearance
        .add_startup_system(setup.system())
        .run();
}
fn setup(mut commands: Commands) {
    commands.spawn_bundle(PerspectiveCameraBundle::default());
}

Big thanks to https://github.com/wwwtyro/glsl-atmosphere and https://github.com/jomala/bevy_skybox, which I essentially tried to merge together

Also thanks to those on the Bevy Discord who took the time to help me

Comments
  • Rendering is slow in dymanic mode

    Rendering is slow in dymanic mode

    It seems the material buffer is re-created each frame, instead of being reused and only the new content re-uploaded if necessary: https://github.com/JonahPlusPlus/bevy_atmosphere/blob/f85f3a5414862b077164ef8225f1e02ff578fa6d/src/material.rs#L123-L131

    On a beefy developer machine I see some ~22ms frame time with bevy_atmosphere, a single cube, and a single tiny UI text showing the FPS. On a more mid-range laptop config this climbs to >50ms. Not sure this create buffer is the cause but it likely doesn't help.

    opened by djeedai 11
  • Fails on WASM

    Fails on WASM

    You may already be aware of this, but since WebGL 2.0 isn't standard yet, web builds fail at runtime because there isn't support for compute shaders. I know you just switched over to compute shaders, but is there a way to also support wasm?

    Here is the error I get:

    panicked at 'wgpu error: Validation Error
    
    Caused by:
        In Device::create_bind_group_layout
          note: label = `bevy_atmosphere_associated_bind_group_layout`
        too many bindings of type StorageTextures in stage COMPUTE, limit is 0, count was 1
    
    opened by nokierae 7
  • Relicense bevy_atmosphere under dual MIT/Apache-2.0

    Relicense bevy_atmosphere under dual MIT/Apache-2.0

    When I started this, I didn't know too much about dual licensing, or its benefits. In order to keep this project in line with the Bevy project, I would like to "relicense" this project under the same licenses. I'm going to follow the same path for relicensing as Bevy (see here) and ask every contributor (as of this message and minus the bot) to give their consent by leaving the following comment:

    I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

    Once I get consent from everyone involved, I'll merge this PR. Hopefully, it'll be done by the time I'm finished with the 0.4 release.

    Contributor Check-off

    • [x] @JonahPlusPlus
    • [x] @Shatur
    • [x] @cryscan
    • [x] @Aceeri
    • [x] @kbieganski
    opened by JonahPlusPlus 7
  • 0.4 Tracking Issue (Bevy 0.8 Update)

    0.4 Tracking Issue (Bevy 0.8 Update)

    Edit: Changed this to a tracking issue.

    0.4 update changes:

    • [x] Update dependencies to bevy 0.8 compatible versions
    • [x] Rename AtmosphereMat to Atmosphere
    • [x] Rewrite material creation
    • [x] Rewrite shaders in WGSL
      • [x] Create exports for shader module
      • [x] ~~Default feature gate plugin and material resource~~
      • [x] Add noise via hash function to remove banding (been a while, but I think this was an issue)
    • [x] Use texture target and update texture when resource updates
    • [x] Update LICENSE to be dual-licensed under both MIT and Apache-2.0 (optional, needs consent from prior contributors)
    • [x] Update example
    • [x] ~~Feature gate dynamic~~
    opened by JonahPlusPlus 6
  • Consider adding compatibility table/badge

    Consider adding compatibility table/badge

    It's a bit unclear which version of bevy_atmosphere is compatible with which version of Bevy. I would suggest following Bevy's own Plugin Guidelines and adding a badge and/or a compatibility table to help users pick the right version of bevy_atmosphere more easily 😊

    opened by djeedai 4
  • Update to Bevy 0.6

    Update to Bevy 0.6

    Bevy 0.6 features a new renderer, so the changes are quite extensive. Mostly just followed the official examples for custom shaders.

    In the shader, I put all the uniforms into a single bind group and separated combined fields.

    I modified the system that moves the sky sphere to use GlobalTransforms. This is needed for cameras whose position is affected by their parents.

    Also changed the way the shaders are loaded. Taken from https://github.com/ForesightMiningSoftwareCorporation/bevy_transform_gizmo/blob/main/src/gizmo_material.rs#L18

    In the example, I changed the point light to a directional light.

    opened by kbieganski 4
  • Update to bevy v0.9

    Update to bevy v0.9

    Updates bevy_atmosphere to use Bevy v0.9

    Change Summary:

    • Add #[derive(Resource)] for all resources
    • Temporarily use https://github.com/BlackPhlox/bevy_flycam until merged into https://github.com/sburris0/bevy_flycam
    • Replace spawn_bundle() with spawn() and simplify insert() logic (I've conformed to Option 2 as mentioned here https://bevyengine.org/learn/book/migration-guides/0.8-0.9/#accept-bundles-for-insert-and-remove-deprecate-insert-remove-bundle)
    • Minor fixes for the Timer in the cycle example
    opened by 66OJ66 3
  • Doesn't work with bevy 0.6.0

    Doesn't work with bevy 0.6.0

    This is my Cargo.toml:

    [package]
    name = "projectname"
    version = "0.1.0"
    edition = "2021"
    
    [dependencies]
    bevy = "0.6.0"
    bevy_atmosphere = "0.1.3"
    

    And this is the error I get when running cargo run:

    $ cargo run
        Updating crates.io index
    error: failed to select a version for `syn`.
        ... required by package `darling_core v0.13.0`
        ... which satisfies dependency `darling_core = "=0.13.0"` of package `darling v0.13.0`
        ... which satisfies dependency `darling = "^0.13"` of package `ndk-macro v0.3.0`
        ... which satisfies dependency `ndk-macro = "^0.3.0"` of package `ndk-glue v0.5.0`
        ... which satisfies dependency `ndk-glue = "^0.5"` of package `bevy_asset v0.6.0`
        ... which satisfies dependency `bevy_asset = "^0.6.0"` of package `bevy_audio v0.6.0`
        ... which satisfies dependency `bevy_audio = "^0.6.0"` of package `bevy_internal v0.6.0`
        ... which satisfies dependency `bevy_internal = "^0.6.0"` of package `bevy v0.6.0`
        ... which satisfies dependency `bevy = "^0.6.0"` of package `projectname v0.1.0 ([my project path])`
    versions that meet the requirements `^1.0.69` are: 1.0.86, 1.0.85, 1.0.84, 1.0.83, 1.0.82, 1.0.81, 1.0.80, 1.0.79, 1.0.78, 1.0.77, 1.0.76, 1.0.75, 1.0.74, 1.0.73, 1.0.72, 1.0.71, 1.0.70, 1.0.69
    
    all possible versions conflict with previously selected packages.
    
      previously selected package `syn v1.0.65`
        ... which satisfies dependency `syn = "=1.0.65"` of package `bevy v0.5.0`
        ... which satisfies dependency `bevy = "^0.5"` of package `bevy_atmosphere v0.1.3`
        ... which satisfies dependency `bevy_atmosphere = "^0.1.3"` of package `projectname v0.1.0 ([my project path])`
    
    failed to select a version for `syn` which could resolve this conflict
    
    opened by GrbavaCigla 3
  • Update bevy requirement from 0.8 to 0.9

    Update bevy requirement from 0.8 to 0.9

    Updates the requirements on bevy to permit the latest version.

    Changelog

    Sourced from bevy's changelog.

    Version 0.9.0 (2022-11-12)

    Added

    • [Bloom][6397]
    • [Add FXAA postprocessing][6393]
    • [Fix color banding by dithering image before quantization][5264]
    • [Plugins own their settings. Rework PluginGroup trait.][6336]
    • [Add global time scaling][5752]
    • [add globals to mesh view bind group][5409]
    • [Add UI scaling][5814]
    • [Add FromReflect for Timer][6422]
    • [Re-add local bool has_received_time in time_system][6357]
    • [Add default implementation of Serialize and Deserialize to Timer and Stopwatch][6248]
    • [add time wrapping to Time][5982]
    • [Stopwatch elapsed secs f64][5978]
    • [Remaining fn in Timer][5971]
    • [Support array / cubemap / cubemap array textures in KTX2][5325]
    • [Add methods for silencing system-order ambiguity warnings][6158]
    • [bevy_dynamic_plugin: make it possible to handle loading errors][6437]
    • [can get the settings of a plugin from the app][6372]
    • [Use plugin setup for resource only used at setup time][6360]
    • [Add TimeUpdateStrategy resource for manual Time updating][6159]
    • [dynamic scene builder][6227]
    • [Create a scene from a dynamic scene][6229]
    • [Scene example: write file in a task][5952]
    • [Add writing of scene data to Scene example][5949]
    • [can clone a scene][5855]
    • [Add "end of main pass post processing" render graph node][6468]
    • [Add Camera::viewport_to_world][6126]
    • [Sprite: allow using a sub-region (Rect) of the image][6014]
    • [Add missing type registrations for bevy_math types][5758]
    • [Add serialize feature to bevy_core][6423]
    • [add serialize feature to bevy_transform][6379]
    • [Add associated constant IDENTITY to Transform and friends.][5340]
    • [bevy_reflect: Add Reflect::into_reflect][6502]
    • [Add reflect_owned][6494]
    • [Reflect for Tonemapping and ClusterConfig][6488]
    • [add ReflectDefault to std types][6429]
    • [Add FromReflect for Visibility][6410]
    • [Register RenderLayers type in CameraPlugin][6308]
    • [Enable Constructing ReflectComponent/Resource][6257]
    • [Support multiple #[reflect]/#[reflect_value] + improve error messages][6237]
    • [Reflect Default for GlobalTransform][6200]
    • [Impl Reflect for PathBuf and OsString][6193]
    • [Reflect Default for ComputedVisibility and Handle<T>][6187]
    • [Register Wireframe type][6152]
    • [Derive FromReflect for Transform and GlobalTransform][6015]
    • [Make arrays behave like lists in reflection][5987]
    • [Implement Debug for dynamic types][5948]

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • Update bevy_flycam requirement from ~0.8.1 to ~0.9.0

    Update bevy_flycam requirement from ~0.8.1 to ~0.9.0

    Updates the requirements on bevy_flycam to permit the latest version.

    Release notes

    Sourced from bevy_flycam's releases.

    v0.9.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/sburris0/bevy_flycam/compare/v0.8.0...v0.9.0

    Links

    crates.io : https://crates.io/crates/bevy_flycam

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • Sun & directional light do not match-up.

    Sun & directional light do not match-up.

    Here is a patch to the examples/cycle.rs file to show the issue. Shadows are turned on to help see the different angle of the directional light and the rendered Sun.

    diff --git a/examples/cycle.rs b/examples/cycle.rs
    index e52a5f1..4ca88ce 100644
    --- a/examples/cycle.rs
    +++ b/examples/cycle.rs
    @@ -56,6 +56,10 @@ fn setup_environment(
         // Our Sun
         commands
             .spawn_bundle(DirectionalLightBundle {
    +            directional_light: DirectionalLight {
    +                shadows_enabled: true,
    +                ..default()
    +            },
                 ..Default::default()
             })
             .insert(Sun); // Marks the light as Sun
    @@ -94,7 +98,7 @@ fn setup_environment(
         // Spawn our camera
         commands
             .spawn_bundle(Camera3dBundle {
    -            transform: Transform::from_xyz(5., 0., 5.),
    +            transform: Transform::from_xyz(5., 0., 5.).looking_at(Vec3::new(0., 1., 0.), Vec3::Y),
                 ..default()
             })
             .insert(AtmosphereCamera(None)) // Marks camera as having an atmosphere that isn't on a specific render layer
    
    
    opened by Neopallium 2
  • Create a way to disable the automatic rotation.

    Create a way to disable the automatic rotation.

    There should be a feature-gate and perhaps a runtime option to disable the automatic rotation. Some games have special scenarios where the skybox rotation needs to be controlled.

    opened by JonahPlusPlus 0
  • Clarify how the system works

    Clarify how the system works

    I've been looking at the repo, the docs, and some examples, and I'm still unsure how the system works overall.

    In previous versions before the rewrite, the plugin recalculated a camera "background" each frame, unless auto-update was disabled in which case it was calculated only once. At least I think.

    In this new version, which by the way looks a lot better from what I grasped, it also seems like this is still true? But there was also some mention of "update every 50ms" somewhere, so...?

    Then there's the whole "skybox" thing. My two conflicting possible understandings here are:

    1. The system calculates one cube map image every so often, then save it into a texture, which is sampled every frame from a giant inverted cube representing the sky. Efficient! But requires quite a big resolution...
    2. The system directly writes the atmosphere calculated into the render target of the camera reach frame. Optionally, it can also save that data into a cube map for e.g. IBL, but that cube map is not consumed by the atmosphere system. Maybe less efficient, definitely less memory, more dynamic, forward-looking!

    So, not sure which one it is?

    I'd be also interested to understand, for optimization purpose, when that rendering to the camera render target happens. I suspect it's not cheap, so would be best done after all opaque rendering, to leverage the depth buffer and reject as much fragments as possible.

    I'm really looking forward to integrate this new version in my project, but for now I'm unsure how. Thanks! 😊

    opened by djeedai 2
  • Custom skybox texture?

    Custom skybox texture?

    Looking in the docs I see https://docs.rs/bevy_atmosphere/0.4.1/bevy_atmosphere/skybox/struct.SkyBoxMaterial.html which has a public field for the skybox texture. So I naively tried to just replace that texture with one of my own (obviously not going to work).

    Is it possible to have a custom skybox?

    opened by SeedyROM 1
  • Return some computed values from the share for adjusting ambient and directional lighting

    Return some computed values from the share for adjusting ambient and directional lighting

    Currently I am adjusting the ambient light brightness based on the directional illuminance.

    I would also like to adjust the color the directional and ambient lighting so sunsets for instance become more realistic in my scene.

    Would this be possible?

    opened by ericvrp 3
Releases(0.5.0)
  • 0.5.0(Dec 4, 2022)

    bevy_atmosphere 0.5 for bevy 0.9

    0.5 Change Log

    • Removed the Atmosphere resource in favor of the Nishita model.
    • Added the AtmosphereModel resource, which holds an Atmospheric model.
    • Added the Atmospheric trait and derive macro, which is used to define a model for the pipeline to render.
    • Added the Nishita model, which provides Rayleigh and Mie scattering.
    • Added the Gradient model, which provides a simple linear gradient of three colors.
    • Added the Atmosphere and AtmosphereMut system params, for working with a specific model.
    • Added AtmosphereSettings.dithering, which allows for enabling/disabling dithering at runtime.
    • Updated bevy_atmosphere::prelude to include new common types.
    • Added AtmosphereModelMetadata, which is used to store type data about a model.
    • Added AddAtmosphereModel, which is used to easily register new models from an App.
    • Added RegisterAtmosphereModel, which is used to register the model it's implemented for.
    • Added AtmosphereImageBindGroupLayout, which is used to store a common bind group layout for all models.
    • Added SkyBoxMaterialKey, which is used to pass the dithering state to the pipeline.

    What's Changed

    • Bump Swatinem/rust-cache from 1 to 2 by @dependabot in https://github.com/JonahPlusPlus/bevy_atmosphere/pull/36
    • 0.5 major changes by @JonahPlusPlus in https://github.com/JonahPlusPlus/bevy_atmosphere/pull/37

    Full Changelog: https://github.com/JonahPlusPlus/bevy_atmosphere/compare/0.4.1...0.5.0

    Source code(tar.gz)
    Source code(zip)
  • 0.4.1(Aug 30, 2022)

    0.4.1 Patch

    • Removed ATMOSPHERE_INIT stage and "init" feature.
    • Added new "detection" feature that checks for new AtmosphereCamera components each frame, instead of just at startup. (Removal detection will be added in a future release)
    • Removed unnecessary "radsort" dependency.
    • Made removing Atmosphere and AtmosphereSettings resources set back to default.
    • settings example now shows removing AtmosphereSettings.
    • Added files to package.exclude of Cargo.toml, in order to reduce package size.
    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Aug 21, 2022)

    bevy_atmosphere 0.4 for bevy 0.8

    Check README.md, docs and examples for usage.

    0.4 Change Log

    • To change the sky simulation parameters, you would add/update an Atmosphere resource with custom values.
    • The plugin doesn't just pick the first camera, but can be used on select cameras using the AtmosphereCamera component, which holds an optional render layer for the spawned skybox to be on.
    • The plugin will automatically create skyboxes for atmosphere cameras during the ATMOSPHERE_INIT startup stage, which can be disabled by turning off the "automatic" feature.
    • Created skyboxes now have the AtmosphereSkyBox component. Only skyboxes with the component and that have a parent with AtmosphereCamera will have their rotation corrected.
    • To change the resolution, you can add an AtmosphereSettings resource and set the resolution field (which should be a multiple of 8). This could be used as part of quality settings in games.

    What's Changed

    • Relicense bevy_atmosphere under dual MIT/Apache-2.0 by @JonahPlusPlus in https://github.com/JonahPlusPlus/bevy_atmosphere/pull/21

    Full Changelog: https://github.com/JonahPlusPlus/bevy_atmosphere/compare/0.3.1...0.4.0

    Source code(tar.gz)
    Source code(zip)
  • 0.3.1(May 24, 2022)

    Release for bevy 0.7

    Changes the default radius to 100 to make artifacts from other objects intersecting with the sky less noticeable.

    Forgot about publishing releases on GitHub. It's not really necessary, but it might be a good way to store a change log, though nothing much has changed except for a few updates for new versions of bevy.

    Source code(tar.gz)
    Source code(zip)
  • 0.1.3(Nov 16, 2021)

  • 0.1.2(Nov 5, 2021)

  • 0.1.1(Oct 24, 2021)

    Just fixed a few things with the README.MD and made the default position of the sun higher up in the sky, just to make it more convenient for people who just want to add the plugin for a basic default sky.

    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Oct 24, 2021)

Owner
Jonah Henriksson
I like all things code!
Jonah Henriksson
🌎 Demo for Minecraft-like procedural generation using the Bevy game engine

infinigen This is a demo for Minecraft-like procedural generation using the Bevy game engine. chunks along all axes (X, Y and Z) adjustable zoom level

James Hiew 16 Jun 11, 2023
Bevy Simple Portals is a Bevy game engine plugin aimed to create portals.

Portals for Bevy Bevy Simple Portals is a Bevy game engine plugin aimed to create portals. Those portals are (for now) purely visual and can be used t

Sélène Amanita 11 May 28, 2023
A Bevy plugin for loading the LDtk 2D tile map format.

bevy_ldtk ( Tileset from "Cavernas" by Adam Saltsman ) A Bevy plugin for loading LDtk tile maps. Usage use bevy::prelude::*; use bevy_ldtk::*; fn mai

Katharos Technology 23 Jul 4, 2022
Inspector plugin for the bevy game engine

bevy-inspector-egui This crate provides the ability to annotate structs with a #[derive(Inspectable)], which opens a debug interface using egui where

Jakob Hellermann 517 Dec 31, 2022
A plugin for Egui integration into Bevy

bevy_egui This crate provides a Egui integration for the Bevy game engine. Features: Desktop and web (bevy_webgl2) platforms support Clipboard (web su

Vladyslav Batyrenko 453 Jan 3, 2023
Crossterm plugin for the bevy game engine

What is bevy_crossterm? bevy_crossterm is a Bevy plugin that uses crossterm as a renderer. It provides custom components and events which allow users

null 79 Nov 2, 2022
A Bevy plugin to use Kira for game audio

Bevy Kira audio This bevy plugin is intended to try integrating Kira into Bevy. The end goal would be to replace or update bevy_audio, if Kira turns o

Niklas Eicker 172 Jan 5, 2023
A prototype plugin providing a simple line drawing api for bevy.

bevy_debug_lines A prototype plugin providing a simple line drawing api for bevy. See docs.rs for documentation. Expect breakage on master. Click on t

Michael Palmos 92 Dec 31, 2022
Bevy plugin helping with asset loading and organisation

Bevy asset loader This Bevy plugin reduces boilerplate when loading game assets. The crate offers the AssetCollection trait and can automatically load

Niklas Eicker 205 Jan 2, 2023
A sprite-sheet animation plugin for bevy

Benimator A sprite sheet animation plugin for bevy Features A SpriteSheetAnimation component to automatically update the indices of the TextureAtlasSp

Jonathan Cornaz 140 Dec 27, 2022
A Bevy Engine plugin for making 2D paths, smooth animations with Bezier curves

bevy_pen_tool A Bevy Engine plugin for making 2D paths and smooth animations with Bezier curves TODO: Mesh-making functionality for building 2D shapes

Eli 36 Dec 22, 2022
Generic cellular automaton plugin for bevy.

Bevy Cellular Automaton bevy_life is a generic plugin for cellular automaton. From the classic 2D Conway's game of life to WireWorld and 3D rules, the

Félix Lescaudey de Maneville 34 Nov 23, 2022
Verlet physics plugin for bevy.

bevy_verlet Simple Verlet points and sticks implementation for bevy. Features You can simply add a VerletPoint component on any entity with a Transfor

Félix Lescaudey de Maneville 34 Dec 9, 2022
Bevy plugin for an AssetServer that can load embedded resources, or use other AssetServers based on the path.

Bevy-Embasset Embed your asset folder inside your binary. bevy-embasset adds support for loading assets embedded into the binary. Furthermore, it can

Johnny Tidemand Vestergaard 9 Aug 4, 2022
Hanabi — a particle system plugin for the Bevy game engine.

Hanabi — a particle system plugin for the Bevy game engine

Jerome Humbert 256 Dec 30, 2022
A plugin to use the kajiya renderer with bevy

??️ ?? bevy-kajiya A plugin that enables use of the kajiya renderer in bevy WARNING: This plugin is barebones and supports a limited set of features.

Sebastian Hamel 79 Jan 5, 2023
Tweening animation plugin for the Bevy game engine.

?? Bevy Tweening Tweening animation plugin for the Bevy game engine. Features Animate any field of any component or asset, including custom ones. Run

Jerome Humbert 135 Dec 23, 2022
Bevy engine + miniquad render plugin

Bevy engine + miniquad renderer This is a plugin for Bevy engine that replaces default windowing and rendering plugins with miniquad based one. Usage

Tomasz Sterna 31 Dec 9, 2022
A plugin to enable random number generation for the Bevy game engine.

bevy_turborand A plugin to enable random number generation for the Bevy game engine, built upon turborand. Implements ideas from Bevy's Deterministic

Gonçalo Rica Pais da Silva 15 Dec 23, 2022