Commit: 711c2d328aafd2918c30827c69d1d24c9d353f25 Author: Mai Lavelle Date: Tue Nov 14 00:00:24 2017 -0500 Branches: split-kernel-faster-building https://developer.blender.org/rB711c2d328aafd2918c30827c69d1d24c9d353f25
Cycles: Split the indirect_background function =================================================================== M intern/cycles/kernel/kernel_emission.h =================================================================== diff --git a/intern/cycles/kernel/kernel_emission.h b/intern/cycles/kernel/kernel_emission.h index 65ed8edea9c..4b693a274b7 100644 --- a/intern/cycles/kernel/kernel_emission.h +++ b/intern/cycles/kernel/kernel_emission.h @@ -351,10 +351,11 @@ ccl_device_noinline bool indirect_lamp_emission(KernelGlobals *kg, /* Indirect Background */ -ccl_device_noinline float3 indirect_background(KernelGlobals *kg, +ccl_device_noinline bool indirect_background_setup(KernelGlobals *kg, ShaderData *emission_sd, ccl_addr_space PathState *state, - ccl_addr_space Ray *ray) + ccl_addr_space Ray *ray, + ShaderEvalTask *eval_task) { #ifdef __BACKGROUND__ int shader = kernel_data.background.surface_shader; @@ -367,7 +368,7 @@ ccl_device_noinline float3 indirect_background(KernelGlobals *kg, ((shader & SHADER_EXCLUDE_TRANSMIT) && (state->flag & PATH_RAY_TRANSMIT)) || ((shader & SHADER_EXCLUDE_CAMERA) && (state->flag & PATH_RAY_CAMERA)) || ((shader & SHADER_EXCLUDE_SCATTER) && (state->flag & PATH_RAY_VOLUME_SCATTER))) - return make_float3(0.0f, 0.0f, 0.0f); + return false; } /* evaluate background closure */ @@ -376,13 +377,25 @@ ccl_device_noinline float3 indirect_background(KernelGlobals *kg, shader_setup_from_background(kg, emission_sd, &priv_ray); # else shader_setup_from_background(kg, emission_sd, ray); -# endif +# endif /* __SPLIT_KERNEL__ */ path_state_modify_bounce(state, true); - float3 L = shader_eval_background(kg, emission_sd, state, state->flag); + shader_eval_task_setup(kg, eval_task, emission_sd, SHADER_EVAL_INTENT_BACKGROUND, state->flag, 0); +#endif /* __BACKGROUND__ */ + return true; +} + +ccl_device_noinline float3 indirect_background_finish(KernelGlobals *kg, + ShaderData *emission_sd, + ccl_addr_space PathState *state, + ccl_addr_space Ray *ray, + ShaderEvalTask *eval_task) +{ +#ifdef __BACKGROUND__ + float3 L = eval_task->eval_result; path_state_modify_bounce(state, false); -#ifdef __BACKGROUND_MIS__ +# ifdef __BACKGROUND_MIS__ /* check if background light exists or if we should skip pdf */ int res = kernel_data.integrator.pdf_background_res; @@ -394,12 +407,29 @@ ccl_device_noinline float3 indirect_background(KernelGlobals *kg, return L*mis_weight; } -#endif +# endif /* __BACKGROUND_MIS__ */ return L; #else return make_float3(0.8f, 0.8f, 0.8f); -#endif +#endif /* __BACKGROUND__ */ +} + +ccl_device_noinline float3 indirect_background(KernelGlobals *kg, + ShaderData *emission_sd, + ccl_addr_space PathState *state, + ccl_addr_space Ray *ray) +{ +#ifdef __BACKGROUND__ + MAKE_POINTER_TO_LOCAL_OBJ(ShaderEvalTask, shader_eval_task); + if(!indirect_background_setup(kg, emission_sd, state, ray, shader_eval_task)) { + return make_float3(0.0f, 0.0f, 0.0f); + } + shader_eval(kg, emission_sd, state, shader_eval_task); + return indirect_background_finish(kg, emission_sd, state, ray, shader_eval_task); +#else + return make_float3(0.8f, 0.8f, 0.8f); +#endif /* __BACKGROUND__ */ } CCL_NAMESPACE_END _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs