summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPekka Paalanen <pekka.paalanen@collabora.com>2021-02-09 13:27:36 +0200
committerPekka Paalanen <pekka.paalanen@collabora.com>2021-02-25 14:36:46 +0200
commit2b5a863974e7e65634dc96ab0652697cf73a0eb3 (patch)
tree14bb84f5e2ab9f90aadf22858e723ab309b94dce
parent3f6be39f94c87f52616d0b0155424f0bd898b90f (diff)
gl-renderer: move view alpha out of sample_input_texture()
Sampling input texture has nothing to do with view alpha. This clarifies the code structure. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
-rw-r--r--libweston/renderer-gl/fragment.glsl15
1 files changed, 7 insertions, 8 deletions
diff --git a/libweston/renderer-gl/fragment.glsl b/libweston/renderer-gl/fragment.glsl
index 0e947e52..ffc138f4 100644
--- a/libweston/renderer-gl/fragment.glsl
+++ b/libweston/renderer-gl/fragment.glsl
@@ -87,20 +87,20 @@ uniform vec4 unicolor;
vec4
sample_input_texture()
{
- vec4 yuva;
+ vec4 yuva = vec4(0.0, 0.0, 0.0, 1.0);
/* Producing RGBA directly */
if (c_variant == SHADER_VARIANT_SOLID)
- return alpha * unicolor;
+ return unicolor;
if (c_variant == SHADER_VARIANT_RGBA ||
c_variant == SHADER_VARIANT_EXTERNAL) {
- return alpha * texture2D(tex, v_texcoord);
+ return texture2D(tex, v_texcoord);
}
if (c_variant == SHADER_VARIANT_RGBX)
- return vec4(alpha * texture2D(tex, v_texcoord).rgb, alpha);
+ return vec4(texture2D(tex, v_texcoord).rgb, 1.0);
/* Requires conversion to RGBA */
@@ -108,21 +108,17 @@ sample_input_texture()
yuva.x = texture2D(tex, v_texcoord).x;
yuva.y = texture2D(tex1, v_texcoord).x;
yuva.z = texture2D(tex2, v_texcoord).x;
- yuva.w = alpha;
} else if (c_variant == SHADER_VARIANT_Y_UV) {
yuva.x = texture2D(tex, v_texcoord).x;
yuva.yz = texture2D(tex1, v_texcoord).rg;
- yuva.w = alpha;
} else if (c_variant == SHADER_VARIANT_Y_XUXV) {
yuva.x = texture2D(tex, v_texcoord).x;
yuva.yz = texture2D(tex1, v_texcoord).ga;
- yuva.w = alpha;
} else if (c_variant == SHADER_VARIANT_XYUV) {
yuva.xyz = texture2D(tex, v_texcoord).bgr;
- yuva.w = alpha;
} else {
/* Never reached, bad variant value. */
@@ -140,6 +136,9 @@ main()
/* Electrical (non-linear) RGBA values, pre-multiplied */
color = sample_input_texture();
+ /* View alpha (opacity) */
+ color *= alpha;
+
if (c_green_tint)
color = vec4(0.0, 0.3, 0.0, 0.2) + color * 0.8;