From 1caf7aefcc29602a21fa8a400c897b576be238a8 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 24 Jan 2025 21:24:06 +0100 Subject: move demand map to own file --- client/src/render/scene/mod.rs | 60 +++--------------------------------------- 1 file changed, 3 insertions(+), 57 deletions(-) (limited to 'client/src/render/scene/mod.rs') diff --git a/client/src/render/scene/mod.rs b/client/src/render/scene/mod.rs index e314649..96c8ba4 100644 --- a/client/src/render/scene/mod.rs +++ b/client/src/render/scene/mod.rs @@ -14,6 +14,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ +pub mod demand_map; pub mod draw; pub mod meshops; pub mod pipelines; @@ -23,18 +24,12 @@ pub mod vertex_buffers; use crate::{armature::RArmature, download::Downloader, shaders::SceneShaders}; use anyhow::Result; use bytemuck::{Pod, Zeroable}; +use demand_map::DemandMap; use egui::{Grid, Widget}; use glam::{UVec3, UVec4, Vec2, Vec3, Vec3A, uvec3, uvec4}; -use humansize::DECIMAL; use log::{debug, trace}; use pipelines::SceneBgLayouts; -use std::{ - collections::{HashMap, HashSet}, - hash::Hash, - marker::PhantomData, - sync::{Arc, RwLock}, - time::Instant, -}; +use std::{hash::Hash, marker::PhantomData, sync::Arc, time::Instant}; use textures::MipGenerationPipeline; use weareshared::{ Affine3A, @@ -47,45 +42,6 @@ use wgpu::{ util::{BufferInitDescriptor, DeviceExt}, }; -pub struct DemandMap { - inner: RwLock>, -} -struct DemandMapState { - values: HashMap, - needed: HashSet, - size_metric: usize, -} -impl DemandMap { - pub fn new() -> Self { - Self { - inner: DemandMapState { - needed: HashSet::new(), - values: HashMap::new(), - size_metric: 0, - } - .into(), - } - } - pub fn needed(&self) -> Vec { - self.inner.read().unwrap().needed.iter().cloned().collect() - } - pub fn insert(&self, key: K, value: V, size: usize) { - let mut s = self.inner.write().unwrap(); - s.needed.remove(&key); - s.values.insert(key, value); - s.size_metric += size; - } - pub fn try_get(&self, key: K) -> Option { - let mut s = self.inner.write().unwrap(); - if let Some(k) = s.values.get(&key) { - Some(k.to_owned()) - } else { - s.needed.insert(key); - None - } - } -} - struct GraphicsConfig { max_anisotropy: u16, max_mip_count: u32, @@ -444,16 +400,6 @@ impl ScenePreparer { } } -impl Widget for &DemandMap { - fn ui(self, ui: &mut egui::Ui) -> egui::Response { - let state = self.inner.read().unwrap(); - ui.label(state.needed.len().to_string()); - ui.label(state.values.len().to_string()); - ui.label(humansize::format_size(state.size_metric, DECIMAL)); - ui.end_row(); - ui.response() - } -} impl ScenePreparer { pub fn print_missing(&self) { fn visit(name: &str, m: &DemandMap) -- cgit v1.2.3-70-g09d2