From a0bfdab902a4fafc343c0196b45f8084a8e07ac9 Mon Sep 17 00:00:00 2001 From: Asuro Date: Sun, 14 Mar 2021 19:37:57 +0100 Subject: [PATCH] Blinn-Phong --- shaders/triangle.frag | 7 +++---- shaders/triangle.frag.spv | Bin 3508 -> 3580 bytes src/game/mod.rs | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/shaders/triangle.frag b/shaders/triangle.frag index 125097a..eba1bc5 100644 --- a/shaders/triangle.frag +++ b/shaders/triangle.frag @@ -25,8 +25,7 @@ void main() { normal_cam_u = normal_cam_u * 2.0 - 1.0; normal_cam_u = normalize(tbn * normal_cam_u); - // vec3 light_direction_cam_u = normalize(ubo.light_position - position_wld); - vec3 light_direction_cam_u = normalize(vec3(1.0, 1.0, 1.0)); + vec3 light_direction_cam_u = normalize(ubo.light_position - position_wld); float ambient_strength = 0.1; vec3 light_color = vec3(1.0, 1.0, 1.0); @@ -38,8 +37,8 @@ void main() { float specular_value = 1.0; 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(reflect_direction, view_direction), 0.0), 64); + vec3 halfway_direction = normalize(light_direction_cam_u + view_direction); + float specular_strength = pow(max(dot(normal_cam_u, halfway_direction), 0.0), 2); vec3 specular_color = specular_value * specular_strength * light_color; out_color = vec4(ambient_color + diffuse_color + specular_color, 1.0) * texture(diffuse_tex, tex_coords); diff --git a/shaders/triangle.frag.spv b/shaders/triangle.frag.spv index 17b63a4ebe5c6d167cbc2821576cc2da3c096107..e6711a2107bde311027d5b5db9f7db639f0482b0 100644 GIT binary patch literal 3580 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 Okl0@aMg|K8Mg{-?ODEO< diff --git a/src/game/mod.rs b/src/game/mod.rs index 78ef8f5..7af77ec 100644 --- a/src/game/mod.rs +++ b/src/game/mod.rs @@ -1,7 +1,7 @@ use std::time::SystemTime; -use cgmath::{Deg, InnerSpace, Quaternion, Rotation3}; +use cgmath::{Deg, InnerSpace, Quaternion, Rotation3, vec3}; use winit::event::Event; use level::{load_level, save_level}; @@ -73,7 +73,7 @@ impl Game for TestGame { } // Custom game object stuff - let light_pos = self.player.camera.position * -1.0; + let light_pos = vec3(2.0, 0.5, 2.0); if !self.paused { self.player.update(frame_time, &self.input, renderer); }