From e6a8712de0908167b06d25fbe105a4327a2fe952 Mon Sep 17 00:00:00 2001 From: Piotrek Date: Sat, 15 May 2021 17:16:32 +0200 Subject: [PATCH] preloading stats --- src/game/mod.rs | 24 ++++++++++++------------ src/renderer/buffers/content.rs | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/game/mod.rs b/src/game/mod.rs index ee328e3..5c5a5fa 100644 --- a/src/game/mod.rs +++ b/src/game/mod.rs @@ -1,13 +1,14 @@ mod camera_controller; mod player; pub mod world; +use std::time::Instant; use crate::renderer::renderer_view::RendererView; use cgmath::Vector3; use winit::event::Event; use player::Player; use world::World; -const RENDER_DIST: i32 = 1; +const RENDER_DIST: i32 = 3; pub enum GameState { Paused, @@ -35,6 +36,8 @@ impl Game { }; // Preload chunks around player + let timer = Instant::now(); + let mut count = 0; for x in -RENDER_DIST..RENDER_DIST+1 { for z in -RENDER_DIST..RENDER_DIST+1 { let pos = Vector3{x, y: 0, z}; @@ -42,9 +45,11 @@ impl Game { let chunk = instance.world.get_chunk(&pos).unwrap(); chunk.write_to(renderer, pos * world::chunk::SIZE as i32); println!("Writing chunk to {:?}", pos * world::chunk::SIZE as i32); + count += 1; } } } + println!("Preloaded {} chunks in {} ms (about {} voxels)", count, timer.elapsed().as_millis(), count * world::block::SIZE_QB); // Return generated instance instance @@ -94,18 +99,13 @@ impl Game { let mask = Vector3{x: dir.x.abs(), y: dir.y.abs(), z: dir.z.abs()}; println!("Load at {:?}", center); - let pos = center; //+ Vector3{x: mask.z*a, y: 0, z: mask.x*a}; - self.world.load_chunk(pos); - let chunk = self.world.get_chunk(&pos).unwrap(); - chunk.write_to(renderer, pos * world::chunk::SIZE as i32); + for a in -RENDER_DIST..RENDER_DIST+1 { + let pos = center + Vector3{x: mask.z*a, y: 0, z: mask.x*a}; - // for a in -RENDER_DIST..RENDER_DIST+1 { - // let pos = center; //+ Vector3{x: mask.z*a, y: 0, z: mask.x*a}; - - // self.world.load_chunk(pos); - // let chunk = self.world.get_chunk(&pos).unwrap(); - // chunk.write_to(renderer, pos * world::chunk::SIZE as i32); - // } + self.world.load_chunk(pos); + let chunk = self.world.get_chunk(&pos).unwrap(); + chunk.write_to(renderer, pos * world::chunk::SIZE as i32); + } } self.prev_chunk_pos = Some(chunk_pos); diff --git a/src/renderer/buffers/content.rs b/src/renderer/buffers/content.rs index ff2613f..8904696 100644 --- a/src/renderer/buffers/content.rs +++ b/src/renderer/buffers/content.rs @@ -8,7 +8,7 @@ use crate::game::world::block::WorldBlock; //note: remember to update in main.frag pub const BLOCK_SIZE : usize = 32; // 32x32x32 block size pub const BLOCK_TEX_SIZE : usize = 40; // number of blocks in texture (32^3 = 1GB, 40^3 = 2GB) -pub const NODE_TEX_SIZE: usize = 64; // 32x32x32 nodes in texture +pub const NODE_TEX_SIZE: usize = 128; // 32x32x32 nodes in texture const BLOCK_SIZE_QB: usize = BLOCK_SIZE*BLOCK_SIZE*BLOCK_SIZE; const BLOCK_TEX_SIZE_SQ: usize = BLOCK_TEX_SIZE*BLOCK_TEX_SIZE;