void Intersector::trace_back_sides( ShadingRay ray, ShadingPoint& shading_point) const { while (trace(ray, shading_point)) { if (dot(ray.m_dir, shading_point.get_original_shading_normal()) > 0.0) break; shading_point.refine_and_offset(); ray.m_org = shading_point.get_offset_point(ray.m_dir); shading_point.clear(); } }