54 float tmin = ray->tmin;
56 float isect_t = ray->tmax;
58 if (local_isect !=
NULL) {
59 local_isect->num_hits = 0;
65#if BVH_FEATURE(BVH_MOTION)
66 bvh_instance_motion_push(kg, local_object, ray, &
P, &dir, &idir);
70 object = local_object;
78 int node_addr_child1, traverse_mask;
97 if (traverse_mask == 3) {
99 bool is_closest_child1 = (dist[1] < dist[0]);
100 if (is_closest_child1) {
102 node_addr = node_addr_child1;
103 node_addr_child1 = tmp;
112 if (traverse_mask == 2) {
113 node_addr = node_addr_child1;
115 else if (traverse_mask == 0) {
139 for (; prim_addr < prim_addr2; prim_addr++) {
156 if (triangle_intersect_local(kg,
173#if BVH_FEATURE(BVH_MOTION)
176 for (; prim_addr < prim_addr2; prim_addr++) {
193 if (motion_triangle_intersect_local(kg,
ccl_device_inline void bvh_instance_push(KernelGlobals kg, int object, ccl_private const Ray *ray, ccl_private float3 *P, ccl_private float3 *dir, ccl_private float3 *idir)