]> git.sesse.net Git - casparcg/blobdiff - core/mixer/image/blending_glsl.h
2.0. - blend_modes are re-enabled.
[casparcg] / core / mixer / image / blending_glsl.h
index a1072aa2cf9b7302c1cc65d914c365bd6e2e7b04..86b4b9613b10fb925529b175c0b1058092819061 100644 (file)
@@ -1,5 +1,49 @@
 #pragma once\r
 \r
+static std::string get_adjustement_glsl()\r
+{\r
+       return                                                                                                                                                                                                                                                                                                                                                                                                                                          \r
+               "\n     /*                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
+               "\n     ** Contrast, saturation, brightness                                                                                                                                                                                                                                                                                                                                                              "\r
+               "\n     ** Code of this function is from TGM's shader pack                                                                                                                                                                                                                                                                                                                                 "\r
+               "\n     ** http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=21057                                                                                                                                                                                                                                                                                                 "\r
+               "\n     */                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
+               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
+               "\n     vec3 ContrastSaturationBrightness(vec3 color, float brt, float sat, float con)                                                                                                                                                                                                                                                                     "\r
+               "\n     {                                                                                                                                                                                                                                                                                                                                                                                                                                  "\r
+               "\n             const float AvgLumR = 0.5;                                                                                                                                                                                                                                                                                                                                                                         "\r
+               "\n             const float AvgLumG = 0.5;                                                                                                                                                                                                                                                                                                                                                                         "\r
+               "\n             const float AvgLumB = 0.5;                                                                                                                                                                                                                                                                                                                                                                         "\r
+               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
+               "\n             const vec3 LumCoeff = vec3(0.2125, 0.7154, 0.0721);                                                                                                                                                                                                                                                                                                                        "\r
+               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
+               "\n             vec3 AvgLumin = vec3(AvgLumR, AvgLumG, AvgLumB);                                                                                                                                                                                                                                                                                                                           "\r
+               "\n             vec3 brtColor = color * brt;                                                                                                                                                                                                                                                                                                                                                               "\r
+               "\n             vec3 intensity = vec3(dot(brtColor, LumCoeff));                                                                                                                                                                                                                                                                                                                            "\r
+               "\n             vec3 satColor = mix(intensity, brtColor, sat);                                                                                                                                                                                                                                                                                                                             "\r
+               "\n             vec3 conColor = mix(AvgLumin, satColor, con);                                                                                                                                                                                                                                                                                                                              "\r
+               "\n             return conColor;                                                                                                                                                                                                                                                                                                                                                                                           "\r
+               "\n     }                                                                                                                                                                                                                                                                                                                                                                                                                                       "\r
+               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
+               "\n     /*                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
+               "\n     ** Gamma correction                                                                                                                                                                                                                                                                                                                                                                                                     "\r
+               "\n     ** Details: http://blog.mouaif.org/2009/01/22/photoshop-gamma-correction-shader/                                                                                                                                                                                                                                                                   "\r
+               "\n     */                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
+               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
+               "\n#define GammaCorrection(color, gamma)                                                                pow(color, vec3(1.0 / gamma))                           \n                                                                                                                                                                                                      "\r
+               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
+               "\n     /*                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
+               "\n     ** Levels control (input (+gamma), output)                                                                                                                                                                                                                                                                                                                                                 "\r
+               "\n     ** Details: http://blog.mouaif.org/2009/01/28/levels-control-shader/                                                                                                                                                                                                                                                                                       "\r
+               "\n     */                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
+               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
+               "\n#define LevelsControlInputRange(color, minInput, maxInput)                           min(max(color - vec3(minInput), vec3(0.0)) / (vec3(maxInput) - vec3(minInput)), vec3(1.0))              \n                                                                                 "\r
+               "\n#define LevelsControlInput(color, minInput, gamma, maxInput)                         GammaCorrection(LevelsControlInputRange(color, minInput, maxInput), gamma)                                      \n                                                                                              "       \r
+               "\n#define LevelsControlOutputRange(color, minOutput, maxOutput)                        mix(vec3(minOutput), vec3(maxOutput), color)                                                                                                                    \n                                                                 "\r
+               "\n#define LevelsControl(color, minInput, gamma, maxInput, minOutput, maxOutput)        LevelsControlOutputRange(LevelsControlInput(color, minInput, gamma, maxInput), minOutput, maxOutput)    \n                                                      "\r
+               ;\r
+}\r
+\r
 static std::string get_blend_glsl()\r
 {\r
        static std::string glsl = \r
@@ -114,28 +158,7 @@ static std::string get_blend_glsl()
                "\n             return rgb;                                                                                                                                                                                                                                                                                                                                                                                                        "\r
                "\n     }                                                                                                                                                                                                                                                                                                                                                                                                                                  "\r
                "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n     /*                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
-               "\n     ** Contrast, saturation, brightness                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n     ** Code of this function is from TGM's shader pack                                                                                                                                                                                                                                                                                                                                 "\r
-               "\n     ** http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=21057                                                                                                                                                                                                                                                                                            "\r
-               "\n     */                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
-               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n     vec3 ContrastSaturationBrightness(vec3 color, float brt, float sat, float con)                                                                                                                                                                                                                                                                     "\r
-               "\n     {                                                                                                                                                                                                                                                                                                                                                                                                                                  "\r
-               "\n             const float AvgLumR = 0.5;                                                                                                                                                                                                                                                                                                                                                                         "\r
-               "\n             const float AvgLumG = 0.5;                                                                                                                                                                                                                                                                                                                                                                         "\r
-               "\n             const float AvgLumB = 0.5;                                                                                                                                                                                                                                                                                                                                                                         "\r
-               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n             const vec3 LumCoeff = vec3(0.2125, 0.7154, 0.0721);                                                                                                                                                                                                                                                                                                                        "\r
-               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n             vec3 AvgLumin = vec3(AvgLumR, AvgLumG, AvgLumB);                                                                                                                                                                                                                                                                                                                           "\r
-               "\n             vec3 brtColor = color * brt;                                                                                                                                                                                                                                                                                                                                                               "\r
-               "\n             vec3 intensity = vec3(dot(brtColor, LumCoeff));                                                                                                                                                                                                                                                                                                                            "\r
-               "\n             vec3 satColor = mix(intensity, brtColor, sat);                                                                                                                                                                                                                                                                                                                             "\r
-               "\n             vec3 conColor = mix(AvgLumin, satColor, con);                                                                                                                                                                                                                                                                                                                              "\r
-               "\n             return conColor;                                                                                                                                                                                                                                                                                                                                                                                           "\r
-               "\n     }                                                                                                                                                                                                                                                                                                                                                                                                                                  "\r
+               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                                "\r
                "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
                "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
                "\n     /*                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
@@ -194,7 +217,6 @@ static std::string get_blend_glsl()
                "\n#define BlendGlow(base, blend)                       BlendReflect(blend, base)                                                                                                                                               \n                                                                                                                                                 "\r
                "\n#define BlendPhoenix(base, blend)                    (min(base, blend) - max(base, blend) + vec3(1.0))                                                                                       \n                                                                                                                                                         "\r
                "\n#define BlendOpacity(base, blend, F, O)      (F(base, blend) * O + blend * (1.0 - O))                                                                                                                \n                                                                                                                                                         "\r
-               "\n#define BlendInvert(base, blend)             (vec3(1.0, 1.0, 1.0) - blend)                                                                                                                                   \n                                                                                                                                                                                                         "\r
                "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
                "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
                "\n     vec3 BlendHue(vec3 base, vec3 blend)                                                                                                                                                                                                                                                                                                                                                       "\r
@@ -220,24 +242,7 @@ static std::string get_blend_glsl()
                "\n             vec3 baseHSL = RGBToHSL(base);                                                                                                                                                                                                                                                                                                                                                             "\r
                "\n             return HSLToRGB(vec3(baseHSL.r, baseHSL.g, RGBToHSL(blend).b));                                                                                                                                                                                                                                                                                            "\r
                "\n     }                                                                                                                                                                                                                                                                                                                                                                                                                                  "\r
-               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n     /*                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
-               "\n     ** Gamma correction                                                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n     ** Details: http://blog.mouaif.org/2009/01/22/photoshop-gamma-correction-shader/                                                                                                                                                                                                                                                                   "\r
-               "\n     */                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
-               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n#define GammaCorrection(color, gamma)                                                                pow(color, 1.0 / gamma)                         \n                                                                                                                                                                                                                 "\r
-               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n     /*                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
-               "\n     ** Levels control (input (+gamma), output)                                                                                                                                                                                                                                                                                                                                                 "\r
-               "\n     ** Details: http://blog.mouaif.org/2009/01/28/levels-control-shader/                                                                                                                                                                                                                                                                                       "\r
-               "\n     */                                                                                                                                                                                                                                                                                                                                                                                                                                 "\r
-               "\n                                                                                                                                                                                                                                                                                                                                                                                                                                        "\r
-               "\n#define LevelsControlInputRange(color, minInput, maxInput)                           min(max(color - vec3(minInput), vec3(0.0)) / (vec3(maxInput) - vec3(minInput)), vec3(1.0))              \n                                                                                 "\r
-               "\n#define LevelsControlInput(color, minInput, gamma, maxInput)                         GammaCorrection(LevelsControlInputRange(color, minInput, maxInput), gamma)                                      \n                                                                                 "\r
-               "\n#define LevelsControlOutputRange(color, minOutput, maxOutput)                        mix(vec3(minOutput), vec3(maxOutput), color)                                                                                                                    \n                                                                 "\r
-               "\n#define LevelsControl(color, minInput, gamma, maxInput, minOutput, maxOutput)        LevelsControlOutputRange(LevelsControlInput(color, minInput, gamma, maxInput), minOutput, maxOutput)    \n                                                 "\r
+               "\n                                                                                                                                                                                                                                                                                                                                                                                                        "\r
                ;\r
                                                                                                                                                                                                                                                                                                                                                                                                                                                   \r
                return glsl;\r