// Copyright (c) 2012-2017 VideoStitch SAS
// Copyright (c) 2018 stitchEm
__global__ void checkerBoardKernel(global_mem uint32_t* dst, unsigned width, unsigned height, unsigned checkerSize,
uint32_t color1, uint32_t color2, uint32_t color3) {
unsigned x = get_global_id_x();
unsigned y = get_global_id_y();
float xF = (float)x / (float)width;
float yF = (float)y / (float)height;
float xyR = 1.0f - xF * yF;
uint32_t source_r = Image_RGBA_r(color2);
uint32_t source_g = Image_RGBA_g(color2);
uint32_t source_b = Image_RGBA_b(color2);
uint32_t source_a = Image_RGBA_a(color2);
uint32_t target_r = Image_RGBA_r(color3);
uint32_t target_g = Image_RGBA_g(color3);
uint32_t target_b = Image_RGBA_b(color3);
uint32_t target_a = Image_RGBA_a(color3);
if (x < width && y < height) {
unsigned evenRow = ((x / checkerSize) & 1);
unsigned evenCol = ((y / checkerSize) & 1);
uint32_t mixR = (uint32_t)((1.0f - xF) * (float)source_r + xF * (float)target_r);
uint32_t mixG = (uint32_t)((1.0f - yF) * (float)source_g + yF * (float)target_g);
uint32_t mixB = (uint32_t)((1.0f - xyR) * (float)source_b + xyR * (float)target_b);
uint32_t mixA = (uint32_t)((1.0f - xyR) * (float)source_a + xyR * (float)target_a);
uint32_t colorSet = Image_RGBA_pack(mixR, mixG, mixB, mixA);
dst[y * width + x] = (evenRow ^ evenCol) ? color1 : colorSet;
}
}
-
stitchEm authoredf1d60797