From 4acf8ea81617ad4b6f4779bd9c6d58c89afe4e14 Mon Sep 17 00:00:00 2001 From: Piotrek Date: Tue, 11 May 2021 14:46:11 +0200 Subject: [PATCH] preparing or auto loading chunks around player --- src/game/mod.rs | 74 ++++++++++++++---------- src/main.rs | 4 +- src/renderer/camera.rs | 4 ++ src/renderer/content_view.rs | 6 ++ src/shaders/raytrace/.bin/main.frag.spv | Bin 14388 -> 13892 bytes src/shaders/raytrace/main.frag | 8 +-- 6 files changed, 60 insertions(+), 36 deletions(-) diff --git a/src/game/mod.rs b/src/game/mod.rs index f652b7c..ba2fc8b 100644 --- a/src/game/mod.rs +++ b/src/game/mod.rs @@ -18,47 +18,65 @@ pub enum GameState { pub struct Game { state: GameState, player: Player, - world: World + world: World, + + prev_pos: Point3 } impl Game { - pub fn new(content: &mut dyn ContentView) -> Self { + pub fn new() -> Self { let mut app = Self { state: GameState::Paused, player: Player::new(), - world: World::new("default".to_string()) + world: World::new("default".to_string()), + prev_pos: Point3{ x:0, y:0, z:0 } }; - // Try to load world from file - let timer = Instant::now(); - if app.world.load() { - for (pos, block) in app.world.all_blocks() { - content.write(&pos, block); - } - println!("Loaded in {}", timer.elapsed().as_secs_f32()); - } - // Generate new world - else { - let timer = Instant::now(); - for x in 0..32 { - for z in 0..32 { - let pos = &Point3{x,y:0,z}; - let block = app.world.gen_block(pos); - content.write(pos, block); - } - } - println!("Generated in {}", timer.elapsed().as_secs_f32()); + // // Try to load world from file + // let timer = Instant::now(); + // if app.world.load() { + // for (pos, block) in app.world.all_blocks() { + // content.write(&pos, block); + // } + // println!("Loaded in {}", timer.elapsed().as_secs_f32()); + // } + // // Generate new world + // else { + // let timer = Instant::now(); + // for x in 0..32 { + // for z in 0..32 { + // let pos = &Point3{x,y:0,z}; + // let block = app.world.gen_block(pos); + // content.write(pos, block); + // } + // } + // println!("Generated in {}", timer.elapsed().as_secs_f32()); - let timer = Instant::now(); - app.world.save(); - println!("Saved in {}", timer.elapsed().as_secs_f32()); - } + // let timer = Instant::now(); + // app.world.save(); + // println!("Saved in {}", timer.elapsed().as_secs_f32()); + // } println!("App initialized"); app } + pub fn update(&mut self, delta: f32, content: &mut impl ContentView) { + // Update camera controller + let camera = content.get_camera_transform(); + self.player.camera_controller.update(delta, camera); + + // Update chunks + let pos = camera.get_position(); + let pos = Point3{x: pos.x as i32, y: pos.y as i32, z: pos.z as i32}; + if pos != self.prev_pos { + self.prev_pos = pos; + + // Load sphere of chunks around player + } + } + pub fn input(&mut self, event: &Event<()>) { // Update camera controller self.player.camera_controller.handle_input(event); @@ -82,8 +100,4 @@ impl Game { pub fn get_state(&self) -> &GameState { &self.state } - - pub fn update_camera(&mut self, delta: f32, camera_transform: &mut dyn CameraTransform) { - self.player.camera_controller.update(delta, camera_transform); - } } \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 77e3240..fe2ed42 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,7 +24,7 @@ fn main() { .expect("Failed to create window"); let mut renderer = Renderer::new(&window); - let mut game = Game::new(&mut renderer); + let mut game = Game::new(); // Stats let mut fps_timer = std::time::Instant::now(); @@ -73,7 +73,7 @@ fn main() { Event::MainEventsCleared => { // Update let delta = delta_timer.elapsed().as_secs_f32(); - game.update_camera(delta, &mut renderer.camera); + game.update(delta, &mut renderer); delta_timer = std::time::Instant::now(); // Redraw if running diff --git a/src/renderer/camera.rs b/src/renderer/camera.rs index 2e4d735..62049cf 100644 --- a/src/renderer/camera.rs +++ b/src/renderer/camera.rs @@ -31,6 +31,7 @@ impl Camera { pub trait CameraTransform { fn update(&mut self, position: Point3, forward: Vector3, up: Vector3); + fn get_position(&self) -> Point3; } impl CameraTransform for Camera { @@ -38,4 +39,7 @@ impl CameraTransform for Camera { self.position = position; self.view_matrix = Matrix4::look_to_rh((0.0,0.0,0.0).into(), forward, up); } + fn get_position(&self) -> Point3 { + self.position + } } \ No newline at end of file diff --git a/src/renderer/content_view.rs b/src/renderer/content_view.rs index 81b70fe..a39224e 100644 --- a/src/renderer/content_view.rs +++ b/src/renderer/content_view.rs @@ -1,9 +1,11 @@ +use crate::renderer::camera::CameraTransform; use crate::Renderer; use crate::game::world::block::WorldBlock; use cgmath::Point3; pub trait ContentView { fn write(&mut self, block_pos: &Point3, block: &WorldBlock); + fn get_camera_transform(&mut self) -> &mut CameraTransform; } impl ContentView for Renderer { @@ -11,4 +13,8 @@ impl ContentView for Renderer { fn write(&mut self, block_pos: &Point3, block: &WorldBlock) { self.buffers.content.write(&self.queue, block_pos, block) } + + fn get_camera_transform(&mut self) -> &mut CameraTransform { + &mut self.camera + } } \ No newline at end of file diff --git a/src/shaders/raytrace/.bin/main.frag.spv b/src/shaders/raytrace/.bin/main.frag.spv index e2e034e25ef6e4d4103e9eed8ad283a475f0304b..f5a2436dfb06f21aaa57e01653efbcefa3ca3705 100644 GIT binary patch literal 13892 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 NH+$;lD)+y){2xmMYvTX_ literal 14388 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 K%~kGy_xe9EQIJjm diff --git a/src/shaders/raytrace/main.frag b/src/shaders/raytrace/main.frag index ac3b2e0..0100cd6 100644 --- a/src/shaders/raytrace/main.frag +++ b/src/shaders/raytrace/main.frag @@ -60,14 +60,14 @@ vec3 solve() //col += 0.25 * vec3(0.8,0.4,0.2) * pow(sun, 4.0 ); // Gamma - col = pow(clamp(col*1.1-0.02,0.0,1.0), vec3(0.4545)); + //col = pow(clamp(col*1.1-0.02,0.0,1.0), vec3(0.4545)); // Contrast - col = col*col*(3.0-2.0*col); + //col = col*col*(3.0-2.0*col); // Color grade - col = pow( col, vec3(1.0,0.92,1.0) ); // soft green - col *= vec3(1.02,0.99,0.99); // tint red + //col = pow( col, vec3(1.0,0.92,1.0) ); // soft green + //col *= vec3(1.02,0.99,0.99); // tint red //col.z = (col.z+0.1)/1.1; // bias blue // Fog