20 #if BVH_FEATURE(BVH_HAIR)
21 # define NODE_INTERSECT bvh_node_intersect
23 # define NODE_INTERSECT bvh_aligned_node_intersect
34 #ifndef __KERNEL_GPU__
66 float isect_t = ray->t;
68 if (local_isect !=
NULL) {
69 local_isect->num_hits = 0;
75 #if BVH_FEATURE(BVH_MOTION)
77 isect_t = bvh_instance_motion_push(
kg, local_object, ray, &
P, &dir, &idir, isect_t, &ob_itfm);
81 object = local_object;
89 int node_addr_child1, traverse_mask;
107 if (traverse_mask == 3) {
109 bool is_closest_child1 = (dist[1] < dist[0]);
110 if (is_closest_child1) {
112 node_addr = node_addr_child1;
113 node_addr_child1 = tmp;
122 if (traverse_mask == 2) {
123 node_addr = node_addr_child1;
125 else if (traverse_mask == 0) {
149 for (; prim_addr < prim_addr2; prim_addr++) {
151 if (triangle_intersect_local(
kg,
166 #if BVH_FEATURE(BVH_MOTION)
169 for (; prim_addr < prim_addr2; prim_addr++) {
171 if (motion_triangle_intersect_local(
kg,
209 #undef BVH_FUNCTION_NAME
210 #undef BVH_FUNCTION_FEATURES
211 #undef NODE_INTERSECT
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
ccl_device_inline bool BVH_FUNCTION_NAME(KernelGlobals *kg, const Ray *ray, LocalIntersection *local_isect, int local_object, uint *lcg_state, int max_hits)
#define ENTRYPOINT_SENTINEL
#define BVH_FUNCTION_FULL_NAME(prefix)
BLI_Stack * traversal_stack
ccl_device_inline float3 bvh_clamp_direction(float3 dir)
ccl_device_inline float3 bvh_inverse_direction(float3 dir)
ccl_device_inline float bvh_instance_push(KernelGlobals *kg, int object, const Ray *ray, float3 *P, float3 *dir, float3 *idir, float t)
#define kernel_assert(cond)
#define kernel_tex_fetch(tex, index)
#define ccl_device_inline
@ PRIMITIVE_MOTION_TRIANGLE
@ PATH_RAY_ALL_VISIBILITY
@ SD_OBJECT_TRANSFORM_APPLIED
ccl_device_inline int __float_as_int(float f)