maplibre/debug/
resource_system.rs1use crate::{
3 context::MapContext,
4 debug::DebugPipeline,
5 render::{
6 eventually::Eventually,
7 resource::{RenderPipeline, TilePipeline},
8 shaders,
9 shaders::Shader,
10 RenderResources, Renderer,
11 },
12 tcs::system::{SystemError, SystemResult},
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) -> SystemResult {
28 let Some(debug_pipeline) = world
29 .resources
30 .query_mut::<&mut Eventually<DebugPipeline>>()
31 else {
32 return Err(SystemError::Dependencies);
33 };
34
35 debug_pipeline.initialize(|| {
36 let mask_shader = shaders::TileMaskShader {
37 format: surface.surface_format(),
38 draw_colors: true,
39 debug_lines: true,
40 };
41
42 let pipeline = TilePipeline::new(
43 "debug_pipeline".into(),
44 *settings,
45 mask_shader.describe_vertex(),
46 mask_shader.describe_fragment(),
47 false,
48 false,
49 true,
50 false,
51 false,
52 false,
53 false,
54 )
55 .describe_render_pipeline()
56 .initialize(device);
57 DebugPipeline(pipeline)
58 });
59
60 Ok(())
61}