Surface Shader

    public Color Shade(Vector3D p, Vector3D n, Vector3D v,
                       Vector lights, Vector objects, Color bgnd) {

        Enumeration lightSources = lights.elements();
        float r = 0;
        float g = 0;
        float b = 0;

        // step thru list of lights
        while (lightSources.hasMoreElements()) {
            Light light = (Light) lightSources.nextElement();
            if (light.lightType == Light.AMBIENT) {
                r += ka*ir*light.ir;
                g += ka*ig*light.ig;
                b += ka*ib*light.ib;
            } else {
                Vector3D l;
                if (light.lightType == Light.POINT) {
                    l = new Vector3D(light.lvec.x - p.x,
                                     light.lvec.y - p.y,
                                     light.lvec.z - p.z);
                    l.normalize();
                } else {
                    l = new Vector3D(-light.lvec.x, -light.lvec.y, -light.lvec.z);
                }
Lecture 19   Slide 20   6.837 Fall '00