//GoPro GP-Log2 Input Transform for DaVinci YRGB workflow inside DaVinci Resolve //Protune Rec.2020 to DaVinci Wide Gamut __CONSTANT__ float r2020_to_dwg[3][3] = {{ 0.892112f, 0.024369f, 0.083519f},{0.032617f, 0.786137f, 0.181246f},{0.069977f, 0.104750f, 0.825273f}}; __DEVICE__ float protune_to_linear(float xV) { return ((_powf(600.0f, xV) - 1.0f) / 599.0f); } __DEVICE__ float lin_to_inter(float x) { if(x > 0.00262409f) return (_log2f(x + 0.0075f) + 7.0f) * 0.07329248f; else return x * 10.44426855f; } __DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B) { float3 RGBv; p_R = protune_to_linear(p_R); p_G = protune_to_linear(p_G); p_B = protune_to_linear(p_B); RGBv.x = lin_to_inter(r2020_to_dwg[0][0] * p_R + r2020_to_dwg[0][1] * p_G + r2020_to_dwg[0][2] * p_B); RGBv.y = lin_to_inter(r2020_to_dwg[1][0] * p_R + r2020_to_dwg[1][1] * p_G + r2020_to_dwg[1][2] * p_B); RGBv.z = lin_to_inter(r2020_to_dwg[2][0] * p_R + r2020_to_dwg[2][1] * p_G + r2020_to_dwg[2][2] * p_B); return RGBv; }