exposed setAmbient and setSpecular

and some optimizations