PHONG minus report
This commit is contained in:
@@ -2,11 +2,34 @@
|
||||
|
||||
in vec4 fragment_colors;
|
||||
in vec3 normal_vec;
|
||||
in vec3 viewing_vec;
|
||||
out vec4 color;
|
||||
|
||||
void main()
|
||||
{
|
||||
float lightVec = normal_vec.x * -0.8 + normal_vec.y * 0.5 + normal_vec.z * -0.6;
|
||||
vec3 albedo = vec3(fragment_colors) * max(0, lightVec);
|
||||
// Constants
|
||||
vec3 i_ambient = vec3(0.4);
|
||||
vec3 i_diffuse = vec3(0.6);
|
||||
vec3 i_spec = vec3(0.8);
|
||||
|
||||
float k_ambient = 0.5;
|
||||
float k_diffuse = 0.9;
|
||||
float k_spec = 0.6;
|
||||
float alpha = 8;
|
||||
|
||||
// Light vector
|
||||
vec3 L = normalize(vec3(-0.8, 0.5, -0.6));
|
||||
|
||||
// Reflected light vector
|
||||
vec3 R = 2 * dot(normalize(normal_vec), L) * normalize(normal_vec) - L;
|
||||
|
||||
// Component vectors
|
||||
vec3 ambient = k_ambient * i_ambient;
|
||||
vec3 diff = k_diffuse * max(dot(normalize(normal_vec), L), 0.0) * i_diffuse;
|
||||
vec3 spec = k_spec * pow(max(dot(R, normalize(viewing_vec)), 0.0), alpha) * i_spec;
|
||||
|
||||
// Final color vector
|
||||
vec3 intensity = ambient + diff + spec;
|
||||
vec3 albedo = fragment_colors.rgb * intensity;
|
||||
color = vec4(albedo, 1);
|
||||
}
|
||||
@@ -7,11 +7,12 @@ uniform mat4 mvp_transform;
|
||||
uniform mat4 model_transform;
|
||||
out vec4 fragment_colors;
|
||||
out vec3 normal_vec;
|
||||
|
||||
out vec3 viewing_vec;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = mvp_transform * vec4(position, 1.0f);
|
||||
fragment_colors = vertex_colors;
|
||||
normal_vec = normalize(mat3(model_transform) * normal);
|
||||
viewing_vec = vec3(-gl_Position);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user