I'm porting from Embree 2 to latest 3.5.1. For shadows I need to ignore some intersections
a) if ray hits the same facet it's cast from
b) if ray hits the neighbor facets with same normal
My inersection filter gives ray.geomID == RTC_INVALID_GEOMETRY_ID almost always, but it does not mean background (ray hits nothing), I receive correct geom/primID but only after rtIntersect1 returns control. So I've forced to cast ray again if the hit should be ignored. Also most of unwanted intersection can be excluded if specify some tnear - but it's inaccurate
How can I skip such facets?
You only shoot single rays with rtcIntersect1? When you receive invalid geomID inside your intersection filter, then you likely have the wrong hit layout. Or, maybe you cast the filter_arg->ray member to a rayhit? Please not that inside the filter callback the ray pointer only points to the ray, while you should read the geomID/primID/u/v/t etc. from the hit member of the filter_args.
Thx for your reply. Yes, I use only rtcIntersect1. After experimenting I've found the hit info is valid inside filter in this case (was confused because doc says that no). Please correct if I'm wrong
BTW: before porting I was ready for next round of PITA with adding building bvh progress indicator and mem usage (with Embree 1 and 2 it was 3/4 of work). But ops! Embree 3 has callbacks to do this, so pleasant surprise! THANK you very much