mirror of
https://github.com/bevyengine/bevy
synced 2024-11-22 04:33:37 +00:00
Fixed issue where transform buffer wasn't creating new bindings on resize. (#7)
This commit is contained in:
parent
7c57725a63
commit
5d0655f84c
2 changed files with 23 additions and 13 deletions
|
@ -433,12 +433,13 @@ impl Draw for DrawShadowMesh {
|
|||
&[view_uniform_offset.offset],
|
||||
);
|
||||
|
||||
let transform_bindgroup_key = mesh_meta.mesh_transform_bind_group_key.unwrap();
|
||||
pass.set_bind_group(
|
||||
1,
|
||||
mesh_meta
|
||||
.into_inner()
|
||||
.mesh_transform_bind_group
|
||||
.as_ref()
|
||||
.get_value(transform_bindgroup_key)
|
||||
.unwrap(),
|
||||
&[extracted_mesh.transform_binding_offset],
|
||||
);
|
||||
|
|
|
@ -420,7 +420,8 @@ struct MeshDrawInfo {
|
|||
pub struct MeshMeta {
|
||||
transform_uniforms: DynamicUniformVec<Mat4>,
|
||||
material_bind_groups: FrameSlabMap<BufferId, BindGroup>,
|
||||
mesh_transform_bind_group: Option<BindGroup>,
|
||||
mesh_transform_bind_group: FrameSlabMap<BufferId, BindGroup>,
|
||||
mesh_transform_bind_group_key: Option<FrameSlabMapKey<BufferId, BindGroup>>,
|
||||
mesh_draw_info: Vec<MeshDrawInfo>,
|
||||
}
|
||||
|
||||
|
@ -502,16 +503,21 @@ pub fn queue_meshes(
|
|||
}
|
||||
|
||||
let transform_uniforms = &mesh_meta.transform_uniforms;
|
||||
mesh_meta.mesh_transform_bind_group.get_or_insert_with(|| {
|
||||
render_device.create_bind_group(&BindGroupDescriptor {
|
||||
entries: &[BindGroupEntry {
|
||||
binding: 0,
|
||||
resource: transform_uniforms.binding(),
|
||||
}],
|
||||
label: None,
|
||||
layout: &pbr_shaders.mesh_layout,
|
||||
})
|
||||
});
|
||||
mesh_meta.mesh_transform_bind_group.next_frame();
|
||||
mesh_meta.mesh_transform_bind_group_key =
|
||||
Some(mesh_meta.mesh_transform_bind_group.get_or_insert_with(
|
||||
transform_uniforms.uniform_buffer().unwrap().id(),
|
||||
|| {
|
||||
render_device.create_bind_group(&BindGroupDescriptor {
|
||||
entries: &[BindGroupEntry {
|
||||
binding: 0,
|
||||
resource: transform_uniforms.binding(),
|
||||
}],
|
||||
label: None,
|
||||
layout: &pbr_shaders.mesh_layout,
|
||||
})
|
||||
},
|
||||
));
|
||||
for (entity, view, view_lights, mut transparent_phase) in views.iter_mut() {
|
||||
// TODO: cache this?
|
||||
let view_bind_group = render_device.create_bind_group(&BindGroupDescriptor {
|
||||
|
@ -736,7 +742,10 @@ impl Draw for DrawPbr {
|
|||
);
|
||||
pass.set_bind_group(
|
||||
1,
|
||||
mesh_meta.mesh_transform_bind_group.as_ref().unwrap(),
|
||||
mesh_meta
|
||||
.mesh_transform_bind_group
|
||||
.get_value(mesh_meta.mesh_transform_bind_group_key.unwrap())
|
||||
.unwrap(),
|
||||
&[extracted_mesh.transform_binding_offset],
|
||||
);
|
||||
let mesh_draw_info = &mesh_meta.mesh_draw_info[draw_key];
|
||||
|
|
Loading…
Reference in a new issue