Fix Phong specular term

This commit is contained in:
Abdelrahman Said 2024-08-24 00:39:40 +01:00
parent aa9c443997
commit 798100f138
2 changed files with 8 additions and 7 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 611 KiB

After

Width:  |  Height:  |  Size: 608 KiB

View File

@ -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: