Intel® Embree Ray Tracing Kernels
Discussion forum on the open source ray tracing kernels for fast photo-realistic rendering on Intel® CPU(s)
279 Discussions

Finding "all" intersections along a ray

AndrewC
New Contributor III
1,016 Views

Assuming I am casting a ray into a scene of spheres using Embree 3.5 (native sphere primitive) . I want to find all the sphere intersections along that ray from tnear->tfar.

Is there a more efficient way to do that than just casting the ray, finding the first hit, then re-casting the ray using a tnear of the "exit" point of the sphere that was hit and so on.

0 Kudos
1 Solution
SvenW_Intel
Moderator
1,016 Views

Yes there is. Please have a look into intersection filters. These are callbacks that get called for each intersection found. You can register such a callback (e.g. store a function point inside the intersection context that is passed to rtcIntersect), add a hit to a list when the callback is called (e.g. you can store a pointer to that list inside the intersection context again), and you let the callback reject the hit in order to gather all hits.

View solution in original post

0 Kudos
2 Replies
SvenW_Intel
Moderator
1,017 Views

Yes there is. Please have a look into intersection filters. These are callbacks that get called for each intersection found. You can register such a callback (e.g. store a function point inside the intersection context that is passed to rtcIntersect), add a hit to a list when the callback is called (e.g. you can store a pointer to that list inside the intersection context again), and you let the callback reject the hit in order to gather all hits.

0 Kudos
AndrewC
New Contributor III
1,016 Views

Great, I thought that was possible, but it was not clear on how to reject the hit in the callback.

0 Kudos
Reply