module BABYLON {
    export class ConvolutionPostProcess extends PostProcess{
        constructor(name: string, public kernel: number[], ratio: number, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean) {
            super(name, "convolution", ["kernel", "screenSize"], null, ratio, camera, samplingMode, engine, reusable);

            this.onApply = (effect: Effect) => {
                effect.setFloat2("screenSize", this.width, this.height);
                effect.setArray("kernel", this.kernel);
            };
        }

    // Statics
    // Based on http://en.wikipedia.org/wiki/Kernel_(image_processing)
    public static EdgeDetect0Kernel = [1, 0, -1, 0, 0, 0, -1, 0, 1];
    public static EdgeDetect1Kernel = [0, 1, 0, 1, -4, 1, 0, 1, 0];
    public static EdgeDetect2Kernel = [-1, -1, -1, -1, 8, -1, -1, -1, -1];
    public static SharpenKernel = [0, -1, 0, -1, 5, -1, 0, -1, 0];
    public static EmbossKernel = [-2, -1, 0, -1, 1, 1, 0, 1, 2];
    public static GaussianKernel = [0, 1, 0, 1, 1, 1, 0, 1, 0];
    }
}
