diff --git a/output.png b/output.png index 025eabd..3280332 100644 Binary files a/output.png and b/output.png differ diff --git a/src/shader/shaders.c b/src/shader/shaders.c index d73ae7f..e5eb4bd 100644 --- a/src/shader/shaders.c +++ b/src/shader/shaders.c @@ -21,10 +21,10 @@ ShaderID orthographic_albedo = {0}; internal Shader perspective = {0}; internal Shader orthographic = {0}; -internal V3f g_ambient_light = {0.3f, 0.75f, 0.15f}; +internal V3f g_ambient_light = {0.6f, 0.45f, 0.55f}; internal DirectionalLight g_directional_light = { - .diffuse_intensity = {0.9f, 0.8f, 0.6f}, - .specular_intensity = {0.5f, 0.8f, 2.0f}, + .diffuse_intensity = {0.9f, 1.0f, 1.0f}, + .specular_intensity = {1.0f, 0.8f, 2.0f}, .direction = {0.0f, 0.0f, 1.5f}, }; internal V3f g_eye = {0.2f, 0.1f, 0.75f}; @@ -147,14 +147,15 @@ internal FragmentResult phong_shader_fragment(void *shader, // Specular term V3f _2_l_dot_n_norm = num_mul_v3(norm, 2.0f * l_dot_n); V3f reflected = sub_v3(_2_l_dot_n_norm, light_dir); - f32 r_dot_v = dot_v3(reflected, data->position); + V3f v = sub_v3(g_eye, data->position); + f32 r_dot_v = dot_v3(reflected, v); if (r_dot_v <= 0.0f) { goto RETURN_OUTPUT_COLOUR; } - V3f specular = num_mul_v3( - g_directional_light.specular_intensity, - powf(model->material.specular * r_dot_v, model->material.shininess)); + V3f specular = num_mul_v3(g_directional_light.specular_intensity, + model->material.specular * + powf(r_dot_v, model->material.shininess)); intensity = add_v3(intensity, specular); RETURN_OUTPUT_COLOUR: