|
Blender V5.0
|
#include "kernel/geom/object.h"#include "kernel/globals.h"#include "kernel/integrator/state.h"#include "kernel/light/area.h"#include "kernel/light/background.h"#include "kernel/light/distant.h"#include "kernel/light/point.h"#include "kernel/light/spot.h"#include "kernel/light/triangle.h"#include "kernel/sample/lcg.h"Go to the source code of this file.
Functions | |
| CCL_NAMESPACE_BEGIN ccl_device_inline bool | light_select_reached_max_bounces (KernelGlobals kg, const int index, const int bounce) |
| ccl_device_inline int | light_link_receiver_nee (KernelGlobals kg, const ccl_private ShaderData *sd) |
| ccl_device_inline int | light_link_receiver_forward (KernelGlobals kg, IntegratorState state) |
| ccl_device_inline bool | light_link_light_match (KernelGlobals kg, const int object_receiver, const int object_emitter) |
| ccl_device_inline bool | light_link_object_match (KernelGlobals kg, const int object_receiver, const int object_emitter) |
| template<bool in_volume_segment> | |
| ccl_device_inline bool | light_sample (KernelGlobals kg, const int lamp, const float2 rand, const float3 P, const float3 N, const int shader_flags, const uint32_t path_flag, ccl_private LightSample *ls) |
| template<bool in_volume_segment> | |
| ccl_device_noinline bool | light_sample (KernelGlobals kg, const float3 rand_light, const float time, const float3 P, const float3 N, const int object_receiver, const int shader_flags, const int bounce, const uint32_t path_flag, ccl_private LightSample *ls) |
| template<bool is_main_path> | |
| ccl_device_forceinline int | lights_intersect_impl (KernelGlobals kg, const ccl_private 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, const uint8_t path_mnee, const int receiver_forward, ccl_private uint *lcg_state, int num_hits) |
| ccl_device bool | lights_intersect (KernelGlobals kg, IntegratorState state, const ccl_private 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 int | lights_intersect_shadow_linked (KernelGlobals kg, const ccl_private 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, const int receiver_forward, ccl_private uint *lcg_state, const int num_hits) |
| ccl_device bool | light_sample_from_intersection (KernelGlobals kg, const ccl_private Intersection *ccl_restrict isect, const float3 ray_P, const float3 ray_D, const float3 N, const uint32_t path_flag, ccl_private LightSample *ccl_restrict ls) |
| ccl_device_inline bool light_link_light_match | ( | KernelGlobals | kg, |
| const int | object_receiver, | ||
| const int | object_emitter ) |
Definition at line 59 of file kernel/light/light.h.
References ccl_device_inline, kernel_data, kernel_data_fetch, KERNEL_FEATURE_LIGHT_LINKING, and OBJECT_NONE.
Referenced by integrate_distant_lights(), and lights_intersect_impl().
| ccl_device_inline bool light_link_object_match | ( | KernelGlobals | kg, |
| const int | object_receiver, | ||
| const int | object_emitter ) |
Definition at line 78 of file kernel/light/light.h.
References ccl_device_inline, kernel_data, kernel_data_fetch, KERNEL_FEATURE_LIGHT_LINKING, and OBJECT_NONE.
Referenced by integrate_surface_emission(), and light_sample().
| ccl_device_inline int light_link_receiver_forward | ( | KernelGlobals | kg, |
| IntegratorState | state ) |
Definition at line 46 of file kernel/light/light.h.
References ccl_device_inline, INTEGRATOR_STATE, kernel_data, KERNEL_FEATURE_LIGHT_LINKING, OBJECT_NONE, and state.
Referenced by integrate_distant_lights(), integrate_surface_emission(), light_sample_mis_weight_forward_background(), light_sample_mis_weight_forward_lamp(), light_sample_mis_weight_forward_surface(), and lights_intersect().
| ccl_device_inline int light_link_receiver_nee | ( | KernelGlobals | kg, |
| const ccl_private ShaderData * | sd ) |
Definition at line 33 of file kernel/light/light.h.
References ccl_device_inline, ccl_private, kernel_data, KERNEL_FEATURE_LIGHT_LINKING, and OBJECT_NONE.
Referenced by integrate_surface_direct_light().
| ccl_device_noinline bool light_sample | ( | KernelGlobals | kg, |
| const float3 | rand_light, | ||
| const float | time, | ||
| const float3 | P, | ||
| const float3 | N, | ||
| const int | object_receiver, | ||
| const int | shader_flags, | ||
| const int | bounce, | ||
| const uint32_t | path_flag, | ||
| ccl_private LightSample * | ls ) |
Definition at line 183 of file kernel/light/light.h.
References ccl_device_noinline, ccl_global, ccl_private, kernel_data, kernel_data_fetch, light_link_object_match(), light_sample(), light_select_reached_max_bounces(), make_float2, N, P, PATH_RAY_SHADOW_CATCHER_PASS, SD_OBJECT_SHADOW_CATCHER, triangle_light_sample(), and UNLIKELY.
| ccl_device_inline bool light_sample | ( | KernelGlobals | kg, |
| const int | lamp, | ||
| const float2 | rand, | ||
| const float3 | P, | ||
| const float3 | N, | ||
| const int | shader_flags, | ||
| const uint32_t | path_flag, | ||
| ccl_private LightSample * | ls ) |
Definition at line 107 of file kernel/light/light.h.
References area_light_sample(), background_light_sample(), ccl_device_inline, ccl_global, ccl_private, D, distant_light_sample(), FLT_MAX, kernel_data_fetch, LIGHT_BACKGROUND, LIGHT_DISTANT, LIGHT_POINT, LIGHT_SPOT, N, object_lightgroup(), P, PATH_RAY_SHADOW_CATCHER_PASS, point_light_sample(), SHADER_EXCLUDE_SHADOW_CATCHER, spot_light_sample(), float2::x, float2::y, and zero_float3().
Referenced by light_sample(), light_sample_from_position(), light_sample_from_volume_segment(), mnee_compute_constraint_derivatives(), and mnee_newton_solver().
| ccl_device bool light_sample_from_intersection | ( | KernelGlobals | kg, |
| const ccl_private Intersection *ccl_restrict | isect, | ||
| const float3 | ray_P, | ||
| const float3 | ray_D, | ||
| const float3 | N, | ||
| const uint32_t | path_flag, | ||
| ccl_private LightSample *ccl_restrict | ls ) |
Definition at line 457 of file kernel/light/light.h.
References area_light_sample_from_intersection(), ccl_device, ccl_global, ccl_private, ccl_restrict, kernel_assert, kernel_data_fetch, LIGHT_AREA, LIGHT_POINT, LIGHT_SPOT, N, object_lightgroup(), point_light_sample_from_intersection(), and spot_light_sample_from_intersection().
Referenced by integrate_light().
| CCL_NAMESPACE_BEGIN ccl_device_inline bool light_select_reached_max_bounces | ( | KernelGlobals | kg, |
| const int | index, | ||
| const int | bounce ) |
Definition at line 24 of file kernel/light/light.h.
References ccl_device_inline, and kernel_data_fetch.
Referenced by light_sample().
| ccl_device bool lights_intersect | ( | KernelGlobals | kg, |
| IntegratorState | state, | ||
| const ccl_private 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 ) |
Definition at line 399 of file kernel/light/light.h.
References ccl_device, ccl_private, ccl_restrict, INTEGRATOR_STATE, light_link_receiver_forward(), lights_intersect_impl(), PRIM_NONE, and state.
Referenced by integrator_intersect_closest().
| ccl_device_forceinline int lights_intersect_impl | ( | KernelGlobals | kg, |
| const ccl_private 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, | ||
| const uint8_t | path_mnee, | ||
| const int | receiver_forward, | ||
| ccl_private uint * | lcg_state, | ||
| int | num_hits ) |
Definition at line 259 of file kernel/light/light.h.
References area_light_intersect(), ccl_device_forceinline, ccl_global, ccl_private, ccl_restrict, distant_light_intersect(), FLT_MAX, kernel_assert, kernel_data, kernel_data_fetch, KERNEL_FEATURE_SHADOW_LINKING, lcg_step_float(), LIGHT_AREA, LIGHT_DISTANT, light_link_light_match(), LIGHT_LINK_MASK_ALL, LIGHT_POINT, LIGHT_SPOT, PATH_MNEE_CULL_LIGHT_CONNECTION, PATH_RAY_CAMERA, PATH_RAY_SHADOW_CATCHER_PASS, point_light_intersect(), PRIM_NONE, PRIMITIVE_LAMP, SHADER_EXCLUDE_CAMERA, SHADER_EXCLUDE_SHADOW_CATCHER, SHADER_USE_MIS, spot_light_intersect(), and v.
Referenced by lights_intersect(), and lights_intersect_shadow_linked().
| ccl_device int lights_intersect_shadow_linked | ( | KernelGlobals | kg, |
| const ccl_private 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, | ||
| const int | receiver_forward, | ||
| ccl_private uint * | lcg_state, | ||
| const int | num_hits ) |
Definition at line 431 of file kernel/light/light.h.
References ccl_device, ccl_private, ccl_restrict, lights_intersect_impl(), and PATH_MNEE_NONE.