|
Blender V5.0
|
Go to the source code of this file.
Functions | |
| CCL_NAMESPACE_BEGIN ccl_device bool | ray_sphere_intersect (const float3 ray_P, const float3 ray_D, const float ray_tmin, const float ray_tmax, const float3 sphere_P, const float sphere_radius, ccl_private float3 *isect_P, ccl_private float *isect_t) |
| ccl_device bool | ray_aligned_disk_intersect (const float3 ray_P, const float3 ray_D, const float ray_tmin, const float ray_tmax, const float3 disk_P, const float disk_radius, ccl_private float3 *isect_P, ccl_private float *isect_t) |
| ccl_device bool | ray_disk_intersect (const float3 ray_P, const float3 ray_D, const float ray_tmin, const float ray_tmax, const float3 disk_P, const float3 disk_N, const float disk_radius, ccl_private float3 *isect_P, ccl_private float *isect_t) |
| ccl_device_forceinline float | ray_triangle_reciprocal (const float x) |
| ccl_device_inline float | ray_triangle_dot (const float3 a, const float3 b) |
| ccl_device_inline float3 | ray_triangle_cross (const float3 a, const float3 b) |
| 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_forceinline bool | ray_triangle_intersect_self (const float3 ray_P, const float3 ray_D, const float3 verts[3]) |
| ccl_device bool | ray_quad_intersect (const float3 ray_P, const float3 ray_D, const float ray_tmin, const float ray_tmax, const float3 quad_P, const float3 inv_quad_u, const float3 inv_quad_v, const float3 quad_n, ccl_private float3 *isect_P, ccl_private float *isect_t, ccl_private float *isect_u, ccl_private float *isect_v, bool ellipse) |
| ccl_device bool | ray_plane_intersect (const float3 N, const float3 P, const float3 ray_D, ccl_private Interval< float > *t_range) |
| ccl_device bool | ray_aabb_intersect (const float3 bbox_min, const float3 bbox_max, const float3 ray_P, const float3 ray_D, ccl_private Interval< float > *t_range) |
| ccl_device_inline bool | ray_infinite_cylinder_intersect (const float3 P, const float3 D, const float len_u, const float len_v, ccl_private Interval< float > *t_range) |
| ccl_device_inline bool | ray_cone_intersect (const float3 axis, const float3 P, float3 D, const float cos_angle_sq, ccl_private Interval< float > *t_range) |
| ccl_device bool ray_aabb_intersect | ( | const float3 | bbox_min, |
| const float3 | bbox_max, | ||
| const float3 | ray_P, | ||
| const float3 | ray_D, | ||
| ccl_private Interval< float > * | t_range ) |
Definition at line 336 of file math_intersect.h.
References ccl_device, ccl_private, make_float4, max, min, reciprocal(), reduce_max(), and reduce_min().
Referenced by area_light_valid_ray_segment(), and blender::bke::pbvh::raycast().
| ccl_device bool ray_aligned_disk_intersect | ( | const float3 | ray_P, |
| const float3 | ray_D, | ||
| const float | ray_tmin, | ||
| const float | ray_tmax, | ||
| const float3 | disk_P, | ||
| const float | disk_radius, | ||
| ccl_private float3 * | isect_P, | ||
| ccl_private float * | isect_t ) |
Definition at line 53 of file math_intersect.h.
References ccl_device, ccl_private, dot(), len_squared(), normalize_len(), P, and UNLIKELY.
| ccl_device_inline bool ray_cone_intersect | ( | const float3 | axis, |
| const float3 | P, | ||
| float3 | D, | ||
| const float | cos_angle_sq, | ||
| ccl_private Interval< float > * | t_range ) |
Definition at line 407 of file math_intersect.h.
References b, ccl_device_inline, ccl_private, D, dot(), FLT_MAX, intervals_intersection(), inversesqrtf(), len_squared(), P, ray_plane_intersect(), solve_quadratic(), and sqr.
Referenced by area_light_valid_ray_segment(), and spot_light_valid_ray_segment().
| ccl_device bool ray_disk_intersect | ( | const float3 | ray_P, |
| const float3 | ray_D, | ||
| const float | ray_tmin, | ||
| const float | ray_tmax, | ||
| const float3 | disk_P, | ||
| const float3 | disk_N, | ||
| const float | disk_radius, | ||
| ccl_private float3 * | isect_P, | ||
| ccl_private float * | isect_t ) |
Definition at line 84 of file math_intersect.h.
References ccl_device, ccl_private, dot(), P, sqr, and T.
Referenced by point_light_intersect().
| ccl_device_inline bool ray_infinite_cylinder_intersect | ( | const float3 | P, |
| const float3 | D, | ||
| const float | len_u, | ||
| const float | len_v, | ||
| ccl_private Interval< float > * | t_range ) |
Definition at line 363 of file math_intersect.h.
References b, ccl_device_inline, ccl_private, D, dot(), intervals_intersection(), make_float2, P, and solve_quadratic().
Referenced by area_light_valid_ray_segment().
| ccl_device bool ray_plane_intersect | ( | const float3 | N, |
| const float3 | P, | ||
| const float3 | ray_D, | ||
| ccl_private Interval< float > * | t_range ) |
Definition at line 314 of file math_intersect.h.
References ccl_device, ccl_private, dot(), fmaxf, fminf, N, and P.
Referenced by area_light_valid_ray_segment(), ray_cone_intersect(), and triangle_light_valid_ray_segment().
| ccl_device bool ray_quad_intersect | ( | const float3 | ray_P, |
| const float3 | ray_D, | ||
| const float | ray_tmin, | ||
| const float | ray_tmax, | ||
| const float3 | quad_P, | ||
| const float3 | inv_quad_u, | ||
| const float3 | inv_quad_v, | ||
| const float3 | quad_n, | ||
| ccl_private float3 * | isect_P, | ||
| ccl_private float * | isect_t, | ||
| ccl_private float * | isect_u, | ||
| ccl_private float * | isect_v, | ||
| bool | ellipse ) |
Definition at line 260 of file math_intersect.h.
References ccl_device, ccl_private, dot(), and v.
Referenced by area_light_intersect(), and background_portal_pdf().
| CCL_NAMESPACE_BEGIN ccl_device bool ray_sphere_intersect | ( | const float3 | ray_P, |
| const float3 | ray_D, | ||
| const float | ray_tmin, | ||
| const float | ray_tmax, | ||
| const float3 | sphere_P, | ||
| const float | sphere_radius, | ||
| ccl_private float3 * | isect_P, | ||
| ccl_private float * | isect_t ) |
Definition at line 15 of file math_intersect.h.
References ccl_device, ccl_private, copysignf, dot(), len_squared(), and sqrtf.
Referenced by point_light_intersect(), and spot_light_sample().
| ccl_device_inline float3 ray_triangle_cross | ( | const float3 | a, |
| const float3 | b ) |
Definition at line 151 of file math_intersect.h.
References b, ccl_device_inline, make_float3(), make_float4, msub(), float3::x, float3::y, and float3::z.
Referenced by ray_triangle_intersect(), and ray_triangle_intersect_self().
| ccl_device_inline float ray_triangle_dot | ( | const float3 | a, |
| const float3 | b ) |
Definition at line 140 of file math_intersect.h.
References b, ccl_device_inline, madd(), make_float4, float3::x, float3::y, and float3::z.
Referenced by ray_triangle_intersect(), and ray_triangle_intersect_self().
| 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 ) |
Definition at line 163 of file math_intersect.h.
References ccl_device_forceinline, ccl_private, dot(), eps, fabsf, max, min, ray_triangle_cross(), ray_triangle_dot(), ray_triangle_reciprocal(), T, U, UNLIKELY, V, v2, and W.
Referenced by motion_triangle_intersect(), triangle_intersect(), and triangle_light_sample().
| ccl_device_forceinline bool ray_triangle_intersect_self | ( | const float3 | ray_P, |
| const float3 | ray_D, | ||
| const float3 | verts[3] ) |
Definition at line 224 of file math_intersect.h.
References ccl_device_forceinline, eps, fabsf, max, min, ray_triangle_cross(), ray_triangle_dot(), U, V, v2, verts, and W.
Referenced by integrate_surface_ray_offset().
| ccl_device_forceinline float ray_triangle_reciprocal | ( | const float | x | ) |
Definition at line 116 of file math_intersect.h.
References ccl_device_forceinline, and x.
Referenced by ray_triangle_intersect().