add custom shadow lists to state logging
add generic surface coeffs to object classes
add clipped surface side visibility routines for given point
build separate light lists for each side of the surface