Skip to content

Commit c472648

Browse files
committed
Use SystemParam for args to as_bind_group
See: bevyengine/bevy#14909
1 parent bf5fe00 commit c472648

File tree

1 file changed

+14
-25
lines changed

1 file changed

+14
-25
lines changed

src/render/material.rs

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use 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

382376
fn 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

Comments
 (0)