Blender V5.0
area.h File Reference

Go to the source code of this file.

Functions

CCL_NAMESPACE_BEGIN ccl_device_inline float area_light_rect_sample (const 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, const ccl_private 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 Interval< float > *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 )

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

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

◆ area_light_rect_sample()

CCL_NAMESPACE_BEGIN ccl_device_inline float area_light_rect_sample ( const 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 329 of file area.h.

References area_light_eval(), area_light_is_ellipse(), ccl_device_inline, ccl_global, ccl_private, 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,
const ccl_private Intersection *ccl_restrict isect,
const float3 ray_P,
const float3 ray_D,
ccl_private LightSample *ccl_restrict ls )

◆ 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 106 of file area.h.

References ccl_device, D, 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 )

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

◆ area_light_valid_ray_segment()