2018-11-28 10:50:50 +09:00

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);
}