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(Update, TerrainRenderer::extract_dirty);
25
26 app.add_plugins((
28 RenderBindingRegisterPlugin::<TerrainChunkArrayBg>::without_init(),
29 RenderBindingRegisterPlugin::<TerrainComputeArrayBg>::without_init()
30 ));
31
32 app.get_sub_app_mut(RenderApp)
34 .unwrap()
35 .init_resource::<TerrainRendererGPU>()
36 .add_systems(
37 Render,
38 (
39 TerrainRendererGPU::upload_dirty,
40 TerrainRendererGPU::prepare_bind_groups
41 )
42 .chain()
43 .in_set(RenderSet::Prepare)
44 );
45 }
46}