Blender  V3.3
Classes | Typedefs | Functions
kernel/light/light.h File Reference
#include "kernel/geom/geom.h"
#include "kernel/light/background.h"
#include "kernel/sample/mapping.h"

Go to the source code of this file.

Classes

struct  LightSample
 

Typedefs

typedef CCL_NAMESPACE_BEGIN struct LightSample LightSample
 

Functions

template<bool in_volume_segment>
ccl_device_inline bool light_sample (KernelGlobals kg, const int lamp, const float randu, const float randv, const float3 P, const uint32_t path_flag, ccl_private LightSample *ls)
 
ccl_device bool lights_intersect (KernelGlobals kg, IntegratorState state, ccl_private const Ray *ccl_restrict ray, ccl_private Intersection *ccl_restrict isect, const int last_prim, const int last_object, const int last_type, const uint32_t path_flag)
 
ccl_device bool light_sample_from_distant_ray (KernelGlobals kg, const float3 ray_D, const int lamp, ccl_private LightSample *ccl_restrict ls)
 
ccl_device bool light_sample_from_intersection (KernelGlobals kg, ccl_private const Intersection *ccl_restrict isect, const float3 ray_P, const float3 ray_D, ccl_private LightSample *ccl_restrict ls)
 
ccl_device_inline bool triangle_world_space_vertices (KernelGlobals kg, int object, int prim, float time, float3 V[3])
 
ccl_device_inline float triangle_light_pdf_area (KernelGlobals kg, const float3 Ng, const float3 I, float t)
 
ccl_device_forceinline float triangle_light_pdf (KernelGlobals kg, ccl_private const ShaderData *sd, float t)
 
template<bool in_volume_segment>
ccl_device_forceinline void triangle_light_sample (KernelGlobals kg, int prim, int object, float randu, float randv, float time, ccl_private LightSample *ls, const float3 P)
 
ccl_device int light_distribution_sample (KernelGlobals kg, ccl_private float *randu)
 
ccl_device_inline bool light_select_reached_max_bounces (KernelGlobals kg, int index, int bounce)
 
template<bool in_volume_segment>
ccl_device_noinline bool light_distribution_sample (KernelGlobals kg, float randu, const float randv, const float time, const float3 P, const int bounce, const uint32_t path_flag, ccl_private LightSample *ls)
 
ccl_device_inline bool light_distribution_sample_from_volume_segment (KernelGlobals kg, float randu, const float randv, const float time, const float3 P, const int bounce, const uint32_t path_flag, ccl_private LightSample *ls)
 
ccl_device_inline bool light_distribution_sample_from_position (KernelGlobals kg, float randu, const float randv, const float time, const float3 P, const int bounce, const uint32_t path_flag, ccl_private LightSample *ls)
 
ccl_device_inline bool light_distribution_sample_new_position (KernelGlobals kg, const float randu, const float randv, const float time, const float3 P, ccl_private LightSample *ls)
 

Typedef Documentation

◆ LightSample

Function Documentation

◆ light_distribution_sample() [1/2]

ccl_device int light_distribution_sample ( KernelGlobals  kg,
ccl_private float randu 
)

Definition at line 846 of file kernel/light/light.h.

References blender::math::clamp(), kernel_data, kernel_data_fetch, len, and r.

Referenced by light_distribution_sample().

◆ light_distribution_sample() [2/2]

template<bool in_volume_segment>
ccl_device_noinline bool light_distribution_sample ( KernelGlobals  kg,
float  randu,
const float  randv,
const float  time,
const float3  P,
const int  bounce,
const uint32_t  path_flag,
ccl_private LightSample ls 
)

◆ light_distribution_sample_from_position()

ccl_device_inline bool light_distribution_sample_from_position ( KernelGlobals  kg,
float  randu,
const float  randv,
const float  time,
const float3  P,
const int  bounce,
const uint32_t  path_flag,
ccl_private LightSample ls 
)

Definition at line 942 of file kernel/light/light.h.

References P(), and time.

◆ light_distribution_sample_from_volume_segment()

ccl_device_inline bool light_distribution_sample_from_volume_segment ( KernelGlobals  kg,
float  randu,
const float  randv,
const float  time,
const float3  P,
const int  bounce,
const uint32_t  path_flag,
ccl_private LightSample ls 
)

Definition at line 930 of file kernel/light/light.h.

References P(), and time.

◆ light_distribution_sample_new_position()

ccl_device_inline bool light_distribution_sample_new_position ( KernelGlobals  kg,
const float  randu,
const float  randv,
const float  time,
const float3  P,
ccl_private LightSample ls 
)

Definition at line 954 of file kernel/light/light.h.

References LIGHT_TRIANGLE, P(), and time.

◆ light_sample()

template<bool in_volume_segment>
ccl_device_inline bool light_sample ( KernelGlobals  kg,
const int  lamp,
const float  randu,
const float  randv,
const float3  P,
const uint32_t  path_flag,
ccl_private LightSample ls 
)

◆ light_sample_from_distant_ray()

ccl_device bool light_sample_from_distant_ray ( KernelGlobals  kg,
const float3  ray_D,
const int  lamp,
ccl_private LightSample *ccl_restrict  ls 
)

◆ light_sample_from_intersection()

ccl_device bool light_sample_from_intersection ( KernelGlobals  kg,
ccl_private const Intersection *ccl_restrict  isect,
const float3  ray_P,
const float3  ray_D,
ccl_private LightSample *ccl_restrict  ls 
)

◆ light_select_reached_max_bounces()

ccl_device_inline bool light_select_reached_max_bounces ( KernelGlobals  kg,
int  index,
int  bounce 
)

Definition at line 884 of file kernel/light/light.h.

References kernel_data_fetch.

Referenced by light_distribution_sample().

◆ lights_intersect()

ccl_device bool lights_intersect ( KernelGlobals  kg,
IntegratorState  state,
ccl_private const Ray *ccl_restrict  ray,
ccl_private Intersection *ccl_restrict  isect,
const int  last_prim,
const int  last_object,
const int  last_type,
const uint32_t  path_flag 
)

◆ triangle_light_pdf()

ccl_device_forceinline float triangle_light_pdf ( KernelGlobals  kg,
ccl_private const ShaderData sd,
float  t 
)

◆ triangle_light_pdf_area()

ccl_device_inline float triangle_light_pdf_area ( KernelGlobals  kg,
const float3  Ng,
const float3  I,
float  t 
)

Definition at line 601 of file kernel/light/light.h.

References blender::math::dot(), fabsf, I, kernel_data, and t.

Referenced by triangle_light_pdf(), and triangle_light_sample().

◆ triangle_light_sample()

template<bool in_volume_segment>
ccl_device_forceinline void triangle_light_sample ( KernelGlobals  kg,
int  prim,
int  object,
float  randu,
float  randv,
float  time,
ccl_private LightSample ls,
const float3  P 
)

◆ triangle_world_space_vertices()

ccl_device_inline bool triangle_world_space_vertices ( KernelGlobals  kg,
int  object,
int  prim,
float  time,
float3  V[3] 
)