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::{TerrainRendererGPU, TerrainTileBgCompute, TerrainTileBgRender}
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)
22 .add_plugins(TerrainPassesPlugin)
23 .add_plugins(TerrainExtractorPlugin);
24
25 app.add_systems(Update, TerrainRenderer::extract_dirty);
28 app.init_asset::<TerrainTileBgRender>()
29 .init_asset::<TerrainTileBgCompute>()
30 .add_plugins((
31 RenderBindingRegisterPlugin::<TerrainTileBgRender>::default(),
32 RenderBindingRegisterPlugin::<TerrainTileBgCompute>::default()
33 ));
34
35 app.get_sub_app_mut(RenderApp)
37 .unwrap()
38 .init_resource::<TerrainRendererGPU>()
39 .add_systems(
40 Render,
41 (TerrainRendererGPU::upload_dirty, TerrainRendererGPU::prepare_bind_groups).chain().in_set(RenderSet::Prepare)
42 );
43 }
44}