wde_terrain/render/
mod.rs1use bevy::prelude::*;
2use wde_renderer::prelude::*;
3
4use crate::render::{
5 dependencies::BuffersPlugin,
6 extractor::TerrainExtractorPlugin,
7 passes::TerrainPassesPlugin,
8 renderer::TerrainRenderer,
9 renderer_gpu::{TerrainChunkArrayBg, TerrainComputeArrayBg, TerrainRendererGPU}
10};
11
12pub mod dependencies;
13pub mod extractor;
14mod passes;
15pub mod renderer;
16pub mod renderer_gpu;
17
18pub struct TerrainRenderPlugin;
19impl Plugin for TerrainRenderPlugin {
20 fn build(&self, app: &mut App) {
21 app.add_plugins((BuffersPlugin, TerrainPassesPlugin, TerrainExtractorPlugin));
22
23 app.add_systems(
25 Update,
26 (
27 TerrainRenderer::extract_dirty,
28 TerrainRenderer::update_draw_list
29 )
30 .chain()
31 );
32
33 app.add_plugins((
35 RenderBindingRegisterPlugin::<TerrainChunkArrayBg>::without_init(),
36 RenderBindingRegisterPlugin::<TerrainComputeArrayBg>::without_init()
37 ));
38
39 app.get_sub_app_mut(RenderApp)
41 .unwrap()
42 .init_resource::<TerrainRendererGPU>()
43 .add_systems(
44 Render,
45 (
46 TerrainRendererGPU::upload_dirty,
47 TerrainRendererGPU::prepare_bind_groups
48 )
49 .chain()
50 .in_set(RenderSet::Prepare)
51 );
52 }
53}