Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/integrator/shade_volume.h
| Show First 20 Lines • Show All 1,017 Lines • ▼ Show 20 Lines | #ifdef __VOLUME__ | ||||
| } | } | ||||
| else if (event == VOLUME_PATH_MISSED) { | else if (event == VOLUME_PATH_MISSED) { | ||||
| /* End path. */ | /* End path. */ | ||||
| INTEGRATOR_PATH_TERMINATE(DEVICE_KERNEL_INTEGRATOR_SHADE_VOLUME); | INTEGRATOR_PATH_TERMINATE(DEVICE_KERNEL_INTEGRATOR_SHADE_VOLUME); | ||||
| return; | return; | ||||
| } | } | ||||
| else { | else { | ||||
| /* Continue to background, light or surface. */ | /* Continue to background, light or surface. */ | ||||
| if (isect.prim == PRIM_NONE) { | integrator_intersect_next_kernel_after_volume<DEVICE_KERNEL_INTEGRATOR_SHADE_VOLUME>( | ||||
| INTEGRATOR_PATH_NEXT(DEVICE_KERNEL_INTEGRATOR_SHADE_VOLUME, | kg, state, &isect); | ||||
| DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND); | |||||
| return; | |||||
| } | |||||
| else if (isect.type & PRIMITIVE_LAMP) { | |||||
| INTEGRATOR_PATH_NEXT(DEVICE_KERNEL_INTEGRATOR_SHADE_VOLUME, | |||||
| DEVICE_KERNEL_INTEGRATOR_SHADE_LIGHT); | |||||
| return; | return; | ||||
| } | } | ||||
| else { | |||||
| /* Hit a surface, continue with surface kernel unless terminated. */ | |||||
| const int shader = intersection_get_shader(kg, &isect); | |||||
| const int flags = kernel_tex_fetch(__shaders, shader).flags; | |||||
| integrator_intersect_shader_next_kernel<DEVICE_KERNEL_INTEGRATOR_SHADE_VOLUME>( | |||||
| kg, state, &isect, shader, flags); | |||||
| return; | |||||
| } | |||||
| } | |||||
| #endif /* __VOLUME__ */ | #endif /* __VOLUME__ */ | ||||
| } | } | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||