For @Tomeno; Shader form of Cooldown Animation (#1113)
Co-authored-by: Tomeno <tomeno@lulzsec.co.uk>
This commit is contained in:
6
Resources/Prototypes/Shaders/cooldown.yml
Normal file
6
Resources/Prototypes/Shaders/cooldown.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
- type: shader
|
||||
id: CooldownAnimation
|
||||
kind: source
|
||||
path: "/Shaders/cooldown.swsl"
|
||||
params:
|
||||
progress: 0
|
||||
25
Resources/Shaders/cooldown.swsl
Normal file
25
Resources/Shaders/cooldown.swsl
Normal file
@@ -0,0 +1,25 @@
|
||||
light_mode unshaded;
|
||||
|
||||
const float PI = 3.14159265;
|
||||
|
||||
uniform float progress = 0.0;
|
||||
|
||||
void fragment() {
|
||||
vec4 col = texture(TEXTURE, UV);
|
||||
vec2 center = vec2(0.5,0.5);
|
||||
vec2 delta = UV.xy - center;
|
||||
|
||||
float angle = atan(delta.x, -delta.y) + PI;
|
||||
|
||||
float dist = length(delta);
|
||||
float dist_fwidth = fwidth(dist) * 0.67;
|
||||
|
||||
float dist_alpha = smoothstep(0.1-dist_fwidth, 0.1, abs(dist-0.35));
|
||||
|
||||
float angle_delta = (progress * PI * 2) - angle;
|
||||
float arc_length = angle_delta * dist;
|
||||
|
||||
float angle_alpha = progress > 0 ? smoothstep(dist_fwidth, 0.0, arc_length) : 0.0;
|
||||
|
||||
COLOR = vec4(col.xyz, 1-max(dist_alpha, angle_alpha));
|
||||
}
|
||||
Reference in New Issue
Block a user