summaryrefslogtreecommitdiff
path: root/gsk/vulkan/resources/mask.vert
diff options
context:
space:
mode:
Diffstat (limited to 'gsk/vulkan/resources/mask.vert')
-rw-r--r--gsk/vulkan/resources/mask.vert34
1 files changed, 34 insertions, 0 deletions
diff --git a/gsk/vulkan/resources/mask.vert b/gsk/vulkan/resources/mask.vert
new file mode 100644
index 0000000000..03f0329278
--- /dev/null
+++ b/gsk/vulkan/resources/mask.vert
@@ -0,0 +1,34 @@
+#version 420 core
+
+#include "clip.vert.glsl"
+
+layout(location = 0) in vec4 inRect;
+layout(location = 1) in vec4 inTexRect;
+layout(location = 2) in vec4 inColor;
+
+layout(location = 0) out vec2 outPos;
+layout(location = 1) out vec2 outTexCoord;
+layout(location = 2) out flat vec4 outColor;
+
+vec2 offsets[6] = { vec2(0.0, 0.0),
+ vec2(1.0, 0.0),
+ vec2(0.0, 1.0),
+ vec2(0.0, 1.0),
+ vec2(1.0, 0.0),
+ vec2(1.0, 1.0) };
+
+void main() {
+ vec4 rect = clip (inRect);
+ vec2 pos = rect.xy + rect.zw * offsets[gl_VertexIndex];
+ gl_Position = push.mvp * vec4 (pos, 0.0, 1.0);
+
+ outPos = pos;
+
+ vec4 texrect = vec4((rect.xy - inRect.xy) / inRect.zw,
+ rect.zw / inRect.zw);
+ texrect = vec4(inTexRect.xy + inTexRect.zw * texrect.xy,
+ inTexRect.zw * texrect.zw);
+ outTexCoord = texrect.xy + texrect.zw * offsets[gl_VertexIndex];
+
+ outColor = inColor;
+}