During my work I had to implement different plugins for a real-time compositor software used by Department of Control Engineering and Information Technology. Because of its real-time behavior I needed to implement the most important part of my modules in shaders. Because of this I learnt a lot about OpenGL and it’s shader language, GLSL.
First I had to implement a module, where the user can manipulate the properties (saturation, contrast, gamma, gain, value, hue) of different tones (shadows, midtones, highlights) of the input picture.
Another plugin was a color replacement module, which can be used for manipulating the same properties as mentioned before of a color interval defined by the user. It also has uniformity feature, which means the main properties of the colors in the color interval can be set closer to the selected color.
The last module I implemented provides the possibility of using look-up tables to recolor the output. There are numerous file formats, but because of its simplicity and its popularity I’ve chosen the .cube format to support in my module.
I also had to check on how to improve the quality of an implemented chroma keyer module.