25 const float fac = klight->distant.half_inv_sin_half_angle /
len(
D - klight->co);
44 klight->co, klight->distant.one_minus_cosangle, rand, &unused, &ls->pdf);
50 ls->eval_fac = klight->distant.eval_fac;
71 if (klight->distant.angle == 0.0f) {
75 if (
vector_angle(-klight->co, ray->D) > klight->distant.angle) {
92 const int shader = klight->shader_id;
101 if (klight->distant.angle == 0.0f) {
108 ls->shader = klight->shader_id;
111 if (
vector_angle(-klight->co, ray_D) > klight->distant.angle) {
117 ls->shader = klight->shader_id;
119 ls->object = klight->object_id;
127 ls->pdf = klight->distant.pdf;
128 ls->eval_fac = klight->distant.eval_fac;
135template<
bool in_volume_segment>
144 if (in_volume_segment) {
162 point_to_centroid = -centroid;
ATTR_WARN_UNUSED_RESULT const BMVert * v
dot(value.rgb, luminance_coefficients)") DEFINE_VALUE("REDUCE(lhs
#define kernel_assert(cond)
#define ccl_device_forceinline
#define kernel_data_fetch(name, index)
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_device_forceinline bool distant_light_tree_parameters(const float3 centroid, const float theta_e, const float t, ccl_private float &cos_theta_u, ccl_private float2 &distance, ccl_private float3 &point_to_centroid, ccl_private float &theta_d)
ccl_device_inline bool distant_light_sample(KernelGlobals kg, const ccl_global KernelLight *klight, const float2 rand, ccl_private LightSample *ls)
ccl_device bool distant_light_sample_from_intersection(KernelGlobals kg, const float3 ray_D, const int lamp, ccl_private LightSample *ccl_restrict ls)
CCL_NAMESPACE_BEGIN ccl_device_inline void distant_light_uv(KernelGlobals kg, const ccl_global KernelLight *klight, const float3 D, ccl_private float *u, ccl_private float *v)
ccl_device bool distant_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)
float distance(VecOp< float, D >, VecOp< float, D >) RET
ccl_device_inline Transform lamp_get_inverse_transform(KernelGlobals kg, const ccl_global KernelLight *klight)
ccl_device_inline int object_lightgroup(KernelGlobals kg, const int object)
ccl_device_inline float vector_angle(const float3 a, const float3 b)
ccl_device float fast_cosf(float x)
ccl_device_inline float3 sample_uniform_cone(const float3 N, const float one_minus_cos_angle, const float2 rand, ccl_private float *cos_theta, ccl_private float *pdf)