A tiny Bevy plugin that counts the number of render pipelines that are ready and makes that data available as a resource in the main world.
Bevy's shaders are compiled on-demand. On native platforms, they are compiled asynchronously, which can create pop-in effects. On the web, they are compiled synchronously in the single-threaded environment, which can cause hitches and can be pretty disastrous if music is playing.
This plugin can help you get your shaders compiled during a loading state where it won't cause as much trouble for your players.
See examples/states.rs
.
# WebGL
cargo build --target wasm32-unknown-unknown --example "states" --features="webgl2"
# WebGPU
cargo build --target wasm32-unknown-unknown --example "states" --features="webgpu"
mkdir -p examples/wasm/target
wget https://github.com/raw/bevyengine/bevy/refs/tags/v0.15.0/examples/wasm/index.html -O examples/wasm/index.html
wasm-bindgen --out-dir examples/wasm/target --out-name wasm_example --target web target/wasm32-unknown-unknown/debug/examples/states.wasm
basic-http-server examples/wasm/
bevy_pipelines_ready |
bevy |
---|---|
0.6 |
0.16 |
0.5 |
0.15 |
0.4 |
0.14 |
0.3 |
0.13 |
0.2 |
0.12 |
0.1 |
0.11 |
Please feel free to open a PR.