Changeset 9dd2eb7 in opengl-game for color.frag


Ignore:
Timestamp:
Apr 28, 2018, 2:29:20 AM (7 years ago)
Author:
Dmitry Portnoy <dmp1488@…>
Branches:
feature/imgui-sdl, master, points-test
Children:
9f4986b
Parents:
d9f99b2
Message:

Implement Phong shading in the color and texture shaders

File:
1 edited

Legend:

Unmodified
Added
Removed
  • color.frag

    rd9f99b2 r9dd2eb7  
    11#version 410
    22
    3 in vec3 color;
     3in vec3 position_eye, normal_eye, color, light_position_eye;
    44
    55out vec4 frag_color;
    66
     7// fixed point light properties
     8vec3 Ls = vec3(1.0, 1.0, 1.0); // white specular colour
     9vec3 Ld = vec3(0.7, 0.7, 0.7); // dull white diffuse light colour
     10vec3 La = vec3(0.2, 0.2, 0.2); // grey ambient colour
     11
     12// surface reflectance
     13vec3 Ks = vec3(1.0, 1.0, 1.0); // fully reflect specular light
     14vec3 Kd = vec3(1.0, 0.5, 0.0); // orange diffuse surface reflectance
     15vec3 Ka = vec3(0.2, 0.2, 0.2); // fully reflect ambient light
     16float specular_exponent = 100.0; // specular 'power'
     17
    718void main() {
    8   frag_color = vec4(color, 1.0);
     19  // ambient intensity
     20  vec3 Ia = La * Ka;
     21
     22  vec3 direction_to_light_eye = normalize(light_position_eye - position_eye);
     23  float dot_prod = max(dot(direction_to_light_eye, normal_eye), 0.0);
     24
     25  // diffuse intensity
     26  vec3 Id = Ls * color * dot_prod;
     27
     28  vec3 reflection_eye = reflect(-direction_to_light_eye, normal_eye);
     29  vec3 surface_to_viewer_eye = normalize(-position_eye);
     30  float dot_prod_specular = max(dot(reflection_eye, surface_to_viewer_eye), 0.0);
     31  float specular_factor = pow(dot_prod_specular, specular_exponent);
     32
     33  // specular intensity
     34  vec3 Is = Ls * Ks * specular_factor;
     35
     36  frag_color = vec4(Is + Id + Ia, 1.0);
    937}
Note: See TracChangeset for help on using the changeset viewer.