The intersection code still isn't using any kind of shading, and materials aren't parsed by the parser, but the renderer class itself is using them.
It was a stupid thing in the Lambert closure. It was returning the wrong direction vector.
There are still some obvious bugs in it that I haven't tracked down, so the renders aren't correct yet.