Update Portuguese translation
[gegl.git] / opencl / video-degradation.cl
blob445153c282ea16aa658b812d7fc5b1bbd9908ec0
1 __kernel void gegl_video_degradation (__global const float4 *input,
2 __global float4 *output,
3 __global const int *pattern,
4 const int pat_w,
5 const int pat_h,
6 const int additive,
7 const int rotated)
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)) *
13 get_global_size(0);
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 */
24 if (additive)
25 value = fmin(value + indata, 1.0f);
27 /* Maintain original alpha channel */
28 value.w = indata.w;
30 output[gid] = value;