Sha256: 32be34afa0899d39811d034666c7b5145714b777a642f6d7d3c70732987ab569

Contents?: true

Size: 1.16 KB

Versions: 11

Compression:

Stored size: 1.16 KB

Contents

#version 110

// http://empire-defense.crystalin.fr/blog/2d_shock_wave_texture_with_shader
// http://www.geeks3d.com/20091116/shader-library-2d-shockwave-post-processing-filter-glsl/

uniform sampler2D in_Texture; // 0
uniform vec2 in_Center; // Mouse position
uniform float in_Time; // effect elapsed time. Multiply this to affect speed.

// Amplitude?, Refraction?, Width?  e.g. 10.0, 0.8, 0.1
uniform vec3 in_ShockParams;

uniform int in_WindowWidth;
uniform int in_WindowHeight;

varying vec2 var_TexCoord;

void main()
{
  vec2 uv = var_TexCoord;
  vec2 texCoord = uv;
  float x = in_Center.x / float(in_WindowWidth);
  float y = (float(in_WindowHeight) - in_Center.y) / float(in_WindowHeight);
  float distance = distance(uv, vec2(x, y));

  if ( (distance <= (in_Time + in_ShockParams.z)) &&
       (distance >= (in_Time - in_ShockParams.z)) )
  {
    float diff = (distance - in_Time);
    float powDiff = 1.0 - pow(abs(diff * in_ShockParams.x),
                                in_ShockParams.y);
    float diffTime = diff  * powDiff;
    vec2 diffUV = normalize(uv - in_Center);
    texCoord = uv + (diffUV * diffTime);
  }

  gl_FragColor = texture2D(in_Texture, texCoord);
}

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
danabr75-ashton-0.1.5 lib/ashton/shaders/shockwave.frag
ashton-0.1.6 lib/ashton/shaders/shockwave.frag
ashton-0.1.5 lib/ashton/shaders/shockwave.frag
ashton-0.1.4 lib/ashton/shaders/shockwave.frag
ashton-0.1.3 lib/ashton/shaders/shockwave.frag
ashton-0.1.2 lib/ashton/shaders/shockwave.frag
ashton-0.1.1 lib/ashton/shaders/shockwave.frag
ashton-0.1.0 lib/ashton/shaders/shockwave.frag
ashton-0.0.4alpha lib/ashton/shaders/shockwave.frag
ashton-0.0.3alpha lib/ashton/shaders/shockwave.frag
ashton-0.0.2alpha lib/ashton/shaders/shockwave.frag