Blender V5.0
math_intersect.h File Reference
#include "util/math_float2.h"
#include "util/math_float3.h"
#include "util/math_float4.h"

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)

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 Interval< float > * t_range )

◆ ray_aligned_disk_intersect()

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.

◆ 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 Interval< float > * t_range )

◆ ray_disk_intersect()

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().

◆ 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 Interval< float > * t_range )

◆ ray_plane_intersect()

ccl_device bool ray_plane_intersect ( const float3 N,
const float3 P,
const float3 ray_D,
ccl_private Interval< float > * t_range )

◆ ray_quad_intersect()

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().

◆ ray_sphere_intersect()

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().

◆ ray_triangle_cross()

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

◆ ray_triangle_dot()

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

◆ 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] )

◆ ray_triangle_reciprocal()

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().