MCPcopy Create free account
hub / github.com/RenderKit/embree / intersect

Method intersect

kernels/geometry/instance_intersector.cpp:15–38  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13 {
14
15 void InstanceIntersector1::intersect(const Precalculations& pre, RayHit& ray, RayQueryContext* context, const InstancePrimitive& prim)
16 {
17 const Instance* instance = prim.instance;
18
19 /* perform ray mask test */
20#if defined(EMBREE_RAY_MASK)
21 if ((ray.mask & instance->mask) == 0)
22 return;
23#endif
24 RTCRayQueryContext* user_context = context->user;
25 if (likely(instance_id_stack::push(user_context, prim.instID_, 0)))
26 {
27 const AffineSpace3fa world2local = instance->getWorld2Local();
28 const Vec3ff ray_org = ray.org;
29 const Vec3ff ray_dir = ray.dir;
30 ray.org = Vec3ff(xfmPoint(world2local, ray_org), ray.tnear());
31 ray.dir = Vec3ff(xfmVector(world2local, ray_dir), ray.time());
32 RayQueryContext newcontext((Scene*)instance->object, user_context, context->args);
33 instance->object->intersectors.intersect((RTCRayHit&)ray, &newcontext);
34 ray.org = ray_org;
35 ray.dir = ray_dir;
36 instance_id_stack::pop(user_context);
37 }
38 }
39
40 bool InstanceIntersector1::occluded(const Precalculations& pre, Ray& ray, RayQueryContext* context, const InstancePrimitive& prim)
41 {

Callers

nothing calls this directly

Calls 8

pushFunction · 0.85
popFunction · 0.85
tnearMethod · 0.80
timeMethod · 0.80
xfmPointFunction · 0.50
xfmVectorFunction · 0.50
noneFunction · 0.50
getWorld2LocalMethod · 0.45

Tested by

no test coverage detected