veloren_voxygen/menu/
dummy_scene.rs

1use crate::render::{
2    GlobalModel, Globals, GlobalsBindGroup, Light, LodData, PointLightMatrix, RainOcclusionLocals,
3    Renderer, Shadow, ShadowLocals,
4};
5
6pub struct Scene {
7    bind_group: GlobalsBindGroup,
8}
9
10impl Scene {
11    pub fn new(renderer: &mut Renderer) -> Self {
12        let global_data = GlobalModel {
13            globals: renderer.create_consts(&[Globals::default()]),
14            lights: renderer.create_consts(&[Light::default(); crate::scene::MAX_LIGHT_COUNT]),
15            shadows: renderer.create_consts(&[Shadow::default(); crate::scene::MAX_SHADOW_COUNT]),
16            shadow_mats: renderer.create_shadow_bound_locals(&[ShadowLocals::default()]),
17            rain_occlusion_mats: renderer
18                .create_rain_occlusion_bound_locals(&[RainOcclusionLocals::default()]),
19            point_light_matrices: Box::new(
20                [PointLightMatrix::default(); crate::scene::MAX_POINT_LIGHT_MATRICES_COUNT],
21            ),
22        };
23
24        let lod_data = LodData::dummy(renderer);
25
26        let bind_group = renderer.bind_globals(&global_data, &lod_data);
27
28        Self { bind_group }
29    }
30
31    pub fn global_bind_group(&self) -> &GlobalsBindGroup { &self.bind_group }
32}