roughly completed shoot ray recursion
merge