summaryrefslogtreecommitdiff
path: root/client/src/renderer.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-01-10 14:33:57 +0100
committermetamuffin <metamuffin@disroot.org>2025-01-10 14:33:57 +0100
commitdbfb01fa7b5b05686dcbdd9d73643d7866810668 (patch)
tree9703c8222a459f1d7c7058dcfe7374ca29c98cbf /client/src/renderer.rs
parent9446cda10e1a1b82e08d94c9c43a3e024e55c655 (diff)
downloadweareserver-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.rs44
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,
);