Closed djeedai closed 2 months ago
I was trying to upgrade bevy terrain to Bevy 0.14 and I am facing the same issue. My pipeline uses a compute shader generated mesh, so my mesh asset ID is set to invalid in the Opaque3D phase item. This causes my items to not be drawn as well.
@kurtkuehnert there's a discussion happening on Discord now (see here and below messages, and can walk your way up from replies too). I think we'll post a recommendation here once the various folks discussing have reached a consensus on the best approach. So far there's I think 4+ crates facing the same issue. It's also considered a 0.14 blocker, so should get traction.
Confirming that Hanabi works again. Thanks for the fix!
Bevy version
main
What you did
Repro branch : https://github.com/djeedai/bevy_hanabi/tree/bevy_main
Run:
The billboard particles are missing. GPU debugger shows there's no draw call.
Discussion on Discord and comments on related migration guide bug.
Hanabi (
bevy_hanabi
) renders some particle effect through theAlphaMask3d
pass via a custom render pipeline based on compute shaders and vertex/fragment shaders. There's no mesh involved (except from a single quad shared by all particles, which could even be removed). After migrating, I noted thatAlphaMask3d
usesBinnedRenderPhase
, unlike all other phases Hanabi uses which go throughSortedRenderPhase
. The design of the 2 is quite different, and it seemsBinnedRenderPhase
is coupled with mesh asset rendering.This makes it impossible to ugprade Hanabi.
What went wrong
Render phase items
AlphaMask3d
are silently discarded, because (I think)GetFullBatchData::get_binned_index()
returnsNone
, since the phase item enqueued doesn't have a mesh.gpu_processing::batch_and_prepare_binned_render_phase()
gets called (I think, because it's all generic code and I can't see the concrete types)