11use bevy:: {
22 core_pipeline:: core_2d:: Transparent2d ,
3+ ecs:: system:: SystemParamItem ,
34 math:: FloatOrd ,
45 prelude:: * ,
56 reflect:: TypePath ,
@@ -16,7 +17,7 @@ use bevy::{
1617 ShaderRef , SpecializedRenderPipeline , SpecializedRenderPipelines ,
1718 } ,
1819 renderer:: RenderDevice ,
19- texture:: { FallbackImage , GpuImage } ,
20+ texture:: GpuImage ,
2021 view:: { ExtractedView , ViewUniforms , VisibleEntities } ,
2122 Extract , Render , RenderApp , RenderSet ,
2223 } ,
@@ -335,25 +336,21 @@ fn prepare_materials_tilemap<M: MaterialTilemap>(
335336 mut extracted_assets : ResMut < ExtractedMaterialsTilemap < M > > ,
336337 mut render_materials : ResMut < RenderMaterialsTilemap < M > > ,
337338 render_device : Res < RenderDevice > ,
338- images : Res < RenderAssets < GpuImage > > ,
339- fallback_image : Res < FallbackImage > ,
340339 pipeline : Res < MaterialTilemapPipeline < M > > ,
340+ mut param : SystemParamItem < <M as AsBindGroup >:: Param > ,
341341) {
342342 let queued_assets = std:: mem:: take ( & mut prepare_next_frame. assets ) ;
343343 for ( handle, material) in queued_assets {
344- match prepare_material_tilemap (
345- & material,
346- & render_device,
347- & images,
348- & fallback_image,
349- & pipeline,
350- ) {
344+ match prepare_material_tilemap ( & material, & render_device, & pipeline, & mut param) {
351345 Ok ( prepared_asset) => {
352346 render_materials. insert ( handle, prepared_asset) ;
353347 }
354348 Err ( AsBindGroupError :: RetryNextUpdate ) => {
355349 prepare_next_frame. assets . push ( ( handle, material) ) ;
356350 }
351+ Err ( AsBindGroupError :: InvalidSamplerType ( _, _, _) ) => {
352+ prepare_next_frame. assets . push ( ( handle, material) ) ;
353+ }
357354 }
358355 }
359356
@@ -362,36 +359,28 @@ fn prepare_materials_tilemap<M: MaterialTilemap>(
362359 }
363360
364361 for ( handle, material) in std:: mem:: take ( & mut extracted_assets. extracted ) {
365- match prepare_material_tilemap (
366- & material,
367- & render_device,
368- & images,
369- & fallback_image,
370- & pipeline,
371- ) {
362+ match prepare_material_tilemap ( & material, & render_device, & pipeline, & mut param) {
372363 Ok ( prepared_asset) => {
373364 render_materials. insert ( handle, prepared_asset) ;
374365 }
375366 Err ( AsBindGroupError :: RetryNextUpdate ) => {
376367 prepare_next_frame. assets . push ( ( handle, material) ) ;
377368 }
369+ Err ( AsBindGroupError :: InvalidSamplerType ( _, _, _) ) => {
370+ prepare_next_frame. assets . push ( ( handle, material) ) ;
371+ }
378372 }
379373 }
380374}
381375
382376fn prepare_material_tilemap < M : MaterialTilemap > (
383377 material : & M ,
384378 render_device : & RenderDevice ,
385- images : & RenderAssets < GpuImage > ,
386- fallback_image : & FallbackImage ,
387379 pipeline : & MaterialTilemapPipeline < M > ,
380+ param : & mut SystemParamItem < <M as AsBindGroup >:: Param > ,
388381) -> Result < PreparedMaterialTilemap < M > , AsBindGroupError > {
389- let prepared = material. as_bind_group (
390- & pipeline. material_tilemap_layout ,
391- render_device,
392- images,
393- fallback_image,
394- ) ?;
382+ let prepared =
383+ material. as_bind_group ( & pipeline. material_tilemap_layout , render_device, param) ?;
395384 Ok ( PreparedMaterialTilemap {
396385 bindings : prepared. bindings ,
397386 bind_group : prepared. bind_group ,
0 commit comments