non-recursive path tracing