     public static const HORIZONTAL:String   = "horizontal";
     public static const VERTICAL:String     = "vertical";
 
-    private static const DEFAULT_FIRST_PASS_STRENGTH:Number                 = 1.25;
-    private static const DEFAULT_STRENGTH_INCREASE_PER_PASS_RATIO:Number    = 2.5;
+    public static const DEFAULT_FIRST_PASS_STRENGTH:Number                 = 1.25;
+    public static const DEFAULT_STRENGTH_INCREASE_PER_PASS_RATIO:Number    = 2.5;
+
+    protected static const TEXTURE_FLAGS:Array = [TextureFlag.TYPE_2D, TextureFlag.MODE_CLAMP, TextureFlag.FILTER_LINEAR, TextureFlag.MIP_NO];
 
     private static var _verticalOffsets:Vector.<Number>     = new <Number>[0.0, 1.3846153846, 0.0, 3.2307692308];
     private static var _horizontalOffsets:Vector.<Number>   = new <Number>[1.3846153846, 0.0, 3.2307692308, 0.0];

package starling.shaders {
import com.barliesque.agal.EasierAGAL;
import com.barliesque.agal.IComponent;
import com.barliesque.agal.IRegister;
import com.barliesque.agal.TextureFlag;
import com.barliesque.shaders.macro.Utils;

import flash.display3D.Context3D;
import flash.display3D.Context3DProgramType;

    private var _paramsDirty:Boolean            = true;
    private var _strengthsDirty:Boolean         = true;

    protected var _strengths:Vector.<Number>    = new <Number>[];
    private var _offsets:Vector.<Number>        = new <Number>[0, 0, 0, 0];
    private var _uv:Vector.<Number>             = new <Number>[0, 1, 0, 1];
    private var _pixelSize:Vector.<Number>      = new <Number>[Number.NaN, Number.NaN, Number.NaN, Number.NaN];

    // shader constants
    protected var uvCenter:IRegister            = VARYING[0];
    protected var weightCenter:IComponent       = CONST[0].x;
    protected var weightOne:IComponent          = CONST[0].y;
    protected var weightTwo:IComponent          = CONST[0].z;
    protected var offsetOne:IField              = CONST[1].xy;
    protected var offsetTwo:IField              = CONST[1].zw;
    protected var uMin:IComponent               = CONST[2].x;
    protected var uMax:IComponent               = CONST[2].y;
    protected var vMin:IComponent               = CONST[2].z;
    protected var vMax:IComponent               = CONST[2].w;
    protected var halfPixelWidth:IComponent     = CONST[3].z;
    protected var halfPixelHeight:IComponent    = CONST[3].w;

    public function get type():String { return _type; }
    public function set type(value:String):void {
        if(value == _type)
