Blender V4.3
device/kernel.cpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#include "device/kernel.h"
6
7#ifndef __KERNEL_ONEAPI__
8# include "util/log.h"
9#endif
10
12
27
38
40{
41 switch (kernel) {
42 /* Integrator. */
44 return "integrator_init_from_camera";
46 return "integrator_init_from_bake";
48 return "integrator_intersect_closest";
50 return "integrator_intersect_shadow";
52 return "integrator_intersect_subsurface";
54 return "integrator_intersect_volume_stack";
56 return "integrator_intersect_dedicated_light";
58 return "integrator_shade_background";
60 return "integrator_shade_light";
62 return "integrator_shade_shadow";
64 return "integrator_shade_surface";
66 return "integrator_shade_surface_raytrace";
68 return "integrator_shade_surface_mnee";
70 return "integrator_shade_volume";
72 return "integrator_shade_dedicated_light";
74 return "integrator_megakernel";
76 return "integrator_queued_paths_array";
78 return "integrator_queued_shadow_paths_array";
80 return "integrator_active_paths_array";
82 return "integrator_terminated_paths_array";
84 return "integrator_sorted_paths_array";
86 return "integrator_sort_bucket_pass";
88 return "integrator_sort_write_pass";
90 return "integrator_compact_paths_array";
92 return "integrator_compact_states";
94 return "integrator_terminated_shadow_paths_array";
96 return "integrator_compact_shadow_paths_array";
98 return "integrator_compact_shadow_states";
100 return "integrator_reset";
102 return "integrator_shadow_catcher_count_possible_splits";
103
104 /* Shader evaluation. */
106 return "shader_eval_displace";
108 return "shader_eval_background";
110 return "shader_eval_curve_shadow_transparency";
111
112 /* Film. */
113
114#define FILM_CONVERT_KERNEL_AS_STRING(variant, variant_lowercase) \
115 case DEVICE_KERNEL_FILM_CONVERT_##variant: \
116 return "film_convert_" #variant_lowercase; \
117 case DEVICE_KERNEL_FILM_CONVERT_##variant##_HALF_RGBA: \
118 return "film_convert_" #variant_lowercase "_half_rgba";
119
122 FILM_CONVERT_KERNEL_AS_STRING(SAMPLE_COUNT, sample_count)
124 FILM_CONVERT_KERNEL_AS_STRING(LIGHT_PATH, light_path)
126 FILM_CONVERT_KERNEL_AS_STRING(MOTION, motion)
127 FILM_CONVERT_KERNEL_AS_STRING(CRYPTOMATTE, cryptomatte)
128 FILM_CONVERT_KERNEL_AS_STRING(SHADOW_CATCHER, shadow_catcher)
129 FILM_CONVERT_KERNEL_AS_STRING(SHADOW_CATCHER_MATTE_WITH_SHADOW,
130 shadow_catcher_matte_with_shadow)
131 FILM_CONVERT_KERNEL_AS_STRING(COMBINED, combined)
133
134#undef FILM_CONVERT_KERNEL_AS_STRING
135
136 /* Adaptive sampling. */
138 return "adaptive_sampling_convergence_check";
140 return "adaptive_sampling_filter_x";
142 return "adaptive_sampling_filter_y";
143
144 /* Denoising. */
146 return "filter_guiding_preprocess";
148 return "filter_guiding_set_fake_albedo";
150 return "filter_color_preprocess";
152 return "filter_color_postprocess";
153
154 /* Cryptomatte. */
156 return "cryptomatte_postprocess";
157
158 /* Generic */
160 return "prefix_sum";
161
163 break;
164 };
165#ifndef __KERNEL_ONEAPI__
166 LOG(FATAL) << "Unhandled kernel " << static_cast<int>(kernel) << ", should never happen.";
167#endif
168 return "UNKNOWN";
169}
170
171#ifndef __KERNEL_ONEAPI__
172std::ostream &operator<<(std::ostream &os, DeviceKernel kernel)
173{
174 os << device_kernel_as_string(kernel);
175 return os;
176}
177
179{
180 string str;
181
182 for (uint64_t i = 0; i < sizeof(DeviceKernelMask) * 8; i++) {
183 if (mask & (uint64_t(1) << i)) {
184 if (!str.empty()) {
185 str += " ";
186 }
188 }
189 }
190
191 return str;
192}
193#endif
194
#define CCL_NAMESPACE_END
CCL_NAMESPACE_BEGIN bool device_kernel_has_shading(DeviceKernel kernel)
bool device_kernel_has_intersection(DeviceKernel kernel)
string device_kernel_mask_as_string(DeviceKernelMask mask)
const char * device_kernel_as_string(DeviceKernel kernel)
std::ostream & operator<<(std::ostream &os, DeviceKernel kernel)
#define FILM_CONVERT_KERNEL_AS_STRING(variant, variant_lowercase)
uint64_t DeviceKernelMask
#define str(s)
DeviceKernel
@ DEVICE_KERNEL_ADAPTIVE_SAMPLING_CONVERGENCE_CHECK
@ DEVICE_KERNEL_INTEGRATOR_RESET
@ DEVICE_KERNEL_INTEGRATOR_QUEUED_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_SHADE_LIGHT
@ DEVICE_KERNEL_INTEGRATOR_SHADE_DEDICATED_LIGHT
@ DEVICE_KERNEL_FILTER_COLOR_PREPROCESS
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE
@ DEVICE_KERNEL_INTEGRATOR_SORT_WRITE_PASS
@ DEVICE_KERNEL_SHADER_EVAL_DISPLACE
@ DEVICE_KERNEL_INTEGRATOR_SHADOW_CATCHER_COUNT_POSSIBLE_SPLITS
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_SUBSURFACE
@ DEVICE_KERNEL_INTEGRATOR_QUEUED_SHADOW_PATHS_ARRAY
@ DEVICE_KERNEL_FILTER_GUIDING_SET_FAKE_ALBEDO
@ DEVICE_KERNEL_FILTER_COLOR_POSTPROCESS
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SHADOW
@ DEVICE_KERNEL_INTEGRATOR_TERMINATED_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_VOLUME_STACK
@ DEVICE_KERNEL_SHADER_EVAL_BACKGROUND
@ DEVICE_KERNEL_INTEGRATOR_SORTED_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_COMPACT_SHADOW_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_COMPACT_SHADOW_STATES
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE_RAYTRACE
@ DEVICE_KERNEL_INTEGRATOR_SORT_BUCKET_PASS
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_DEDICATED_LIGHT
@ DEVICE_KERNEL_FILTER_GUIDING_PREPROCESS
@ DEVICE_KERNEL_INTEGRATOR_COMPACT_STATES
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE_MNEE
@ DEVICE_KERNEL_INTEGRATOR_TERMINATED_SHADOW_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_MEGAKERNEL
@ DEVICE_KERNEL_NUM
@ DEVICE_KERNEL_INTEGRATOR_ACTIVE_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_INIT_FROM_CAMERA
@ DEVICE_KERNEL_ADAPTIVE_SAMPLING_CONVERGENCE_FILTER_Y
@ DEVICE_KERNEL_ADAPTIVE_SAMPLING_CONVERGENCE_FILTER_X
@ DEVICE_KERNEL_CRYPTOMATTE_POSTPROCESS
@ DEVICE_KERNEL_INTEGRATOR_COMPACT_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_INIT_FROM_BAKE
@ DEVICE_KERNEL_SHADER_EVAL_CURVE_SHADOW_TRANSPARENCY
@ DEVICE_KERNEL_INTEGRATOR_SHADE_VOLUME
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_SHADOW
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_CLOSEST
@ DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND
@ DEVICE_KERNEL_PREFIX_SUM
#define LOG(severity)
Definition log.h:33
@ FLOAT4
@ FLOAT3
@ FLOAT
unsigned __int64 uint64_t
Definition stdint.h:90