aboutsummaryrefslogtreecommitdiff
path: root/src/render_helpers/shaders/resize_epilogue.frag
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-05-01 19:06:08 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-05-02 14:27:53 +0400
commit42cef79c699c0f03b4bb99c4278169c48d9a5bd0 (patch)
tree630d18b49f3d93603a79bcfc5734dc773c6d0cb6 /src/render_helpers/shaders/resize_epilogue.frag
parentd86df5025cfd26ef4a3c48acd8ee80555265ee53 (diff)
downloadniri-42cef79c699c0f03b4bb99c4278169c48d9a5bd0.tar.gz
niri-42cef79c699c0f03b4bb99c4278169c48d9a5bd0.tar.bz2
niri-42cef79c699c0f03b4bb99c4278169c48d9a5bd0.zip
Implement rounded window corners
Diffstat (limited to 'src/render_helpers/shaders/resize_epilogue.frag')
-rw-r--r--src/render_helpers/shaders/resize_epilogue.frag27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/render_helpers/shaders/resize_epilogue.frag b/src/render_helpers/shaders/resize_epilogue.frag
new file mode 100644
index 00000000..12ed890f
--- /dev/null
+++ b/src/render_helpers/shaders/resize_epilogue.frag
@@ -0,0 +1,27 @@
+
+void main() {
+ vec3 coords_curr_geo = niri_input_to_curr_geo * vec3(niri_v_coords, 1.0);
+ vec3 size_curr_geo = vec3(niri_curr_geo_size, 1.0);
+
+ vec4 color = resize_color(coords_curr_geo, size_curr_geo);
+
+ if (niri_clip_to_geometry == 1.0) {
+ if (coords_curr_geo.x < 0.0 || 1.0 < coords_curr_geo.x
+ || coords_curr_geo.y < 0.0 || 1.0 < coords_curr_geo.y) {
+ // Clip outside geometry.
+ color = vec4(0.0);
+ } else {
+ // Apply corner rounding inside geometry.
+ color = color * niri_rounding_alpha(coords_curr_geo.xy * size_curr_geo.xy, size_curr_geo.xy);
+ }
+ }
+
+ color = color * niri_alpha;
+
+#if defined(DEBUG_FLAGS)
+ if (niri_tint == 1.0)
+ color = vec4(0.0, 0.2, 0.0, 0.2) + color * 0.8;
+#endif
+
+ gl_FragColor = color;
+}