#version 330 // CSci-4611 Assignment 5: Art Render // TODO: You need to calculate per-fragment shading here using a toon shading model in vec3 position_in_eye_space; in vec3 normal_in_eye_space; out vec4 color; uniform vec3 light_in_eye_space; uniform vec4 Ia, Id, Is; uniform vec4 ka, kd, ks; uniform float s; uniform sampler2D diffuse_ramp; uniform sampler2D specular_ramp; void main() { // normalized normal vec3 n = normalize(normal_in_eye_space); // unit vector from the vertex to the light vec3 l = normalize(light_in_eye_space - position_in_eye_space); // unit vector from the vertex to the eye point, which is at 0,0,0 in "eye space" vec3 e = normalize(-position_in_eye_space); // halfway vector vec3 h = normalize(l + e); // calculate color using the light intensity equation vec4 ambient = Ia * ka; float diff_intensity = max(dot(n, l), 0.0); vec2 diffuse_texture = vec2(diff_intensity, 0.0); vec4 diffuse = Id * kd * texture(diffuse_ramp, diffuse_texture); float spec_intensity = pow(max(dot(n, h), 0.0), s); vec2 specular_texture = vec2(spec_intensity, 0.0); vec4 specular = Is * ks * texture(specular_ramp, specular_texture); color = diffuse + specular; }