30 const uint visibility,
44#ifdef __VISIBILITY_FLAG__
51 isect->object = object;
98 const int hit_index = local_intersect_get_record_index(local_isect, t, lcg_state, max_hits);
99 if (hit_index == -1) {
106 isect->object = object;
113 local_isect->Ng[hit_index] =
normalize(
cross(tri_b - tri_a, tri_c - tri_a));
124 const int isect_prim,
134 float3 P = tri_a + u * (tri_b - tri_a) +
v * (tri_c - tri_a);
ATTR_WARN_UNUSED_RESULT const BMVert * v
#define kernel_data_fetch(name, index)
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_device_inline float3 triangle_normal(KernelGlobals kg, ccl_private ShaderData *sd)
ccl_device_inline void triangle_dPdudv(KernelGlobals kg, const int prim, ccl_private float3 *dPdu, ccl_private float3 *dPdv)
ccl_device_inline float3 triangle_smooth_normal(KernelGlobals kg, const float3 Ng, const int prim, const float u, float v)
VecBase< float, D > normalize(VecOp< float, D >) RET
VecBase< float, 3 > cross(VecOp< float, 3 >, VecOp< float, 3 >) RET
ccl_device_inline Transform object_get_transform(KernelGlobals kg, const ccl_private ShaderData *sd)
@ SD_OBJECT_TRANSFORM_APPLIED
ccl_device_forceinline bool ray_triangle_intersect(const float3 ray_P, const float3 ray_D, const float ray_tmin, const float ray_tmax, const float3 tri_a, const float3 tri_b, const float3 tri_c, ccl_private float *isect_u, ccl_private float *isect_v, ccl_private float *isect_t)
ccl_device_inline float3 triangle_point_from_uv(KernelGlobals kg, ccl_private ShaderData *sd, const int isect_prim, const float u, const float v)
CCL_NAMESPACE_BEGIN ccl_device_inline bool triangle_intersect(KernelGlobals kg, ccl_private Intersection *isect, const float3 P, const float3 dir, const float tmin, const float tmax, const uint visibility, const int object, const int prim, const int prim_addr)
ccl_device_inline void triangle_shader_setup(KernelGlobals kg, ccl_private ShaderData *sd)