Blender V4.3
megakernel.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#pragma once
6
19
21
25{
26 /* Each kernel indicates the next kernel to execute, so here we simply
27 * have to check what that kernel is and execute it. */
28 while (true) {
29 /* Handle any shadow paths before we potentially create more shadow paths. */
30 const uint32_t shadow_queued_kernel = INTEGRATOR_STATE(
31 &state->shadow, shadow_path, queued_kernel);
32 if (shadow_queued_kernel) {
33 switch (shadow_queued_kernel) {
36 break;
39 break;
40 default:
42 break;
43 }
44 continue;
45 }
46
47 /* Handle any AO paths before we potentially create more AO paths. */
48 const uint32_t ao_queued_kernel = INTEGRATOR_STATE(&state->ao, shadow_path, queued_kernel);
49 if (ao_queued_kernel) {
50 switch (ao_queued_kernel) {
53 break;
56 break;
57 default:
59 break;
60 }
61 continue;
62 }
63
64 /* Then handle regular path kernels. */
65 const uint32_t queued_kernel = INTEGRATOR_STATE(state, path, queued_kernel);
66 if (queued_kernel) {
67 switch (queued_kernel) {
70 break;
73 break;
76 break;
79 break;
82 break;
85 break;
88 break;
91 break;
94 break;
97 break;
100 break;
101 default:
102 kernel_assert(0);
103 break;
104 }
105 continue;
106 }
107
108 break;
109 }
110}
111
#define kernel_assert(cond)
const KernelGlobalsCPU *ccl_restrict KernelGlobals
#define ccl_restrict
#define ccl_device
#define ccl_global
#define CCL_NAMESPACE_END
ccl_device void integrator_intersect_closest(KernelGlobals kg, IntegratorState state, ccl_global float *ccl_restrict render_buffer)
CCL_NAMESPACE_BEGIN ccl_device void integrator_intersect_dedicated_light(KernelGlobals kg, IntegratorState state)
ccl_device void integrator_intersect_shadow(KernelGlobals kg, IntegratorShadowState state)
CCL_NAMESPACE_BEGIN ccl_device void integrator_intersect_subsurface(KernelGlobals kg, IntegratorState state)
ccl_device void integrator_intersect_volume_stack(KernelGlobals kg, IntegratorState state)
ccl_gpu_kernel_postfix ccl_global KernelWorkTile const int ccl_global float * render_buffer
@ DEVICE_KERNEL_INTEGRATOR_SHADE_LIGHT
@ DEVICE_KERNEL_INTEGRATOR_SHADE_DEDICATED_LIGHT
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_SUBSURFACE
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SHADOW
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_VOLUME_STACK
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE_RAYTRACE
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_DEDICATED_LIGHT
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE_MNEE
@ DEVICE_KERNEL_INTEGRATOR_SHADE_VOLUME
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_SHADOW
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_CLOSEST
@ DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND
static ulong state[N]
CCL_NAMESPACE_BEGIN ccl_device void integrator_megakernel(KernelGlobals kg, IntegratorState state, ccl_global float *ccl_restrict render_buffer)
Definition megakernel.h:22
ccl_device void integrator_shade_background(KernelGlobals kg, IntegratorState state, ccl_global float *ccl_restrict render_buffer)
CCL_NAMESPACE_BEGIN ccl_device void integrator_shade_dedicated_light(KernelGlobals kg, IntegratorState state, ccl_global float *ccl_restrict render_buffer)
ccl_device void integrator_shade_light(KernelGlobals kg, IntegratorState state, ccl_global float *ccl_restrict render_buffer)
Definition shade_light.h:65
ccl_device void integrator_shade_shadow(KernelGlobals kg, IntegratorShadowState state, ccl_global float *ccl_restrict render_buffer)
ccl_device_forceinline void integrator_shade_surface(KernelGlobals kg, IntegratorState state, ccl_global float *ccl_restrict render_buffer)
ccl_device_forceinline void integrator_shade_surface_mnee(KernelGlobals kg, IntegratorState state, ccl_global float *ccl_restrict render_buffer)
ccl_device_forceinline void integrator_shade_surface_raytrace(KernelGlobals kg, IntegratorState state, ccl_global float *ccl_restrict render_buffer)
CCL_NAMESPACE_BEGIN ccl_device void integrator_shade_volume(KernelGlobals kg, IntegratorState state, ccl_global float *ccl_restrict render_buffer)
IntegratorStateCPU *ccl_restrict IntegratorState
Definition state.h:228
#define INTEGRATOR_STATE(state, nested_struct, member)
Definition state.h:235
unsigned int uint32_t
Definition stdint.h:80