1 __kernel void gegl_video_degradation
(__global const float4
*input
,
2 __global float4
*output
,
3 __global const int
*pattern
,
9 const size_t gidx
= get_global_id
(0);
10 const size_t gidy
= get_global_id
(1);
11 const size_t gid
= gidx - get_global_offset
(0) +
12 (gidy - get_global_offset
(1)) *
14 const float4 indata
= input
[gid];
16 /* Get channel to keep in this input pixel */
17 const int sel_b = pattern[rotated ? pat_w * (gidx % pat_h) + gidy % pat_w:
18 pat_w * (gidy % pat_h) + gidx % pat_w];
20 /* Mask channels according to sel_b variable */
21 float4 value = select(0.f, indata, sel_b == (int4)(0, 1, 2, 3));
23 /* Add original pixel if enabled */
25 value = fmin(value + indata, 1.0f);
27 /* Maintain original alpha channel */