43 lines
820 B
GLSL
43 lines
820 B
GLSL
#version 430
|
|
|
|
layout(location=0) in vec3 coord3d;
|
|
layout(location=1) in vec3 v_normal;
|
|
layout(location=2) in vec3 v_color;
|
|
|
|
out vec3 f_color;
|
|
|
|
uniform mat4 mvp;
|
|
uniform vec4 LightLocation;
|
|
|
|
uniform vec3 Kd;
|
|
uniform vec3 Ld;
|
|
|
|
uniform vec3 Ka;
|
|
uniform vec3 La;
|
|
|
|
uniform vec3 Ks;
|
|
uniform vec3 Ls;
|
|
|
|
|
|
uniform mat3 NormalMatrix;
|
|
uniform mat4 ModelViewMatrix;
|
|
|
|
|
|
void main(void)
|
|
{
|
|
vec3 fNormal = normalize(NormalMatrix * v_normal);
|
|
vec4 pos = ModelViewMatrix * vec4(coord3d, 1.0);
|
|
|
|
vec3 L = normalize(LightLocation.xyz - pos.xyz);
|
|
vec3 N = fNormal;
|
|
vec3 V = normalize(-pos.xyz);
|
|
vec3 R = reflect(-L, N);
|
|
|
|
vec3 diffuse = Kd * Ld * max(dot(L, N), 0.0);
|
|
vec3 ambient = Ka * La;
|
|
vec3 specular = Ks * Ls * pow(max(dot(R, V), 0.0), 50.0);
|
|
|
|
f_color = diffuse + ambient + specular;
|
|
gl_Position = mvp * vec4(coord3d, 1.0f);
|
|
}
|