27 lines
735 B
GLSL

uniform vec2 storm_position;
uniform float storm_total_radius;
uniform float storm_inner_radius;
attribute vec2 positionAttribute;
attribute vec4 colorAttribute;
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
varying vec4 frontColor;
void main()
{
vec4 vertex = modelViewMatrix * vec4(positionAttribute, 0.0, 1.0);
vec2 offset = vertex.xy - storm_position;
float len = length(offset);
if (len < storm_total_radius)
{
float push_distance = storm_inner_radius + len / storm_total_radius * (storm_total_radius - storm_inner_radius);
vertex.xy = storm_position + normalize(offset) * push_distance;
}
gl_Position = projectionMatrix * vertex;
frontColor = colorAttribute;
}