diff options
author | Pekka Paalanen <pekka.paalanen@collabora.com> | 2021-02-09 13:27:36 +0200 |
---|---|---|
committer | Pekka Paalanen <pekka.paalanen@collabora.com> | 2021-02-25 14:36:46 +0200 |
commit | 2b5a863974e7e65634dc96ab0652697cf73a0eb3 (patch) | |
tree | 14bb84f5e2ab9f90aadf22858e723ab309b94dce | |
parent | 3f6be39f94c87f52616d0b0155424f0bd898b90f (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.glsl | 15 |
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; |