Create a shader that implements the Phong illumination model.
ambient is a value between 0.0 and 1.0 which determines how much of the base color of a surface that is visible when it is not illuminated by any light source.
diffuse is a value between 0.0 and 1.0 specifying how much light that is reflected diffusely from the surface.
specular is a value between 0.0 and 1.0 which is the fraction of color specularly reflected.
spec_exp is the exponent in the specular highlight calculation. It specifies how "shiny" the surface is. Useful values are about 1 to 200, where 1 is a rather dull surface and 200 is a very shiny one.
color is a list containing the red, green and blue values for the surface. Each being a number between 0.0 and 1.0.
opacity describes the opacity of a surface. 0.0 means totally transparent, 1.0 means totally opaque. May be a list of red, green and blue opacity values or a single value to be used for all color channels. Optional, default is 1.0.