Specular fix
This commit is contained in:
BIN
models/plane.blend
Normal file
BIN
models/plane.blend
Normal file
Binary file not shown.
BIN
models/plane.glb
Normal file
BIN
models/plane.glb
Normal file
Binary file not shown.
@@ -29,9 +29,10 @@ void main() {
|
|||||||
vec3 diffuse_color = diffuse_strength * light_color;
|
vec3 diffuse_color = diffuse_strength * light_color;
|
||||||
|
|
||||||
float specular_value = 1.0;
|
float specular_value = 1.0;
|
||||||
vec3 view_direction = normalize(ubo.camera_position - position_wld);
|
|
||||||
|
vec3 view_direction = normalize(vec3(inverse(ubo.view) * vec4(0.0, 0.0, 0.0, 1.0)) - position_wld);
|
||||||
vec3 reflect_direction = reflect(-light_direction_cam_u, normal_cam_u);
|
vec3 reflect_direction = reflect(-light_direction_cam_u, normal_cam_u);
|
||||||
float specular_strength = pow(max(dot(view_direction, reflect_direction), 0.0), 64);
|
float specular_strength = pow(max(dot(reflect_direction, view_direction), 0.0), 64);
|
||||||
vec3 specular_color = specular_value * specular_strength * light_color;
|
vec3 specular_color = specular_value * specular_strength * light_color;
|
||||||
|
|
||||||
out_color = vec4(ambient_color + diffuse_color + specular_color, 1.0) * texture(tex, tex_coords);
|
out_color = vec4(ambient_color + diffuse_color + specular_color, 1.0) * texture(tex, tex_coords);
|
||||||
|
|||||||
@@ -106,8 +106,9 @@ impl TestGame {
|
|||||||
fn game_start(self: &mut Self, renderer: &mut VulkanRenderer) {
|
fn game_start(self: &mut Self, renderer: &mut VulkanRenderer) {
|
||||||
let mut test_comp = TestComponent { game_objects: vec![] };
|
let mut test_comp = TestComponent { game_objects: vec![] };
|
||||||
|
|
||||||
let cube_meshes = self.load_gltf(renderer, "models/box.gltf.glb");
|
let cube_meshes = self.load_gltf(renderer, "models/box.glb");
|
||||||
let sphere_meshes = self.load_gltf(renderer, "models/sphere.glb");
|
let sphere_meshes = self.load_gltf(renderer, "models/sphere.glb");
|
||||||
|
let plane_meshes = self.load_gltf(renderer, "models/plane.glb");
|
||||||
|
|
||||||
let cube = self.add_game_object(renderer, *cube_meshes.first().unwrap(), 0);
|
let cube = self.add_game_object(renderer, *cube_meshes.first().unwrap(), 0);
|
||||||
cube.get_game_object(renderer).unwrap().position = vec3(3.0, 4.0, 5.0);
|
cube.get_game_object(renderer).unwrap().position = vec3(3.0, 4.0, 5.0);
|
||||||
@@ -119,6 +120,9 @@ impl TestGame {
|
|||||||
let light_sphere = self.add_game_object(renderer, *sphere_meshes.first().unwrap(), 0);
|
let light_sphere = self.add_game_object(renderer, *sphere_meshes.first().unwrap(), 0);
|
||||||
light_sphere.get_game_object(renderer).unwrap().scale = vec3(0.1, 0.1, 0.1);
|
light_sphere.get_game_object(renderer).unwrap().scale = vec3(0.1, 0.1, 0.1);
|
||||||
|
|
||||||
|
let plane = self.add_game_object(renderer, *plane_meshes.first().unwrap(), 0);
|
||||||
|
plane.get_game_object(renderer).unwrap().position = vec3(0.0, -1.0, 0.0);
|
||||||
|
|
||||||
self.components.push(Box::new(test_comp));
|
self.components.push(Box::new(test_comp));
|
||||||
println!("Game loaded!");
|
println!("Game loaded!");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user