This page demonstates that ambientLight() and directionalLight()
for Processing JS work correctly on spheres.
// Demo written by Andor Salga
float rotEarth = 0.0;
float rotMoon = 0.0;
void setup(){
size( 200, 200, P3D );
}
void draw()
{
// clear the color buffer
background(0);
noStroke();
directionalLight(255, 255,255, 0,1,0);
ambientLight(128, 255, 255);
// push matrix to center of the viewport
pushMatrix();
translate(width/2, height/2, 140);
// draw the Sun
fill(255,0,0);
sphere(5.0);
// push on another matrix and rotate and trans
pushMatrix();
rotateY(rotEarth += 0.01);
translate(0,0,10);
fill(25,70,20);
// draw the Earth
sphereDetail(16);
sphere(2.5);
pushMatrix();
rotateY(rotMoon += 0.08);
translate(0,0,3.5);
// draw the Moon
fill(128,128,128);
sphere(0.5);
popMatrix();
popMatrix();
popMatrix();
}