diff options
author | nyorain <nyorain@gmail.com> | 2021-02-21 18:30:12 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2021-10-18 11:51:13 +0200 |
commit | 8e346922508aa3eaccd6e12f2917f6574f349843 (patch) | |
tree | 550742b8a086287b6d478db1ade14b2cc4a21294 /render/vulkan/shaders/texture.frag | |
parent | 2edf468aeb7d4703aa211cea3b58f04cbc73298c (diff) |
render/vulkan: add Vulkan renderer
This new renderer is implemented with the existing wlr_renderer API
(which is known to be sub-optimal for some operations). It's not
used by default, but users can opt-in by setting WLR_RENDERER=vulkan.
The renderer depends on VK_EXT_image_drm_format_modifier and
VK_EXT_physical_device_drm.
Co-authored-by: Simon Ser <contact@emersion.fr>
Co-authored-by: Jan Beich <jbeich@FreeBSD.org>
Diffstat (limited to 'render/vulkan/shaders/texture.frag')
-rw-r--r-- | render/vulkan/shaders/texture.frag | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/render/vulkan/shaders/texture.frag b/render/vulkan/shaders/texture.frag new file mode 100644 index 00000000..7a7b8c57 --- /dev/null +++ b/render/vulkan/shaders/texture.frag @@ -0,0 +1,25 @@ +#version 450 + +layout(set = 0, binding = 0) uniform sampler2D tex; + +layout(location = 0) in vec2 uv; +layout(location = 0) out vec4 out_color; + +layout(push_constant) uniform UBO { + layout(offset = 80) float alpha; +} data; + +void main() { + out_color = textureLod(tex, uv, 0); + + // We expect this shader to output pre-alpha-multiplied color values. + // alpha < 0.0 means that this shader should ignore the texture's alpha + // value. + if (data.alpha < 0.0) { + out_color.a = -data.alpha; + out_color.rgb *= -data.alpha; + } else { + out_color *= data.alpha; + } +} + |