20 lines
613 B
GLSL
20 lines
613 B
GLSL
|
uniform vec2 storm_position;
|
||
|
uniform float storm_total_radius;
|
||
|
uniform float storm_inner_radius;
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
vec4 vertex = gl_ModelViewMatrix * gl_Vertex;
|
||
|
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 = gl_ProjectionMatrix * vertex;
|
||
|
gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
|
||
|
gl_FrontColor = gl_Color;
|
||
|
}
|