20 lines
		
	
	
		
			622 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			622 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;
 | |
| }
 |