diff options
author | Brecht Van Lommel <brecht> | 2021-10-17 17:10:10 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-10-18 20:02:10 +0300 |
commit | 1df3b51988852fa8ee6b530a64aa23346db9acd4 (patch) | |
tree | dd79dba4c8ff8bb8474cc399e9d1b308d845e0cb /intern/cycles/kernel/kernel_emission.h | |
parent | 44c3bb729be42d6d67eaf8918d7cbcb2ff0b315d (diff) |
Cycles: replace integrator state argument macros
* Rename struct KernelGlobals to struct KernelGlobalsCPU
* Add KernelGlobals, IntegratorState and ConstIntegratorState typedefs
that every device can define in its own way.
* Remove INTEGRATOR_STATE_ARGS and INTEGRATOR_STATE_PASS macros and
replace with these new typedefs.
* Add explicit state argument to INTEGRATOR_STATE and similar macros
In preparation for decoupling main and shadow paths.
Differential Revision: https://developer.blender.org/D12888
Diffstat (limited to 'intern/cycles/kernel/kernel_emission.h')
-rw-r--r-- | intern/cycles/kernel/kernel_emission.h | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/intern/cycles/kernel/kernel_emission.h b/intern/cycles/kernel/kernel_emission.h index 015587ccbbd..8d329b8dac3 100644 --- a/intern/cycles/kernel/kernel_emission.h +++ b/intern/cycles/kernel/kernel_emission.h @@ -25,7 +25,8 @@ CCL_NAMESPACE_BEGIN /* Evaluate shader on light. */ ccl_device_noinline_cpu float3 -light_sample_shader_eval(INTEGRATOR_STATE_ARGS, +light_sample_shader_eval(KernelGlobals kg, + IntegratorState state, ccl_private ShaderData *ccl_restrict emission_sd, ccl_private LightSample *ccl_restrict ls, float time) @@ -73,7 +74,7 @@ light_sample_shader_eval(INTEGRATOR_STATE_ARGS, /* No proper path flag, we're evaluating this for all closures. that's * weak but we'd have to do multiple evaluations otherwise. */ shader_eval_surface<KERNEL_FEATURE_NODE_MASK_SURFACE_LIGHT>( - INTEGRATOR_STATE_PASS, emission_sd, NULL, PATH_RAY_EMISSION); + kg, state, emission_sd, NULL, PATH_RAY_EMISSION); /* Evaluate closures. */ #ifdef __BACKGROUND_MIS__ @@ -105,7 +106,7 @@ ccl_device_inline bool light_sample_is_light(ccl_private const LightSample *ccl_ } /* Early path termination of shadow rays. */ -ccl_device_inline bool light_sample_terminate(ccl_global const KernelGlobals *ccl_restrict kg, +ccl_device_inline bool light_sample_terminate(KernelGlobals kg, ccl_private const LightSample *ccl_restrict ls, ccl_private BsdfEval *ccl_restrict eval, const float rand_terminate) @@ -133,10 +134,8 @@ ccl_device_inline bool light_sample_terminate(ccl_global const KernelGlobals *cc * of a triangle. Surface is lifted by amount h along normal n in the incident * point. */ -ccl_device_inline float3 -shadow_ray_smooth_surface_offset(ccl_global const KernelGlobals *ccl_restrict kg, - ccl_private const ShaderData *ccl_restrict sd, - float3 Ng) +ccl_device_inline float3 shadow_ray_smooth_surface_offset( + KernelGlobals kg, ccl_private const ShaderData *ccl_restrict sd, float3 Ng) { float3 V[3], N[3]; triangle_vertices_and_normals(kg, sd->prim, V, N); @@ -180,7 +179,7 @@ shadow_ray_smooth_surface_offset(ccl_global const KernelGlobals *ccl_restrict kg /* Ray offset to avoid shadow terminator artifact. */ -ccl_device_inline float3 shadow_ray_offset(ccl_global const KernelGlobals *ccl_restrict kg, +ccl_device_inline float3 shadow_ray_offset(KernelGlobals kg, ccl_private const ShaderData *ccl_restrict sd, float3 L) { @@ -247,7 +246,7 @@ ccl_device_inline void shadow_ray_setup(ccl_private const ShaderData *ccl_restri /* Create shadow ray towards light sample. */ ccl_device_inline void light_sample_to_surface_shadow_ray( - ccl_global const KernelGlobals *ccl_restrict kg, + KernelGlobals kg, ccl_private const ShaderData *ccl_restrict sd, ccl_private const LightSample *ccl_restrict ls, ccl_private Ray *ray) @@ -258,7 +257,7 @@ ccl_device_inline void light_sample_to_surface_shadow_ray( /* Create shadow ray towards light sample. */ ccl_device_inline void light_sample_to_volume_shadow_ray( - ccl_global const KernelGlobals *ccl_restrict kg, + KernelGlobals kg, ccl_private const ShaderData *ccl_restrict sd, ccl_private const LightSample *ccl_restrict ls, const float3 P, |