|
|
Nathan Kopp <Nat### [at] koppcom> wrote:
: max_trace_level does not affect the shadowing and filtering equations.
: The reason is that whenever you trace a ray you (usually) get all of the
: intersections, not just the closest one. Of course, for the eye rays you
: only use the closest intersection and ignore the others (unless you're
: doing a CSG merge) and then shoot another ray if there is any refraction.
: So the shadow ray only needs to get shot once and all intersections are
: recorded and can be processed.
Now I undestand. Thanx. It's a pretty clever "trick" to calculate filtered
shadows fast.
Btw, your comment about the CSG merge was extremely interesting.
I have understood that for a union you need to shoot as many rays as inner
surfaces the ray intersects inside the union (supposing that it has a
semitransparent pigment). However with merge you only need to shoot one ray.
Doesn't this mean that merge should be a lot faster than union? (And my
experiments about this confirm that merge is about 3 to 5 times faster in
these cases...)
(Hmm... I wonder why I'm so fanatic about this merge speed thing... :) )
: Now, this makes me think that triangle meshes and isosurfaces might
: not work properly when producing filtered shadows, since not all
: intersections are returned (for speed reasons).
That would be worth trying.
--
main(i,_){for(_?--i,main(i+2,"FhhQHFIJD|FQTITFN]zRFHhhTBFHhhTBFysdB"[i]
):5;i&&_>1;printf("%s",_-70?_&1?"[]":" ":(_=0,"\n")),_/=2);} /*- Warp -*/
Post a reply to this message
|
|