Fix Phong specular term
This commit is contained in:
parent
aa9c443997
commit
798100f138
BIN
output.png
BIN
output.png
Binary file not shown.
Before Width: | Height: | Size: 611 KiB After Width: | Height: | Size: 608 KiB |
@ -21,10 +21,10 @@ ShaderID orthographic_albedo = {0};
|
|||||||
internal Shader perspective = {0};
|
internal Shader perspective = {0};
|
||||||
internal Shader orthographic = {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 = {
|
internal DirectionalLight g_directional_light = {
|
||||||
.diffuse_intensity = {0.9f, 0.8f, 0.6f},
|
.diffuse_intensity = {0.9f, 1.0f, 1.0f},
|
||||||
.specular_intensity = {0.5f, 0.8f, 2.0f},
|
.specular_intensity = {1.0f, 0.8f, 2.0f},
|
||||||
.direction = {0.0f, 0.0f, 1.5f},
|
.direction = {0.0f, 0.0f, 1.5f},
|
||||||
};
|
};
|
||||||
internal V3f g_eye = {0.2f, 0.1f, 0.75f};
|
internal V3f g_eye = {0.2f, 0.1f, 0.75f};
|
||||||
@ -147,14 +147,15 @@ internal FragmentResult phong_shader_fragment(void *shader,
|
|||||||
// Specular term
|
// Specular term
|
||||||
V3f _2_l_dot_n_norm = num_mul_v3(norm, 2.0f * l_dot_n);
|
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);
|
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) {
|
if (r_dot_v <= 0.0f) {
|
||||||
goto RETURN_OUTPUT_COLOUR;
|
goto RETURN_OUTPUT_COLOUR;
|
||||||
}
|
}
|
||||||
|
|
||||||
V3f specular = num_mul_v3(
|
V3f specular = num_mul_v3(g_directional_light.specular_intensity,
|
||||||
g_directional_light.specular_intensity,
|
model->material.specular *
|
||||||
powf(model->material.specular * r_dot_v, model->material.shininess));
|
powf(r_dot_v, model->material.shininess));
|
||||||
intensity = add_v3(intensity, specular);
|
intensity = add_v3(intensity, specular);
|
||||||
|
|
||||||
RETURN_OUTPUT_COLOUR:
|
RETURN_OUTPUT_COLOUR:
|
||||||
|
Loading…
Reference in New Issue
Block a user