parse floats
light: don't let directional light factor be negative
light: add parameters for directional light