Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/integrator/shade_background.h
| Show First 20 Lines • Show All 186 Lines • ▼ Show 20 Lines | ccl_device void integrator_shade_background(KernelGlobals kg, | ||||
| PROFILING_INIT(kg, PROFILING_SHADE_LIGHT_SETUP); | PROFILING_INIT(kg, PROFILING_SHADE_LIGHT_SETUP); | ||||
| /* TODO: unify these in a single loop to only have a single shader evaluation call. */ | /* TODO: unify these in a single loop to only have a single shader evaluation call. */ | ||||
| integrate_distant_lights(kg, state, render_buffer); | integrate_distant_lights(kg, state, render_buffer); | ||||
| integrate_background(kg, state, render_buffer); | integrate_background(kg, state, render_buffer); | ||||
| #ifdef __SHADOW_CATCHER__ | #ifdef __SHADOW_CATCHER__ | ||||
| if (INTEGRATOR_STATE(state, path, flag) & PATH_RAY_SHADOW_CATCHER_BACKGROUND) { | if (INTEGRATOR_STATE(state, path, flag) & PATH_RAY_SHADOW_CATCHER_BACKGROUND) { | ||||
| /* Special case for shadow catcher where we want to fill the background pass | |||||
| * behind the shadow catcher but also continue tracing the path. */ | |||||
| INTEGRATOR_STATE_WRITE(state, path, flag) &= ~PATH_RAY_SHADOW_CATCHER_BACKGROUND; | INTEGRATOR_STATE_WRITE(state, path, flag) &= ~PATH_RAY_SHADOW_CATCHER_BACKGROUND; | ||||
| integrator_intersect_next_kernel_after_shadow_catcher_background< | |||||
| const int isect_prim = INTEGRATOR_STATE(state, isect, prim); | DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND>(kg, state); | ||||
| const int isect_type = INTEGRATOR_STATE(state, isect, type); | |||||
| const int shader = intersection_get_shader_from_isect_prim(kg, isect_prim, isect_type); | |||||
| const int shader_flags = kernel_tex_fetch(__shaders, shader).flags; | |||||
| if (shader_flags & SD_HAS_RAYTRACE) { | |||||
| INTEGRATOR_PATH_NEXT_SORTED(DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND, | |||||
| DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE_RAYTRACE, | |||||
| shader); | |||||
| } | |||||
| else { | |||||
| INTEGRATOR_PATH_NEXT_SORTED(DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND, | |||||
| DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE, | |||||
| shader); | |||||
| } | |||||
| return; | return; | ||||
| } | } | ||||
| #endif | #endif | ||||
| INTEGRATOR_PATH_TERMINATE(DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND); | INTEGRATOR_PATH_TERMINATE(DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND); | ||||
| } | } | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||