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;
|
||||
|
||||
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);
|
||||
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;
|
||||
|
||||
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) {
|
||||
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 plane_meshes = self.load_gltf(renderer, "models/plane.glb");
|
||||
|
||||
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);
|
||||
@@ -119,6 +120,9 @@ impl TestGame {
|
||||
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);
|
||||
|
||||
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));
|
||||
println!("Game loaded!");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user