| #version 430 core |
| |
| out vec4 color; |
| |
| in VertexBlock |
| { |
| flat vec3 color; |
| vec3 pos; |
| vec3 normal; |
| } frag_in; |
| |
| const vec4 lightPosition = vec4(0.0, 0.0, 0.0, 0.0); |
| const vec3 lightIntensity = vec3(1.0, 1.0, 1.0); |
| const vec3 ka = vec3(0.1, 0.1, 0.1); |
| const vec3 ks = vec3(0.8, 0.8, 0.8); |
| const float shininess = 50.0; |
| |
| vec3 ads() |
| { |
| vec3 n = normalize( frag_in.normal); |
| vec3 s = normalize( vec3(lightPosition) - frag_in.pos ); |
| vec3 v = normalize( -frag_in.pos ); |
| vec3 h = normalize( v + s ); |
| return lightIntensity * (ka + |
| frag_in.color * max( dot(s, frag_in.normal ), 0.0 ) + |
| ks * pow( max( dot( h, n ), 0.0 ), shininess ) ); |
| } |
| |
| |
| void main(void) |
| { |
| color = vec4(ads(), 1.0); |
| } |