@@ -70,6 +70,7 @@ uniform sampler2D green_param;
uniform sampler2D blue_param;
uniform mat3 ccm;
uniform vec3 blacklevel;
+uniform float gamma;
void main(void)
{
@@ -265,6 +266,9 @@ void main(void)
rgb.g = (rin * ccm[1][0]) + (gin * ccm[1][1]) + (bin * ccm[1][2]);
rgb.b = (rin * ccm[2][0]) + (gin * ccm[2][1]) + (bin * ccm[2][2]);
+ /* Apply gamma after colour correction */
+ rgb = pow(rgb, vec3(gamma));
+
#elif defined(APPLY_RGB_PARAMETERS)
/* Apply bayer params */
rgb.r = texture2D(red_param, vec2(rgb.r, 0.5)).r;
@@ -29,6 +29,7 @@ varying vec4 yCoord;
varying vec4 xCoord;
uniform mat3 ccm;
uniform vec3 blacklevel;
+uniform float gamma;
void main(void) {
vec3 rgb;
@@ -160,6 +161,9 @@ void main(void) {
rgb.g = (rin * ccm[1][0]) + (gin * ccm[1][1]) + (bin * ccm[1][2]);
rgb.b = (rin * ccm[2][0]) + (gin * ccm[2][1]) + (bin * ccm[2][2]);
+ /* Apply gamma after colour correction */
+ rgb = pow(rgb, vec3(gamma));
+
#elif defined(APPLY_RGB_PARAMETERS)
/* Apply bayer params */
rgb.r = texture2D(red_param, vec2(rgb.r, 0.5)).r;
Add gamma compentation to the debayer shaders after colour correction is applied. Similarly only apply the calculated Gamma curve when using the CCM as the lookup tables already contain the data. Suggested-by: Milan Zamazal <mzamazal@redhat.com> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> --- include/libcamera/internal/shaders/bayer_1x_packed.frag | 4 ++++ include/libcamera/internal/shaders/bayer_unpacked.frag | 4 ++++ 2 files changed, 8 insertions(+)