summaryrefslogtreecommitdiff
path: root/src/qcam/assets/shader/YUV_3_planes.frag
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-09-16 16:23:27 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-10-04 22:51:45 +0300
commit440028d6c9a2e98234a71fee79c55791e1d2af2f (patch)
tree759442f16b82d06e81971a3f4df2aeabbe923c0e /src/qcam/assets/shader/YUV_3_planes.frag
parent079afd17e7d8775efc809ec9ca4c6a3fcb4d2763 (diff)
qcam: viewfinder_gl: Rename shader files
Rename shader files to prepare for packed YUYV support: - The NV prefix isn't a good match for packed (or for 3-planar) formats, replace it with a YUV prefix - Use .frag and .vert extensions to differentiate between fragment and vertex shaders Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'src/qcam/assets/shader/YUV_3_planes.frag')
-rw-r--r--src/qcam/assets/shader/YUV_3_planes.frag33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/qcam/assets/shader/YUV_3_planes.frag b/src/qcam/assets/shader/YUV_3_planes.frag
new file mode 100644
index 00000000..2be74b5d
--- /dev/null
+++ b/src/qcam/assets/shader/YUV_3_planes.frag
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2020, Linaro
+ *
+ * YUV_3_planes_UV.frag - Fragment shader code for YUV420 format
+ */
+
+#ifdef GL_ES
+precision mediump float;
+#endif
+
+varying vec2 textureOut;
+uniform sampler2D tex_y;
+uniform sampler2D tex_u;
+uniform sampler2D tex_v;
+
+void main(void)
+{
+ vec3 yuv;
+ vec3 rgb;
+ mat3 yuv2rgb_bt601_mat = mat3(
+ vec3(1.164, 1.164, 1.164),
+ vec3(0.000, -0.392, 2.017),
+ vec3(1.596, -0.813, 0.000)
+ );
+
+ yuv.x = texture2D(tex_y, textureOut).r - 0.063;
+ yuv.y = texture2D(tex_u, textureOut).r - 0.500;
+ yuv.z = texture2D(tex_v, textureOut).r - 0.500;
+
+ rgb = yuv2rgb_bt601_mat * yuv;
+ gl_FragColor = vec4(rgb, 1.0);
+}