31 const uint visibility)
52 const float tmin = ray->tmin;
66 int node_addr_child1, traverse_mask;
85 if (traverse_mask == 3) {
87 bool is_closest_child1 = (dist[1] < dist[0]);
88 if (is_closest_child1) {
90 node_addr = node_addr_child1;
91 node_addr_child1 = tmp;
100 if (traverse_mask == 2) {
101 node_addr = node_addr_child1;
103 else if (traverse_mask == 0) {
116 if (prim_addr >= 0) {
128 for (; prim_addr < prim_addr2; prim_addr++) {
144 kg, isect,
P, dir, tmin, isect->t, visibility, prim_object, prim, prim_addr);
148#if BVH_FEATURE(BVH_MOTION)
151 for (; prim_addr < prim_addr2; prim_addr++) {
190#if BVH_FEATURE(BVH_MOTION)
191 bvh_instance_motion_push(kg,
object, ray, &
P, &dir, &idir);
212 if (stack_ptr >= 0) {
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)
ccl_device_inline bool motion_triangle_intersect(KernelGlobals kg, ccl_private Intersection *isect, float3 P, float3 dir, float tmin, float tmax, float time, uint visibility, int object, int prim, int prim_addr)
CCL_NAMESPACE_BEGIN ccl_device_inline bool triangle_intersect(KernelGlobals kg, ccl_private Intersection *isect, float3 P, float3 dir, float tmin, float tmax, uint visibility, int object, int prim, int prim_addr)