TODO: fix ray intersection bug