// mcpro24fps mSLog Extreme to Rec.709 // ver. 2020-04-13 __CONSTANT__ float A = 0.616596; __CONSTANT__ float B = 0.03; __CONSTANT__ float C = 0.31; __CONSTANT__ float D = 0.01026; __CONSTANT__ float E = 1.08; __CONSTANT__ float LEVEL = 18.0; __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 rgb; rgb.x = p_R; rgb.y = p_G; rgb.z = p_B; rgb.x = (_powf(10.0, ((E*rgb.x - A - B) / C)) - D)/LEVEL; rgb.y = (_powf(10.0, ((E*rgb.y - A - B) / C)) - D)/LEVEL; rgb.z = (_powf(10.0, ((E*rgb.z - A - B) / C)) - D)/LEVEL; rgb.x = rgb.x < 0 ? 0 : rgb.x; rgb.y = rgb.y < 0 ? 0 : rgb.y; rgb.z = rgb.z < 0 ? 0 : rgb.z; //Rec.709 rgb.x = rgb.x < 0.018 ? 4.5*rgb.x : 1.099*_powf(rgb.x, 0.45f) - 0.099; rgb.y = rgb.y < 0.018 ? 4.5*rgb.y : 1.099*_powf(rgb.y, 0.45f) - 0.099; rgb.z = rgb.z < 0.018 ? 4.5*rgb.z : 1.099*_powf(rgb.z, 0.45f) - 0.099; return rgb; }