basic path tracer framework