diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-01 19:06:08 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-02 14:27:53 +0400 |
| commit | 42cef79c699c0f03b4bb99c4278169c48d9a5bd0 (patch) | |
| tree | 630d18b49f3d93603a79bcfc5734dc773c6d0cb6 /src/render_helpers/shaders/resize_epilogue.frag | |
| parent | d86df5025cfd26ef4a3c48acd8ee80555265ee53 (diff) | |
| download | niri-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.frag | 27 |
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; +} |
