]> git.sesse.net Git - movit/blobdiff - colorspace_conversion_effect.cpp
Support conversion to and from the XYZ color space.
[movit] / colorspace_conversion_effect.cpp
index 4688b8cff8726f61d149da8c578cd2f20110abd7..2f74a2785ec49a84bfe518f9b2b99cc07ef6f8c9 100644 (file)
@@ -25,6 +25,13 @@ ColorSpaceConversionEffect::ColorSpaceConversionEffect()
 
 void get_xyz_matrix(ColorSpace space, Matrix3x3 m)
 {
+       if (space == COLORSPACE_XYZ) {
+               m[0] = 1.0f; m[3] = 0.0f; m[6] = 0.0f;
+               m[1] = 0.0f; m[4] = 1.0f; m[7] = 0.0f;
+               m[2] = 0.0f; m[5] = 0.0f; m[8] = 1.0f;
+               return;
+       }
+
        double x_R, x_G, x_B;
        double y_R, y_G, y_B;
        double Y_R, Y_G, Y_B;
@@ -91,8 +98,8 @@ std::string ColorSpaceConversionEffect::output_fragment_shader()
                "    %.8f, %.8f, %.8f,\n"
                "    %.8f, %.8f, %.8f,\n"
                "    %.8f, %.8f, %.8f);\n\n",
-               m[0], m[3], m[6],
-               m[1], m[4], m[7],
-               m[2], m[5], m[8]);
-       return buf + read_file("colorspace_conversion_effect.glsl");
+               m[0], m[1], m[2],
+               m[3], m[4], m[5],
+               m[6], m[7], m[8]);
+       return buf + read_file("colorspace_conversion_effect.frag");
 }