libcamera: shaders: Add support for Gamma
Add gamma compensation 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> Reviewed-by: Milan Zamazal <mzamazal@redhat.com> Tested-by: Robert Mader <robert.mader@collabora.com> Tested-by: Hans de Goede <johannes.goede@oss.qualcomm.com> # ThinkPad T14s gen 6 (arm64) ov02c10 + X1c gen 12 ov08x40 Tested-by: Kieran Bingham <kieran.bingham@ideasonboard.com> # Lenovo X13s Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
committed by
Kieran Bingham
parent
6029dcf9a6
commit
46aac79a44
@@ -67,6 +67,7 @@ uniform vec2 tex_bayer_first_red;
|
||||
uniform sampler2D tex_y;
|
||||
uniform mat3 ccm;
|
||||
uniform vec3 blacklevel;
|
||||
uniform float gamma;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
@@ -260,6 +261,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));
|
||||
|
||||
#if defined (SWAP_BLUE)
|
||||
gl_FragColor = vec4(rgb.bgr, 1.0);
|
||||
#else
|
||||
|
||||
@@ -26,6 +26,7 @@ varying vec4 yCoord;
|
||||
varying vec4 xCoord;
|
||||
uniform mat3 ccm;
|
||||
uniform vec3 blacklevel;
|
||||
uniform float gamma;
|
||||
|
||||
void main(void) {
|
||||
vec3 rgb;
|
||||
@@ -155,6 +156,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));
|
||||
|
||||
#if defined (SWAP_BLUE)
|
||||
gl_FragColor = vec4(rgb.bgr, 1.0);
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user