diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-10 14:33:57 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-10 14:33:57 +0100 |
commit | dbfb01fa7b5b05686dcbdd9d73643d7866810668 (patch) | |
tree | 9703c8222a459f1d7c7058dcfe7374ca29c98cbf /client/src/renderer.rs | |
parent | 9446cda10e1a1b82e08d94c9c43a3e024e55c655 (diff) | |
download | weareserver-dbfb01fa7b5b05686dcbdd9d73643d7866810668.tar weareserver-dbfb01fa7b5b05686dcbdd9d73643d7866810668.tar.bz2 weareserver-dbfb01fa7b5b05686dcbdd9d73643d7866810668.tar.zst |
fix egui rendering
Diffstat (limited to 'client/src/renderer.rs')
-rw-r--r-- | client/src/renderer.rs | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/client/src/renderer.rs b/client/src/renderer.rs index 66f8c5e..7bd98f0 100644 --- a/client/src/renderer.rs +++ b/client/src/renderer.rs @@ -23,9 +23,10 @@ use pollster::FutureExt; use std::sync::Arc; use weareshared::tree::SceneTree; use wgpu::{ - Backends, CommandEncoderDescriptor, Device, DeviceDescriptor, Features, Instance, + Backends, CommandEncoderDescriptor, Device, DeviceDescriptor, Extent3d, Features, Instance, InstanceDescriptor, Limits, MaintainBase, PowerPreference, Queue, RequestAdapterOptions, - Surface, SurfaceConfiguration, TextureViewDescriptor, + Surface, SurfaceConfiguration, TextureDescriptor, TextureDimension, TextureFormat, + TextureUsages, TextureView, TextureViewDescriptor, }; use winit::window::Window; @@ -38,6 +39,7 @@ pub struct Renderer<'a> { ui_renderer: UiRenderer, pub scene_prepare: ScenePreparer, surface_needs_reconfigure: bool, + depth: TextureView, } impl<'a> Renderer<'a> { pub fn new(window: &'a Window) -> Result<Self> { @@ -87,10 +89,27 @@ impl<'a> Renderer<'a> { let ui_renderer = UiRenderer::new(&device, surface_configuration.format); + let depth = device.create_texture(&TextureDescriptor { + label: None, + size: Extent3d { + height: 256, + width: 256, + depth_or_array_layers: 1, + }, + mip_level_count: 1, + sample_count: 1, + dimension: TextureDimension::D2, + format: TextureFormat::Depth32Float, + usage: TextureUsages::RENDER_ATTACHMENT, + view_formats: &[], + }); + let depth = depth.create_view(&TextureViewDescriptor::default()); + Ok(Self { scene_pipeline, scene_prepare, surface, + depth, device, queue, surface_configuration, @@ -104,7 +123,24 @@ impl<'a> Renderer<'a> { self.surface_configuration.height = height; self.surface .configure(&self.device, &self.surface_configuration); - self.scene_pipeline.resize(&self.device, width, height); + + self.depth = self + .device + .create_texture(&TextureDescriptor { + label: None, + size: Extent3d { + height, + width, + depth_or_array_layers: 1, + }, + mip_level_count: 1, + sample_count: 1, + dimension: TextureDimension::D2, + format: TextureFormat::Depth32Float, + usage: TextureUsages::RENDER_ATTACHMENT, + view_formats: &[], + }) + .create_view(&TextureViewDescriptor::default()); } pub fn draw(&mut self, scene: &SceneTree, camera: &Camera) -> Result<()> { @@ -131,6 +167,7 @@ impl<'a> Renderer<'a> { self.scene_pipeline.draw( &mut commands, &target_view, + &self.depth, scene, &mut self.scene_prepare.prefabs, projection, @@ -141,6 +178,7 @@ impl<'a> Renderer<'a> { &self.queue, &mut commands, &target_view, + &self.depth, projection, ); |