Finally starting to implement illuminated materials 😎
#TangerineCSGEssentially what's going on here is the cosine angle between the surface normal and the inverse light ray is clamped to 0-1 range and then passes into the color gradient eval function. I figure this would be useful for weird cell shading, but I'm still deciding how I want this to work. For example, should the ramp be evaluated once per light and averaged, or just evaluated once per vertex with a combined parameter.