diff options
Diffstat (limited to 'src/compositor/shaders/surface_y_uv.frag')
-rw-r--r-- | src/compositor/shaders/surface_y_uv.frag | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/src/compositor/shaders/surface_y_uv.frag b/src/compositor/shaders/surface_y_uv.frag index e3fbcdf8d..42b614882 100644 --- a/src/compositor/shaders/surface_y_uv.frag +++ b/src/compositor/shaders/surface_y_uv.frag @@ -1,17 +1,29 @@ -uniform highp sampler2D tex0; -uniform highp sampler2D tex1; -varying highp vec2 v_texcoord; -uniform lowp float qt_Opacity; +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only -void main() { - float y = 1.16438356 * (texture2D(tex0, v_texcoord).x - 0.0625); - float u = texture2D(tex1, v_texcoord).r - 0.5; - float v = texture2D(tex1, v_texcoord).g - 0.5; - y *= qt_Opacity; - u *= qt_Opacity; - v *= qt_Opacity; - gl_FragColor.r = y + 1.59602678 * v; - gl_FragColor.g = y - 0.39176229 * u - 0.81296764 * v; - gl_FragColor.b = y + 2.01723214 * u; - gl_FragColor.a = qt_Opacity; +#version 440 + +layout(location = 0) in vec2 v_texcoord; +layout(location = 0) out vec4 fragColor; + +layout(std140, binding = 0) uniform buf { + mat4 qt_Matrix; + float qt_Opacity; +}; + +layout(binding = 1) uniform sampler2D tex0; +layout(binding = 2) uniform sampler2D tex1; + +void main() +{ + float y = 1.16438356 * (texture(tex0, v_texcoord).x - 0.0625); + float u = texture(tex1, v_texcoord).r - 0.5; + float v = texture(tex1, v_texcoord).g - 0.5; + y *= qt_Opacity; + u *= qt_Opacity; + v *= qt_Opacity; + fragColor.r = y + 1.59602678 * v; + fragColor.g = y - 0.39176229 * u - 0.81296764 * v; + fragColor.b = y + 2.01723214 * u; + fragColor.a = qt_Opacity; } |