29 for (
int slot = 0; slot < num_slots; slot++) {
31#ifdef __ATOMIC_PASS_WRITE__
37 if (old_id !=
ID_NONE && old_id !=
id) {
45 else if (id_buffer[slot].
x ==
id || slot == num_slots - 1) {
52 id_buffer[slot].x = id;
53 id_buffer[slot].y = weight;
58 if (id_buffer[slot].
x ==
id || slot == num_slots - 1) {
59 id_buffer[slot].y += weight;
69 for (
int slot = 1; slot < num_slots; ++slot) {
75 while (
i > 0 && id_buffer[
i].
y > id_buffer[
i - 1].
y) {
77 id_buffer[
i] = id_buffer[
i - 1];
78 id_buffer[
i - 1] =
swap;
87 const int pixel_index)
89 const int pass_stride =
kernel_data.film.pass_stride;
#define atomic_compare_and_swap_float(p, old_val, new_val)
#define atomic_add_and_fetch_float(p, x)
unsigned long long int uint64_t
ccl_device_inline void film_cryptomatte_post(KernelGlobals kg, ccl_global float *render_buffer, const int pixel_index)
ccl_device_inline void film_write_cryptomatte_slots(ccl_global float *buffer, const int num_slots, const float id, const float weight)
ccl_device_inline void film_sort_cryptomatte_slots(ccl_global float *buffer, const int num_slots)
#define kernel_assert(cond)
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_gpu_kernel_postfix ccl_global KernelWorkTile const int ccl_global float * render_buffer