Newer
Older
pixi.js / src / filters / blur / generateBlurVertSource.js
@Mat Groves Mat Groves on 8 Feb 2016 1 KB tidy up

var generateVertBlurSource = function(kernelSize, x)
{
    var halfLength = Math.ceil(kernelSize/2);

    var vertSource = vertTemplate;

    var blurLoop = '';
    var template

    if(x)
    {
    	template = 'vBlurTexCoords[%index%] = aTextureCoord + vec2(%samlpeIndex% * strength, 0.0);'
    }
    else
    {
    	template = 'vBlurTexCoords[%index%] = aTextureCoord + vec2(0.0, %samlpeIndex% * strength);'

    }
    	

    for (var i = 0; i < kernelSize; i++) 
    {
    	var blur = template.replace('%index%', i);

    	value = i;
    	
    	if(i >= halfLength)
    	{
    		value = kernelSize - i - 1; 
    	}

    	blur = blur.replace('%samlpeIndex%', (i - (halfLength-1)) + ".0");
    	
    	blurLoop += blur;
    	blurLoop += '\n';
    };

    vertSource = vertSource.replace('%blur%', blurLoop)
    vertSource = vertSource.replace('%size%', kernelSize)

    return vertSource;
}

var vertTemplate = [
		
	'attribute vec2 aVertexPosition;',
	'attribute vec2 aTextureCoord;',

	'uniform float strength;',
	'uniform mat3 projectionMatrix;',

	'varying vec2 vTextureCoord;',
	'varying vec2 vBlurTexCoords[%size%];',

	'void main(void)',
	'{',
	    'gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);',
	    'vTextureCoord = aTextureCoord;',//TODO remove..
		'%blur%',
	'}'
].join('\n');

module.exports = generateVertBlurSource;