hotload shader + directional light

This commit is contained in:
2021-02-25 21:36:29 +01:00
parent 26871da22b
commit 8735f2d409
8 changed files with 55 additions and 25 deletions

View File

@@ -1,10 +1,11 @@
use cgmath::{Deg, InnerSpace, Quaternion, Rotation3};
use winit::event::Event;
use level::{load_level, save_level};
use player::Player;
use crate::config::{LogConfig};
use crate::config::LogConfig;
use crate::input::InputState;
use crate::vulkan::{Game, MeshHandle, VulkanRenderer};
use crate::vulkan::gameobject::{GameObject, GameObjectHandle, Updatable};
@@ -22,6 +23,7 @@ pub struct TestGame {
pub texture_index_counter: usize,
pub last_time: f32,
pub components: Vec<Box<dyn Updatable>>,
pub paused: bool,
}
impl Game for TestGame {
@@ -48,7 +50,7 @@ impl Game for TestGame {
}
if self.input.button_just_pressed("reload_shaders") {
renderer.game_data.recreate_pipeline = true;
renderer.recreate_swapchain = true;
}
if self.input.button_just_pressed("quicksave") {
@@ -65,17 +67,15 @@ impl Game for TestGame {
}
if self.input.button_just_pressed("test") {
if renderer.render_config.msaa_samples > 0 {
renderer.render_config.msaa_samples = 0;
} else {
renderer.render_config.msaa_samples = 8;
}
renderer.recreate_swapchain = true;
self.paused = !self.paused;
}
// Custom game object stuff
let light_pos = self.player.camera.position * -1.0;
self.player.update(frame_time, &self.input, renderer);
if !self.paused {
self.player.update(frame_time, &self.input, renderer);
}
self.game_objects[1].get_game_object_mut(renderer).unwrap().rotation = Quaternion::from_angle_y(Deg(time * -20.)).normalize();
// End frame
self.last_time = time;
@@ -86,9 +86,11 @@ impl Game for TestGame {
projection: self.player.camera.proj.into(),
time,
light_position: light_pos.into(),
light_directional_rotation: [45.0, 45.0, 0.0],
camera_position: self.player.camera.position.into(),
_dummy0: [0; 12],
_dummy1: [0; 4],
_dummy2: [0; 4],
}
}
}
@@ -103,6 +105,7 @@ impl TestGame {
texture_index_counter: 0,
last_time: 0.0,
components: vec![],
paused: false,
}
}