source: opengl-game/gl-shaders/ship.frag

feature/imgui-sdl
Last change on this file was 2ff4d3e, checked in by Dmitry Portnoy <dmitry.portnoy@…>, 4 years ago

Change the light properties in the OpenGLRef ship shader to match those in the VulkanGame one to avoid confusion about the differences in how the ship is rendered in each project

  • Property mode set to 100644
File size: 1.6 KB
Line 
1#version 410
2
3in vec3 position_eye, normal_eye, color, light_position_eye, light2_position_eye;
4
5out vec4 frag_color;
6
7// fixed point light properties
8vec3 Ls = vec3(1.0, 1.0, 1.0);
9vec3 Ld = vec3(0.7, 0.7, 0.7);
10vec3 La = vec3(0.2, 0.2, 0.2);
11
12// surface reflectance
13vec3 Ks = vec3(1.0, 1.0, 1.0);
14vec3 Kd = vec3(1.0, 1.5, 1.0);
15vec3 Ka = vec3(0.2, 0.2, 0.2);
16float specular_exponent = 100.0; // specular 'power'
17
18void main() {
19 // ambient intensity
20 vec3 Ia = La * Ka;
21
22 // ambient intensity
23 vec3 Ia2 = La * Ka;
24
25 vec3 direction_to_light_eye = normalize(light_position_eye - position_eye);
26 float dot_prod = max(dot(direction_to_light_eye, normal_eye), 0.0);
27
28 // diffuse intensity
29 vec3 Id = Ld * color * dot_prod;
30
31 vec3 direction_to_light2_eye = normalize(light2_position_eye - position_eye);
32 float dot_prod2 = max(dot(direction_to_light2_eye, normal_eye), 0.0);
33
34 // diffuse intensity
35 vec3 Id2 = Ld * color * dot_prod2;
36
37 vec3 surface_to_viewer_eye = normalize(-position_eye);
38
39 vec3 reflection_eye = reflect(-direction_to_light_eye, normal_eye);
40 float dot_prod_specular = max(dot(reflection_eye, surface_to_viewer_eye), 0.0);
41 float specular_factor = pow(dot_prod_specular, specular_exponent);
42
43 vec3 reflection_eye2 = reflect(-direction_to_light2_eye, normal_eye);
44 float dot_prod_specular2 = max(dot(reflection_eye2, surface_to_viewer_eye), 0.0);
45 float specular_factor2 = pow(dot_prod_specular2, specular_exponent);
46
47 // specular intensity
48 vec3 Is = Ls * Ks * specular_factor;
49 vec3 Is2 = Ls * Ks * specular_factor2;
50
51 frag_color = vec4((Is + Id + Ia + Is2 + Id2 + Ia2) / 2.0, 1.0);
52}
Note: See TracBrowser for help on using the repository browser.