Ray Marching, Blender Workflows, and Node Graphs
2024-07-01
The release-candidate process continues as 0.14.0-rc.4 went out this week. Changes between rc.3 and rc.4 can be viewed on GitHub.
It looks like the stable release will happen this week, but to be clear there is no date set and the release will happen when it is ready and the release candidate process has run its course.
If you've been using the 0.14 release candidates, you might notice some changes to the inclusion of BackgroundColor
in bundles such as the ImageBundle
in the most recent release candidate. 14017 adds them back in for DX aims where they were removed before.
UI Material Example
Bevy supports using shaders to render UI elements with bevy_ui. The ui_material example was updated to include a progress-bar style shader. This is a fairly simple shader and those already comfortable with writing shaders likely already understand how to write it, but many coming to Bevy who are not yet comfortable with GPU programs will find it useful.
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.
Quartz: Targets Go Spinny
showcase
A second Quartz visual programming and dsp playground demo: targets go spinny. This one, as usual, is audio-heavy and best viewed at the link on YouTube.
Node graph scripting
showcase
This is scripting where all the nodes are fully automatically generated. It compiles to a VM and then runs in rust, using reflect, and reflect on functions!
Publishing this work would require function reflection and currently relies on a number of forks, but is on GitHub for those that are interested.
Brackey's 2d platformer Bevy port
showcase
Brackeys recently started posting videos on YouTube again, shifting from Unity to Godot-based videos. With that, they've posted a beginner-level 2d-platformer tutorial.
This showcase is an attempt to port the end result of that tutorial to Bevy. The implementation uses a few crates that are, in my opinion, well established and common choices:
bevy_ecs_ldtk
powers level creationbevy_xpbd_2d
powers colliders and sensorsleafwing-input-manager
additionally powers input management
It also uses bevy_collider_gen
which is a lesser-known crate that creates xpbd colliders from images with transparency, and bevy_editor_pls
as an in-app editor.
The implementation uses Bevy 0.13.2.
balling
showcase
In the vein of super monkey ball or marble it up this is a marble/sphere controller in a level. It is the first steps towards recreating this style of game.
2d depth with bevy_ecs_tilemap
showcase
This demo shows off the first working version of bevy_ecs_tilemap combined with a 2d depth texture to allow a player character to walk through the middle of a tile image. In this case its the player walking through the middle of an arch tile. More work needs to be done to get the math for the depth values working well.
Blender_bevy_component_workflow (blenvy)
showcase
Blender_bevy_components_workflow is a project that pushes Blender/Bevy integration forward using Blender addons and Bevy crates. This showcase shows off a number of features in the upcoming release, including full-level hot-reloading, blueprints, and more.
The project is going to be renamed to blenvy and we'll cover it again then. Until then there's plenty of extra videos and information in the Discord thread.
you can't dance around the fire without a fire!
showcase
Quartz is a visual programming and dsp playground and now has a deployed wasm build as well, which you can learn to use in the README.
This is a piece done using Quartz, which you'll want to listen to using the YouTube link or the Discord thread.
bevy lightmap experiments
showcase
Did you know Bevy supports lightmaps? lightmapping workflows were unlocked with 0.13's release using tools like The Lightmapper and Blender.
this is a demo of Bevy's lightmap support and uses The Lightmapper and Blender to bake the lightmaps. The scene is a glTF and the lightmaps are inserted on each model individually.
bevy directx
showcase
The first triangle rendered using Bevy and custom directx rendering, demo is available on GitHub. This is an extremely interesting example if you're interested in low-level rendering implementation but will not apply to the vast majority of Bevy users and isn't planned to be upstreamed.
Crates
New releases to crates.io and substantial updates to existing projects
SMesh
crate_release
SMesh is a polygon mesh manipulation library meant for use in procedural generation.
let mut smesh = SMesh::new();
let v0 = smesh.add_vertex(vec3(-1.0, -1.0, 0.0));
let v1 = smesh.add_vertex(vec3(1.0, -1.0, 0.0));
let v2 = smesh.add_vertex(vec3(1.0, 1.0, 0.0));
let v3 = smesh.add_vertex(vec3(-1.0, 1.0, 0.0));
berdicles
crate_release
berdicles is an expressive CPU particle system for the Bevy engine.
Features
- Instancing based CPU particles.
- Expressive non-physics based particle traits.
- Familiar setup with bevy's native Material and Mesh.
- Particles as emitters.
- Mesh based particle trails.
- Particle events that spawns other particles.
- Billboard particles.
The crate is compatible with Bevy 0.14+.
bevy_reflect_utils
crate_release
A small, plugin-less utility library making it easier to work with reflection in bevy.
bevy-text-edit
crate_release
bevy-text-edit is a crate for editable text. It supports text cursors and multiple text boxes.
commands.spawn((
TextEditable,
Interaction::None,
TextBundle::from_section(
"Input Text 1",
TextStyle {
font_size: 20.,
..default()
},
),
));
Have WindowPosition::Centered take scale_factor_override into account authored by MScottMcBee
Add a test asserting that reflected cloning a Handle increments strong count authored by ItsDoot
Document use of `NO_COLOR` in `LogPlugin` authored by ActuallyHappening
fix panic: invalid SlotMap key used authored by eidloi
Use CameraController in 3d_gizmos example authored by mgi388
Make default behavior for `BackgroundColor` and `BorderColor` more intuitive authored by alice-i-cecile
Fixing par_read targetting 0.14 branch authored by BobG1983
Remove unnecessary compute for rotation interpolation authored by re0312
Fix MeshletMesh material system ordering authored by JMS55
Mark events as read during `EventReader::par_read` authored by BobG1983
Don't show `.to_bits` in `Display` impl for `Entity` authored by alice-i-cecile
feat(bevy_app): expose an API to perform updates for a specific sub-app. authored by Soulghost
Document trace_tracy_memory in profiling.md authored by theotherphil
Add example enum Component usage to ecs_guide authored by theotherphil
Add Display implementation to DebugName. authored by gagnus
improved error message when forgetting to call system apply function … authored by Wuketuke
Fair Change Detection Benchmarking authored by re0312
don't crash without features `bevy_pbr`, `ktx2`, `zstd` authored by mockersf
AnyOf soundness fix authored by cBournhonesque
example showcase: keep the order of the shaders imported authored by mockersf
Refactor check_light_mesh_visibility for performance #2 authored by re0312
fix examples color_grading and mobile after BackgroundColor changes authored by mockersf
Emit a warning if the result of `EntityCommand::with_entity` is not used authored by JoJoJet
Use an opaque type for `EntityCommand::with_entity` authored by JoJoJet
impl `BuildChildrenTransformExt` for `EntityWorldMut` authored by yrns
Print warning when using llvmpipe authored by msvbg
Fix typo in CPU adapter warning authored by msvbg
only run one update per frame drawn authored by mockersf
Update ui_material example to be a slider instead authored by IceSentry
Fix error in AnyOf authored by cBournhonesque
add PartialEq to Outline authored by eidloi
Fix incorrect computation of mips for cluster occlusion lookup authored by zeux
Allow phase items not associated with meshes to be binned. authored by pcwalton
Add missing StaticSystemParam::queue implementation. authored by chescock
add missing sort_unstable_by_key to QueryIter authored by Victoronz
Windows CI example runner: back to using rust stable authored by mockersf
Improve MeshletMesh::from_mesh performance further authored by zeux
don't put previous skin/morph in the morphed_skinned_mesh_layout authored by mockersf
Made Material2dBindGroupId instantiable authored by brianreavis
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
Minimal Bubbling Observers authored by NthTensor
Handle `Ctrl+C` in the terminal properly authored by SarthakSingh31
Component Hook functions as attributes for Component derive macro authored by Jenya705
Apply Clippy lints regarding lazy evaluation and closures authored by Luracasmus
Remove extra allocation in AccessFilters authored by cBournhonesque
Sort default features in Cargo.toml authored by mgi388
[bevy_text] Enable shifting text position within a `Text` component authored by zmbush
Track source location in change detection authored by aevyrie
Merge `BuildWorldChildren` and `BuildChildren` traits. authored by yrns
Support more kinds of system params in buildable systems. authored by chescock
Opprotunistically use dense iteration for archetypal iteration. authored by re0312
Added feature switch to default Standard Material's new anistropy texture to off authored by gagnus
Mouse input accumulation authored by Aztro-dev
Optimize ui_layout_system authored by re0312
Add support for specular tints and maps per the `KHR_materials_specular` glTF extension. authored by pcwalton
Uniform mesh sampling authored by mweatherley
Issues Opened this week
[Docs] Add example to demonstrate how to use skinning and morph with custom vertex shaders authored by HydrogenC
macOS asks for permission to use the microphone authored by tsukinoko-kun
Bevy should capture Ctrl+C, send AppExit event authored by JMS55
Support the `<verb>_parent_in_place()` API for operating on parents instead of children authored by janhohenheim
"Error: could not compile `bevy_core_pipeline` (lib)" in CI due to SIGSEGV: invalid memory reference authored by alice-i-cecile
lldb hangs 1-2s whenever I press Ctrl+key or Cmd+key for the first time on Mac (since winit v0.30) authored by zhaop
Rename bevy_core::name::DebugName to better fit its implementation authored by ItsDoot
Allow rotating the skybox/environment map authored by Azorlogh
Specialized Material Bind Group Layout authored by cart
Extend `AsBindGroup` macro with support for `RenderAssetUsages` authored by davids91
Include setting RenderAssetUsages into `AsBindGroup` authored by davids91
Unsupported GL_EXT_texture_shadow_lod causes panic in PBR pipeline authored by ByteNybbler
Apple Pencil double tap events support (`winit`) authored by ActuallyHappening
Meshlet occlusion culling is bugged at non-power-of-2 window sizes authored by JMS55
Update examples to use accumulated mouse input authored by mweatherley
Setting next state in OnEnter system is inconsistent if it changes states authored by FishArmy100
Log DXC/FXC and shader model at startup on the DirectX12 backend authored by JMS55