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