Water, Global Illumination, and UI toolkits
2024-06-24
As we get closer to the stable release of a lot of the ecosystem efforts are going into stabilizing and preparing crates. This is the first time we've had a release candidate cycle for Bevy so it will be interesting to see how that impacts the final release.
So far the release candidate process has been well regarded overall, resulting in bugs being found and time for third party crates to upgrade before the day of the release.
Similar to previous issues, more crates have been updated to be compatible with the release-candidate which is currently rc.3, but we don't mention them individually here. Check the releases and GitHub repos for your dependencies for updates.
First-Person view
A new FPS example shows off differing field-of-views for multiple cameras. Specifically the camera that renders the "view model" (player's arm) is static while the wider world's field-of-view is configurable by the user. This allows the user to change their FoV without affecting the look of their own player model.
The example shows off how to use multiple cameras and multiple RenderLayers
, including dealing with shadows and lighting.
Cross Gizmos
13883 introduces cross gizmos for 2d and 3d.
Deterministic Meshlet Processing
13913 builds on top of 13904 to improve meshlet processing performance and make meshlet processing deterministic. Having deterministic meshlet processing is very important for debugging, since the meshlet output is consistent between asset rebuilds.
Alice's Merge Train is a maintainer-level view into active PRs, both those that are merging and those that need work.
Showcase
Bevy work from the #showcase channel in Discord and around the internet. Use hashtag #bevyengine.
Lamps and Water
showcase
A number of different updates in this game. Including:
- Lamps
- Directional Light Sources
- Light sources that follow the environmental light.
- Build targeting
Screen-Space Global Illumination
showcase
An implementation of screen space global illumination based on Visibility Bitmasks. The demo also uses the new Screen Space Reflections and motion blur that were added in 0.14.
Additional context on the ssaovb approach is available.
defcon gizmos
showcase
Inspired by Defcon this demo shows off the usage of Bevy's gizmos to render what would be passing planes on a map.
Water Caustics
showcase
This water-and-caustics demo includes a link to the addition of an attenuation
field to Bevy's PbrInput
shader processing.
Crates
New releases to crates.io and substantial updates to existing projects
bevy_device_lang 0.4.0
crate_release
bevy_device_lang provides cross platform access to the device language, so the right language can be used for localization.
0.4 brings Windows and Linux support, adding the the iOS/macOS/Android/WASM support.
bevy_lunex 0.1.0
crate_release
Bevy Lunex 0.1 is the first published version of the UI crate powering the cyberpunk-inspired Bevypunk demo. bevy_lunex allows mixing 2d and 3d elements, diagetic interfaces in worldspace, routing, and more.
It now includes a documentation book and the Bevypunk example is available on Itch.io.
haalka
crate_release
haalka is a reactivity library powered by Functional Reactive Programming and futures-signals. Inspired by Dominator and MoonZoon, haalka offers the same signal semantics as a thin layer on top of bevy_ui
.
The examples are the right place to start if you're interested in seeing how the framework works, documentation will follow, and there are 10 additional videos in the Discord thread that don't exist in the GitHub repo.
bevy_fps
crate_release
Last week a new 3d FPS character controller example was added to bevy_rapier
. bevy_fps
takes that code and makes it a separate installable crate.
warbler_grass 0.6.1
crate_release
warbler_grass is a crate to render 3d grass.
0.6.1 speeds up the computation of the grass dramatically, as well as allows the computation to last for multiple frames. This should get rid of any stutters when loading in new grass chunks.
The new systems also dispatch user events to track the current status of the computation, as well as giving more information in case of errors
Make time_system public authored by kristoff3r
fix typo authored by tomara-x
Warn about missing `StatesPlugin` when installing states authored by MiniaczQ
remove inaccurate warning from `in_state` authored by lee-orr
Allow bevy_color use without bevy_reflect support authored by torsteingrindvik
text position: use size instead of bounds authored by mockersf
Generalised ECS reactivity with Observers (#10839) authored by mnmaita
Use a unstable sort to sort component ids in `bevy_ecs` authored by Brezak
Add first person view model example authored by janhohenheim
Made some things in bevy_render `Debug`. authored by mintlu8
Update accesskit and accesskit_winit authored by jdm
Update observer archetype flags for sparse components authored by james-j-obrien
Fix parameter name of all_tuples's document authored by long-long-float
Fix minor typo authored by janhohenheim
Add cross gizmos authored by lubomirkurcak
Fix lints introduced in Rust beta 1.80 authored by janhohenheim
bevy_reflect: Improve reflection serialization error messages authored by MrGVSV
Reuse VisibleEntities in check_light_mesh_visibilty authored by re0312
Fix phantom key presses in winit on focus change (#13299) authored by hut
observers example doesn't follow standards authored by mockersf
Refactor check_light_mesh_visibility for performance #1 authored by re0312
Improve MeshletMesh::from_mesh performance authored by zeux
Use smooth_nudge in 2d_top_down_camera example authored by ChristopherBiscardi
Specify units in `AmbientLight::brightness` docs authored by BD103
Fix typo in `Query::single_mut` docs authored by dav-wolff
`IntoSystemConfigs::chain_ignore_deferred`'s return type fix authored by Jenya705
Change World::inspect_entity to return an Iterator instead of Vec authored by ItsDoot
Fix typo in `ComponentId` docs: `of` -> `or` authored by benfrankel
Fixed a link to Blender's mikktspace docs authored by YohDeadfall
Improve error handling for log filter authored by LucDrenth
Use a well defined type for sides in RegularPolygon authored by NiseVoid
Shader code paths authored by AndrewDanial
Use u32 for all resolution/subdivision fields in bevy_gizmos authored by NiseVoid
bug: Fix 9-slice textures with asymmetric borders. authored by shanecelis
docs(bevy_state): fix broken links in init_state and insert_state authored by kettei-sproutty
Fix a couple typos in contributing docs authored by rparrett
Fix a few "repeated word" typos authored by rparrett
Omit font size where it closely matches the default in examples authored by rparrett
Use default window and font sizes in sprite_slice example authored by rparrett
Updated descriptions for some geometric primitives to include more detail authored by Octorine
Correctly check physical size when updating winit authored by tychedelia
Make meshlet processing deterministic authored by zeux
Use u32 for resolution/subdivision in primitive meshing authored by NiseVoid
feat: add insert_after and insert_startup_before authored by kettei-sproutty
Move `StateTransitionSteps` registration to states plugin authored by MiniaczQ
Use a ship in Transform::align example authored by ChristopherBiscardi
Fix meshlet interactions with regular shading passes authored by JMS55
Make Observer::with_event (and other variants) unsafe authored by cart
apply window scale to window size when creating it authored by mockersf
bug: Don't panic. Warn on missing file_watcher path. (new branch) authored by shanecelis
Want to contribute to Bevy?
Here you can find two types of potential contribution: Pull Requests that might need review and Issues that might need to be worked on.
Pull Requests Opened this week
Move Frustum, HalfSpace from bevy_render to bevy_math authored by torsteingrindvik
Replaced implicit emissive weight with default. authored by dragostis
Audio sink seek authored by ivanstepanovftw
Make `Task`s functional on WASM authored by JoJoJet
bevy_reflect: Contextual serialization error messages authored by MrGVSV
examples: Add `Type Data` reflection example authored by MrGVSV
Refactor check_light_mesh_visibility for performance #2 authored by re0312
feat(gltf): add name component to gltf mesh primitive authored by Soulghost
Rapid repeated animation transitions break animation (Issue showcase) authored by lubomirkurcak
Replace `HierarchyEvent` with `OnParentChange` trigger authored by Jondolf
Support Triggering Buffered Events authored by cart
test for ambiguity system ordering authored by Vrixyz
Have WindowPosition::Centered take scale_factor_override into account authored by MScottMcBee
More flexible computed states authored by Azorlogh
Fix prepass batch authored by re0312
Sysinfo plugin compilation has been fixed for disabled multi_threaded feature authored by bugsweeper
Include AutoExposurePlugin in CorePipelinePlugin authored by Kurble
Add a test asserting that reflected cloning a Handle increments strong count authored by ItsDoot
improved error message when forgetting to call system apply function … authored by Wuketuke
Use CameraController in 3d_gizmos example authored by mgi388
Issues Opened this week
`bevy_render::Frustum` should live in `bevy_math` authored by alice-i-cecile
Audio latency is higher than it needs to be authored by ivanstepanovftw
Bevy needs a better asset-hosting solution for example assets authored by alice-i-cecile
Audio Sink Creation Delayed and Multiple Sinks Spawned authored by ivanstepanovftw
Extended material example fails in browser authored by torsteingrindvik
Change detection of keyboard's resource `ButtonInput` is inconsistent authored by Pieresqi
Rapid repeated animation transitions break animation authored by lubomirkurcak
Lossy parse log filter if it comes from env variable authored by LucDrenth
Add resources for accumulated mouse motion and mouse scroll authored by alice-i-cecile
Add dependencies list for Gentoo Linux. authored by Oglo12
Explain the pros and cons of each anti-aliasing technique authored by alice-i-cecile
CI tasks `check-compiles` and `build` could use better names authored by ItsDoot
Add i64 and u64 implementations for bevy_render::render_resource::ShaderType authored by Phil-hacker
Add `EntityCommands::observe_self` for easier self-targeting observers authored by alice-i-cecile
Replace `RemovedComponents` with observers authored by alice-i-cecile
REGRESSION: wgpu panic `BadDisplay` after winit 0.30 on Wayland OpenGL authored by inodentry
Segfault on exit with `multi_threaded` feature disabled on Wayland after wgpu 0.20 authored by Friz64
Sysinfo plugin does not compile without `multi_threaded` feature authored by Friz64
Random state changes caused by events authored by jonathandw743
`AssetServer` panics when loading folder authored by Pieresqi
Resolve overlap between `bevy_render` primitives and `bevy_math` primitives authored by Jondolf
Improve `CommandQueue has un-applied commands being dropped.` warning message authored by Swoorup
Styling regression: ButtonBundle background color authored by eidloi
Component Hook functions as attributes for Component derive macro authored by ItsDoot
Current tracy deps don't follow compatibility table authored by torsteingrindvik
Regression in state scheduling authored by eidloi
Regression in scheduling authored by eidloi
WASM perf regression: App updates triggered by input events authored by Azorlogh
Extension traits are re-exported by name authored by benfrankel
Regression on string representation of entities authored by eidloi
Log window/monitor info on startup authored by JMS55
Allow one-shot systems to be replaced, re-using the same SystemId authored by viridia
Gamepad unique id authored by andrewbaxter
Fragment Stage Exceeds Maximum Sampled Textures Limit on the web authored by jinleili