Blender V4.3
area.h File Reference

Go to the source code of this file.

Functions

CCL_NAMESPACE_BEGIN ccl_device_inline float area_light_rect_sample (float3 P, ccl_private float3 *light_p, const float3 axis_u, const float len_u, const float3 axis_v, const float len_v, const float2 rand, bool sample_coord)
 
ccl_device float area_light_spread_attenuation (const float3 D, const float3 lightNg, const float tan_half_spread, const float normalize_spread)
 
ccl_device bool area_light_spread_clamp_light (const float3 P, const float3 lightNg, ccl_private float3 *lightP, ccl_private float3 *axis_u, ccl_private float *len_u, ccl_private float3 *axis_v, ccl_private float *len_v, const float tan_half_spread, ccl_private bool *sample_rectangle)
 
ccl_device_forceinline bool area_light_is_ellipse (const ccl_global KernelAreaLight *light)
 
template<bool in_volume_segment>
ccl_device_inline bool area_light_eval (const ccl_global KernelLight *klight, const float3 ray_P, ccl_private float3 *light_P, ccl_private LightSample *ccl_restrict ls, const float2 rand, bool sample_coord)
 
template<bool in_volume_segment>
ccl_device_inline bool area_light_sample (const ccl_global KernelLight *klight, const float2 rand, const float3 P, ccl_private LightSample *ls)
 
ccl_device_forceinline void area_light_mnee_sample_update (const ccl_global KernelLight *klight, ccl_private LightSample *ls, const float3 P)
 
ccl_device_inline bool area_light_intersect (const ccl_global KernelLight *klight, const ccl_private Ray *ccl_restrict ray, ccl_private float *t, ccl_private float *u, ccl_private float *v)
 
ccl_device_inline bool area_light_sample_from_intersection (const ccl_global KernelLight *klight, ccl_private const Intersection *ccl_restrict isect, const float3 ray_P, const float3 ray_D, ccl_private LightSample *ccl_restrict ls)
 
ccl_device_forceinline float area_light_max_extent (const ccl_global KernelAreaLight *light)
 
ccl_device_inline bool area_light_valid_ray_segment (const ccl_global KernelAreaLight *light, float3 P, float3 D, ccl_private float2 *t_range)
 
template<bool in_volume_segment>
ccl_device_forceinline bool area_light_tree_parameters (const ccl_global KernelLight *klight, const float3 centroid, const float3 P, const float3 N, const float3 bcone_axis, ccl_private float &cos_theta_u, ccl_private float2 &distance, ccl_private float3 &point_to_centroid)
 

Function Documentation

◆ area_light_eval()

◆ area_light_intersect()

ccl_device_inline bool area_light_intersect ( const ccl_global KernelLight * klight,
const ccl_private Ray *ccl_restrict ray,
ccl_private float * t,
ccl_private float * u,
ccl_private float * v )

Definition at line 390 of file area.h.

References area_light_is_ellipse(), dot(), fabsf, P, ray_quad_intersect(), and v.

Referenced by lights_intersect_impl().

◆ area_light_is_ellipse()

ccl_device_forceinline bool area_light_is_ellipse ( const ccl_global KernelAreaLight * light)

◆ area_light_max_extent()

ccl_device_forceinline float area_light_max_extent ( const ccl_global KernelAreaLight * light)

Definition at line 447 of file area.h.

References area_light_is_ellipse(), fmaxf, len, and make_float2().

Referenced by area_light_valid_ray_segment().

◆ area_light_mnee_sample_update()

ccl_device_forceinline void area_light_mnee_sample_update ( const ccl_global KernelLight * klight,
ccl_private LightSample * ls,
const float3 P )

Definition at line 374 of file area.h.

References area_light_eval(), light_pdf_area_to_solid_angle(), normalize_len(), P, and zero_float2().

Referenced by light_sample_update().

◆ area_light_rect_sample()

CCL_NAMESPACE_BEGIN ccl_device_inline float area_light_rect_sample ( float3 P,
ccl_private float3 * light_p,
const float3 axis_u,
const float len_u,
const float3 axis_v,
const float len_v,
const float2 rand,
bool sample_coord )

◆ area_light_sample()

template<bool in_volume_segment>
ccl_device_inline bool area_light_sample ( const ccl_global KernelLight * klight,
const float2 rand,
const float3 P,
ccl_private LightSample * ls )

Definition at line 325 of file area.h.

References area_light_eval(), area_light_is_ellipse(), dot(), fabsf, P, and sqr().

Referenced by light_sample().

◆ area_light_sample_from_intersection()

ccl_device_inline bool area_light_sample_from_intersection ( const ccl_global KernelLight * klight,
ccl_private const Intersection *ccl_restrict isect,
const float3 ray_P,
const float3 ray_D,
ccl_private LightSample *ccl_restrict ls )

Definition at line 430 of file area.h.

References area_light_eval(), and zero_float2().

Referenced by light_sample_from_intersection().

◆ area_light_spread_attenuation()

ccl_device float area_light_spread_attenuation ( const float3 D,
const float3 lightNg,
const float tan_half_spread,
const float normalize_spread )

Definition at line 102 of file area.h.

References M_PI_F, max, and tan_angle().

Referenced by area_light_eval().

◆ area_light_spread_clamp_light()

ccl_device bool area_light_spread_clamp_light ( const float3 P,
const float3 lightNg,
ccl_private float3 * lightP,
ccl_private float3 * axis_u,
ccl_private float * len_u,
ccl_private float3 * axis_v,
ccl_private float * len_v,
const float tan_half_spread,
ccl_private bool * sample_rectangle )

Definition at line 121 of file area.h.

References dot(), fabsf, FLT_MAX, fminf, len, M_PI_2_F, M_PI_F, make_float2(), max, min, normalize(), P, rotate_around_axis(), sqr(), and sqrtf.

Referenced by area_light_eval().

◆ area_light_tree_parameters()

template<bool in_volume_segment>
ccl_device_forceinline bool area_light_tree_parameters ( const ccl_global KernelLight * klight,
const float3 centroid,
const float3 P,
const float3 N,
const float3 bcone_axis,
ccl_private float & cos_theta_u,
ccl_private float2 & distance,
ccl_private float3 & point_to_centroid )

Definition at line 496 of file area.h.

References dot(), fabsf, FLT_MAX, fmaxf, fminf, make_float2(), N, P, and safe_normalize_len().

Referenced by light_tree_emitter_importance().

◆ area_light_valid_ray_segment()