2011-12-10 13:02:38 +01:00
|
|
|
uniform vec2 storm_position;
|
|
|
|
uniform float storm_total_radius;
|
|
|
|
uniform float storm_inner_radius;
|
|
|
|
|
2018-05-20 14:06:24 +02:00
|
|
|
attribute vec2 positionAttribute;
|
|
|
|
attribute vec4 colorAttribute;
|
|
|
|
|
|
|
|
uniform mat4 modelViewMatrix;
|
|
|
|
uniform mat4 projectionMatrix;
|
|
|
|
|
|
|
|
varying vec4 frontColor;
|
|
|
|
|
2011-12-10 13:02:38 +01:00
|
|
|
void main()
|
|
|
|
{
|
2018-05-20 14:06:24 +02:00
|
|
|
vec4 vertex = modelViewMatrix * vec4(positionAttribute, 0.0, 1.0);
|
2011-12-10 13:02:38 +01:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2018-05-20 14:06:24 +02:00
|
|
|
gl_Position = projectionMatrix * vertex;
|
|
|
|
frontColor = colorAttribute;
|
2011-12-10 13:02:38 +01:00
|
|
|
}
|