Blender V4.3
math_intersect.h File Reference

Go to the source code of this file.

Functions

CCL_NAMESPACE_BEGIN ccl_device bool ray_sphere_intersect (float3 ray_P, float3 ray_D, float ray_tmin, float ray_tmax, float3 sphere_P, float sphere_radius, ccl_private float3 *isect_P, ccl_private float *isect_t)
 
ccl_device bool ray_aligned_disk_intersect (float3 ray_P, float3 ray_D, float ray_tmin, float ray_tmax, float3 disk_P, float disk_radius, ccl_private float3 *isect_P, ccl_private float *isect_t)
 
ccl_device bool ray_disk_intersect (float3 ray_P, float3 ray_D, float ray_tmin, float ray_tmax, float3 disk_P, float3 disk_N, float disk_radius, ccl_private float3 *isect_P, ccl_private float *isect_t)
 
ccl_device_forceinline float ray_triangle_rcp (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 (float3 ray_P, float3 ray_D, float ray_tmin, float ray_tmax, float3 quad_P, float3 inv_quad_u, float3 inv_quad_v, 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 float2 *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 float2 *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 float2 *t_range)
 
ccl_device_inline bool ray_cone_intersect (const float3 axis, const float3 P, float3 D, const float cos_angle_sq, ccl_private float2 *t_range)
 

Function Documentation

◆ ray_aabb_intersect()

ccl_device bool ray_aabb_intersect ( const float3 bbox_min,
const float3 bbox_max,
const float3 ray_P,
const float3 ray_D,
ccl_private float2 * t_range )

◆ ray_aligned_disk_intersect()

ccl_device bool ray_aligned_disk_intersect ( float3 ray_P,
float3 ray_D,
float ray_tmin,
float ray_tmax,
float3 disk_P,
float disk_radius,
ccl_private float3 * isect_P,
ccl_private float * isect_t )

Definition at line 50 of file math_intersect.h.

References dot(), len_squared(), normalize_len(), P, and UNLIKELY.

◆ ray_cone_intersect()

ccl_device_inline bool ray_cone_intersect ( const float3 axis,
const float3 P,
float3 D,
const float cos_angle_sq,
ccl_private float2 * t_range )

◆ ray_disk_intersect()

ccl_device bool ray_disk_intersect ( float3 ray_P,
float3 ray_D,
float ray_tmin,
float ray_tmax,
float3 disk_P,
float3 disk_N,
float disk_radius,
ccl_private float3 * isect_P,
ccl_private float * isect_t )

Definition at line 81 of file math_intersect.h.

References dot(), P, and sqr().

Referenced by point_light_intersect().

◆ ray_infinite_cylinder_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 float2 * t_range )

◆ ray_plane_intersect()

ccl_device bool ray_plane_intersect ( const float3 N,
const float3 P,
const float3 ray_D,
ccl_private float2 * t_range )

Definition at line 307 of file math_intersect.h.

References dot(), fmaxf, fminf, N, and P.

Referenced by area_light_valid_ray_segment(), ray_cone_intersect(), and triangle_light_valid_ray_segment().

◆ ray_quad_intersect()

ccl_device bool ray_quad_intersect ( float3 ray_P,
float3 ray_D,
float ray_tmin,
float ray_tmax,
float3 quad_P,
float3 inv_quad_u,
float3 inv_quad_v,
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 257 of file math_intersect.h.

References dot(), NULL, and v.

Referenced by area_light_intersect(), and background_portal_pdf().

◆ ray_sphere_intersect()

CCL_NAMESPACE_BEGIN ccl_device bool ray_sphere_intersect ( float3 ray_P,
float3 ray_D,
float ray_tmin,
float ray_tmax,
float3 sphere_P,
float sphere_radius,
ccl_private float3 * isect_P,
ccl_private float * isect_t )

Definition at line 12 of file math_intersect.h.

References copysignf, dot(), len_squared(), and sqrtf.

Referenced by point_light_intersect(), and spot_light_sample().

◆ ray_triangle_cross()

ccl_device_inline float3 ray_triangle_cross ( const float3 a,
const float3 b )

Definition at line 148 of file math_intersect.h.

References b, make_float3(), make_float4(), and msub().

Referenced by ray_triangle_intersect(), and ray_triangle_intersect_self().

◆ ray_triangle_dot()

ccl_device_inline float ray_triangle_dot ( const float3 a,
const float3 b )

Definition at line 137 of file math_intersect.h.

References b, madd(), and make_float4().

Referenced by ray_triangle_intersect(), and ray_triangle_intersect_self().

◆ ray_triangle_intersect()

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 )

◆ ray_triangle_intersect_self()

ccl_device_forceinline bool ray_triangle_intersect_self ( const float3 ray_P,
const float3 ray_D,
const float3 verts[3] )

Definition at line 221 of file math_intersect.h.

References eps, fabsf, max, min, ray_triangle_cross(), ray_triangle_dot(), V, v2, verts, and W.

Referenced by integrate_surface_ray_offset().

◆ ray_triangle_rcp()

ccl_device_forceinline float ray_triangle_rcp ( const float x)

Definition at line 113 of file math_intersect.h.

References x.

Referenced by ray_triangle_intersect().