Fixed issue where transform buffer wasn't creating new bindings on resize. (#7)
This commit is contained in:
		
							parent
							
								
									7c57725a63
								
							
						
					
					
						commit
						5d0655f84c
					
				| @ -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 New Issue
	
	Block a user
	 John
						John