예제 #1
0
        static string BuildVertSource(BlurDirection dir, int length)
        {
            var sb  = new StringBuilder();
            var fmt = dir == BlurDirection.Horizontal ?
                      "blurTexCoords[{0}] = texCoord0 + vec2(TexelSize * {1}.0, 0.0);\n"
                                  : "blurTexCoords[{0}] = texCoord0 + vec2(0.0, TexelSize * {1}.0);\n";

            for (var i = 0; i < length; i++)
            {
                sb.AppendFormat(fmt, i, i - length);
            }
            for (var i = length; i < length * 2; i++)
            {
                sb.AppendFormat(fmt, i, i - length + 1);
            }

            return(string.Format(VertSourceFormat, length * 2, sb.ToString()));
        }
예제 #2
0
 public BlurShader(BlurDirection dir, int kernel, double sigma) :
     base(BuildVertSource(dir, kernel), BuildFragSource(kernel, sigma), string.Format("blur::{0}:{1}:{2}", dir, kernel, sigma))
 {
 }
예제 #3
0
 /** Creates a new BlurEffect.
  *
  *  @param direction     horizontal or vertical
  *  @param strength      range 0-1
  */
 public BlurEffect(BlurDirection direction = BlurDirection.HORIZONTAL, float strength = 1)
 {
     Strength  = strength;
     Direction = direction;
 }