maplibre/raster/
resource_system.rs1use crate::{
3 context::MapContext,
4 raster::resource::RasterResources,
5 render::{
6 eventually::Eventually,
7 resource::{RenderPipeline, TilePipeline},
8 settings::Msaa,
9 shaders,
10 shaders::Shader,
11 RenderResources, Renderer,
12 },
13};
14
15pub fn resource_system(
16 MapContext {
17 world,
18 renderer:
19 Renderer {
20 device,
21 resources: RenderResources { surface, .. },
22 settings,
23 ..
24 },
25 ..
26 }: &mut MapContext,
27) {
28 let Some(raster_resources) = world
29 .resources
30 .query_mut::<&mut Eventually<RasterResources>>() else { return; };
31
32 raster_resources.initialize(|| {
33 let shader = shaders::RasterTileShader {
34 format: surface.surface_format(),
35 };
36
37 RasterResources::new(
38 Msaa { samples: 1 },
39 device,
40 TilePipeline::new(
41 "raster_pipeline".into(),
42 *settings,
43 shader.describe_vertex(),
44 shader.describe_fragment(),
45 true,
46 false,
47 false,
48 false,
49 true,
50 true,
51 )
52 .describe_render_pipeline()
53 .initialize(device),
54 )
55 });
56}