diff options
Diffstat (limited to 'gsk/vulkan/resources/clip.frag.glsl')
-rw-r--r-- | gsk/vulkan/resources/clip.frag.glsl | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/gsk/vulkan/resources/clip.frag.glsl b/gsk/vulkan/resources/clip.frag.glsl index 4f4755c5bb..5ab526de86 100644 --- a/gsk/vulkan/resources/clip.frag.glsl +++ b/gsk/vulkan/resources/clip.frag.glsl @@ -5,25 +5,41 @@ #define _CLIP_ #ifdef CLIP_ROUNDED_RECT -vec4 clip(vec2 pos, vec4 color) + +vec4 +clip_scaled (vec2 pos, vec4 color) { RoundedRect r = RoundedRect(vec4(push.clip_bounds.xy, push.clip_bounds.xy + push.clip_bounds.zw), push.clip_widths, push.clip_heights); + r = rounded_rect_scale (r, push.scale); + return color * rounded_rect_coverage (r, pos); } + #elif defined(CLIP_RECT) -vec4 clip(vec2 pos, vec4 color) + +vec4 +clip_scaled (vec2 pos, vec4 color) { - /* clipped in vertex shader already */ return color; } + #elif defined(CLIP_NONE) -vec4 clip(vec2 pos, vec4 color) + +vec4 +clip_scaled (vec2 pos, vec4 color) { return color; } + #else #error "No clipping define given. Need CLIP_NONE, CLIP_RECT or CLIP_ROUNDED_RECT" #endif +vec4 +clip (vec2 pos, vec4 color) +{ + return clip_scaled (pos * push.scale, color); +} + #endif |