diff options
author | 2021-05-24 20:26:56 +0700 | |
---|---|---|
committer | 2021-05-24 20:26:56 +0700 | |
commit | df971ac99beedb41537763f95f7b14d8bf7475a8 (patch) | |
tree | 70bf9d7aac84ae05f841b51dca6eb66c1769de93 /wgpu/src/shader/quad.frag | |
parent | 3918257883dba3cf260bd9764cb7b34101c435e6 (diff) | |
parent | 4cbc34524598756ce18cb25a664bc6f256d42851 (diff) | |
download | iced-df971ac99beedb41537763f95f7b14d8bf7475a8.tar.gz iced-df971ac99beedb41537763f95f7b14d8bf7475a8.tar.bz2 iced-df971ac99beedb41537763f95f7b14d8bf7475a8.zip |
Merge pull request #830 from Dispersia/upgrade-wgpu
Upgrade wgpu
Diffstat (limited to 'wgpu/src/shader/quad.frag')
-rw-r--r-- | wgpu/src/shader/quad.frag | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/wgpu/src/shader/quad.frag b/wgpu/src/shader/quad.frag deleted file mode 100644 index ad1af1ad..00000000 --- a/wgpu/src/shader/quad.frag +++ /dev/null @@ -1,66 +0,0 @@ -#version 450 - -layout(location = 0) in vec4 v_Color; -layout(location = 1) in vec4 v_BorderColor; -layout(location = 2) in vec2 v_Pos; -layout(location = 3) in vec2 v_Scale; -layout(location = 4) in float v_BorderRadius; -layout(location = 5) in float v_BorderWidth; - -layout(location = 0) out vec4 o_Color; - -float distance(in vec2 frag_coord, in vec2 position, in vec2 size, float radius) -{ - // TODO: Try SDF approach: https://www.shadertoy.com/view/wd3XRN - vec2 inner_size = size - vec2(radius, radius) * 2.0; - vec2 top_left = position + vec2(radius, radius); - vec2 bottom_right = top_left + inner_size; - - vec2 top_left_distance = top_left - frag_coord; - vec2 bottom_right_distance = frag_coord - bottom_right; - - vec2 distance = vec2( - max(max(top_left_distance.x, bottom_right_distance.x), 0), - max(max(top_left_distance.y, bottom_right_distance.y), 0) - ); - - return sqrt(distance.x * distance.x + distance.y * distance.y); -} - -void main() { - vec4 mixed_color; - - // TODO: Remove branching (?) - if(v_BorderWidth > 0) { - float internal_border = max(v_BorderRadius - v_BorderWidth, 0); - - float internal_distance = distance( - gl_FragCoord.xy, - v_Pos + vec2(v_BorderWidth), - v_Scale - vec2(v_BorderWidth * 2.0), - internal_border - ); - - float border_mix = smoothstep( - max(internal_border - 0.5, 0.0), - internal_border + 0.5, - internal_distance - ); - - mixed_color = mix(v_Color, v_BorderColor, border_mix); - } else { - mixed_color = v_Color; - } - - float d = distance( - gl_FragCoord.xy, - v_Pos, - v_Scale, - v_BorderRadius - ); - - float radius_alpha = - 1.0 - smoothstep(max(v_BorderRadius - 0.5, 0), v_BorderRadius + 0.5, d); - - o_Color = vec4(mixed_color.xyz, mixed_color.w * radius_alpha); -} |