summaryrefslogtreecommitdiff
path: root/client/src/scene_prepare.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-01-12 01:12:34 +0100
committermetamuffin <metamuffin@disroot.org>2025-01-12 01:12:34 +0100
commita3e3b724d4fe97f251e830197527f3a106b0a890 (patch)
tree697e639b901721141a1b150361d63dadd1672f74 /client/src/scene_prepare.rs
parent4cba9ed9b8fb4d3f349ee6b1a17068ed21709008 (diff)
downloadweareserver-a3e3b724d4fe97f251e830197527f3a106b0a890.tar
weareserver-a3e3b724d4fe97f251e830197527f3a106b0a890.tar.bz2
weareserver-a3e3b724d4fe97f251e830197527f3a106b0a890.tar.zst
enable persistant cache + print timing info
Diffstat (limited to 'client/src/scene_prepare.rs')
-rw-r--r--client/src/scene_prepare.rs26
1 files changed, 20 insertions, 6 deletions
diff --git a/client/src/scene_prepare.rs b/client/src/scene_prepare.rs
index 0fb38cc..8b2453a 100644
--- a/client/src/scene_prepare.rs
+++ b/client/src/scene_prepare.rs
@@ -17,13 +17,14 @@
use crate::download::Downloader;
use anyhow::Result;
use image::ImageReader;
-use log::debug;
+use log::{debug, info};
use std::{
collections::{HashMap, HashSet},
hash::Hash,
io::Cursor,
marker::PhantomData,
sync::{Arc, RwLock},
+ time::Instant,
};
use weareshared::{
Affine3A,
@@ -129,6 +130,7 @@ impl ScenePreparer {
}
}
for pres in self.index_buffers.needed() {
+ let start = Instant::now();
if let Some(buf) = dls.try_get(pres.clone())? {
let buf = buf
.into_iter()
@@ -145,12 +147,14 @@ impl ScenePreparer {
(Arc::new(buffer), (buf.len() / size_of::<u32>()) as u32),
);
debug!(
- "index buffer created (len={}) {pres}",
- buf.len() / size_of::<u32>()
+ "index buffer created (len={}, took {:?}) {pres}",
+ buf.len() / size_of::<u32>(),
+ start.elapsed(),
);
}
}
for pres in self.vertex_buffers.needed() {
+ let start = Instant::now();
if let Some(buf) = dls.try_get(pres.clone())? {
let buf = buf
.into_iter()
@@ -166,15 +170,18 @@ impl ScenePreparer {
(Arc::new(buffer), (buf.len() / size_of::<f32>()) as u32),
);
debug!(
- "vertex attribute buffer created (len={}) {pres}",
- buf.len() / size_of::<f32>()
+ "vertex attribute buffer created (len={}, took {:?}) {pres}",
+ buf.len() / size_of::<f32>(),
+ start.elapsed()
);
}
}
for pres in self.textures.needed() {
+ let start = Instant::now();
if let Some(buf) = dls.try_get(pres.clone())? {
let image = ImageReader::new(Cursor::new(buf.0)).with_guessed_format()?;
let image = image.decode()?;
+ let dims = (image.width(), image.height());
let image = image.to_rgba8();
let image_raw = image.to_vec();
let tex_bg = create_texture(
@@ -186,6 +193,12 @@ impl ScenePreparer {
image.height(),
);
self.textures.insert(pres.clone(), tex_bg);
+ info!(
+ "texture created (res={}x{}, took {:?})",
+ dims.0,
+ dims.1,
+ start.elapsed()
+ )
}
}
for pres in self.placeholder_textures.needed() {
@@ -200,6 +213,7 @@ impl ScenePreparer {
self.placeholder_textures.insert(pres, tex_bg);
}
for pres in self.mesh_parts.needed() {
+ let start = Instant::now();
if let Some(part) = dls.try_get(pres.clone())? {
if let (Some(indexres), Some(positionres)) = (part.index, part.va_position) {
let index = self.index_buffers.try_get(indexres);
@@ -258,7 +272,7 @@ impl ScenePreparer {
Some(tex_albedo),
) = (normal, index, texcoord, position, tex_normal, tex_albedo)
{
- debug!("part created ({pres})");
+ debug!("part created (took {:?}) {pres}", start.elapsed());
self.mesh_parts.insert(
pres,
Arc::new(RMeshPart {