--- ray/src/rt/raytrace.c 1989/05/07 17:50:51 1.4 +++ ray/src/rt/raytrace.c 1989/07/19 18:46:59 1.5 @@ -68,12 +68,7 @@ register RAY *r; { extern int (*trace)(); - if (localhit(r, &thescene)) - if (r->clipset != NULL && inset(r->clipset, r->ro->omod)) - raytrans(r); /* object is clipped */ - else - rayshade(r, r->ro->omod); - else if (sourcehit(r)) + if (localhit(r, &thescene) || sourcehit(r)) rayshade(r, r->ro->omod); if (trace != NULL) @@ -100,6 +95,12 @@ int mod; { static int depth = 0; register OBJREC *m; + /* check for clipped surface */ + if (r->clipset != NULL && r->rot < FHUGE && + inset(r->clipset, mod)) { + raytrans(r); + return; + } /* check for infinite loop */ if (depth++ >= MAXLOOP) objerror(r->ro, USER, "possible modifier loop");