Changeset e1308e8 in opengl-game for shaders/ship.frag


Ignore:
Timestamp:
Nov 27, 2019, 6:39:18 PM (5 years ago)
Author:
Dmitry Portnoy <dmp1488@…>
Branches:
feature/imgui-sdl, master, points-test
Children:
055750a
Parents:
06d959f
Message:

In VulkanGame, add normals to the ship pipeline and get lighting to work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • shaders/ship.frag

    r06d959f re1308e8  
    22#extension GL_ARB_separate_shader_objects : enable
    33
    4 //in vec3 position_eye, normal_eye, color, light_position_eye, light2_position_eye;
    54layout(location = 0) in vec3 position_eye;
    65layout(location = 1) in vec3 color;
    7 layout(location = 2) in vec3 light_position_eye;
    8 layout(location = 3) in vec3 light2_position_eye;
     6layout(location = 2) in vec3 normal_eye;
     7layout(location = 3) in vec3 light_position_eye;
    98
    109layout(location = 0) out vec4 outColor;
     
    1211// fixed point light properties
    1312vec3 Ls = vec3(1.0, 1.0, 1.0);
    14 vec3 Ld = vec3(1.0, 1.0, 1.0);
     13vec3 Ld = vec3(0.7, 0.7, 0.7);
    1514vec3 La = vec3(0.2, 0.2, 0.2);
    1615
    17 // surface reflectance
     16// reflectance of the object surface
    1817vec3 Ks = vec3(1.0, 1.0, 1.0);
    19 vec3 Kd = vec3(1.0, 1.5, 1.0);
     18vec3 Kd = vec3(1.0, 0.5, 0.0);
    2019vec3 Ka = vec3(0.2, 0.2, 0.2);
    2120float specular_exponent = 100.0; // specular 'power'
     
    2928
    3029   vec3 direction_to_light_eye = normalize(light_position_eye - position_eye);
    31    //float dot_prod = max(dot(direction_to_light_eye, normal_eye), 0.0);
     30   float dot_prod = max(dot(direction_to_light_eye, normal_eye), 0.0);
    3231
    3332   // diffuse intensity
    34    //vec3 Id = Ld * color * dot_prod;
     33   vec3 Id = Ld * color * dot_prod;
     34   //vec3 Id = Ld * Kd * dot_prod;
    3535
    36    vec3 direction_to_light2_eye = normalize(light2_position_eye - position_eye);
    37    //float dot_prod2 = max(dot(direction_to_light2_eye, normal_eye), 0.0);
     36   vec3 surface_to_viewer_eye = normalize(-position_eye);
    3837
    39    // diffuse intensity
    40    //vec3 Id2 = Ld * color * dot_prod2;
    41 
    42    //vec3 surface_to_viewer_eye = normalize(-position_eye);
    43 
    44    //vec3 reflection_eye = reflect(-direction_to_light_eye, normal_eye);
    45    //float dot_prod_specular = max(dot(reflection_eye, surface_to_viewer_eye), 0.0);
    46    //float specular_factor = pow(dot_prod_specular, specular_exponent);
    47 
    48    //vec3 reflection_eye2 = reflect(-direction_to_light2_eye, normal_eye);
    49    //float dot_prod_specular2 = max(dot(reflection_eye2, surface_to_viewer_eye), 0.0);
    50    //float specular_factor2 = pow(dot_prod_specular2, specular_exponent);
     38   vec3 reflection_eye = reflect(-direction_to_light_eye, normal_eye);
     39   float dot_prod_specular = max(dot(reflection_eye, surface_to_viewer_eye), 0.0);
     40   float specular_factor = pow(dot_prod_specular, specular_exponent);
    5141
    5242   // specular intensity
    53    //vec3 Is = Ls * Ks * specular_factor;
    54    //vec3 Is2 = Ls * Ks * specular_factor2;
     43   vec3 Is = Ls * Ks * specular_factor;
    5544
    56    //outColor = vec4((Is + Id + Ia + Is2 + Id2 + Ia2)/2, 1.0);
    57    outColor = vec4(color, 1.0);
     45   outColor = vec4(Is + Id + Ia, 1.0);
    5846}
Note: See TracChangeset for help on using the changeset viewer.