text: 
  out vec4 FragColor;
  
  uniform sampler2D strokeColor;
  uniform sampler2D strokeDepth;
  
  uniform float amplitude;
  uniform float period;
  uniform float phase;
  uniform int orientation;
  uniform vec2 wsize;
  
  #define M_PI 3.1415926535897932384626433832795
  
  #define HORIZONTAL 0
  #define VERTICAL 1
  
  void main()
  {
    vec4 outcolor;
    ivec2 uv = ivec2(gl_FragCoord.xy);
    float stroke_depth;
  
    float value;
    if (orientation == HORIZONTAL) {
      float pval = (uv.x * M_PI) / wsize[0];
      value = amplitude * sin((period * pval) + phase);
      outcolor = texelFetch(strokeColor, ivec2(uv.x, uv.y + value), 0);
      stroke_depth = texelFetch(strokeDepth, ivec2(uv.x, uv.y + value), 0).r;
    }
    else {
      float pval = (uv.y * M_PI) / wsize[1];
      value = amplitude * sin((period * pval) + phase);
      outcolor = texelFetch(strokeColor, ivec2(uv.x + value, uv.y), 0);
      stroke_depth = texelFetch(strokeDepth, ivec2(uv.x + value, uv.y), 0).r;
    }
  
    FragColor = outcolor;
    gl_FragDepth = stroke_depth;
  
    if (outcolor.a < 0.02f) {
      discard;
    }
  }
  