function ParticleShader(shaderManager)
{
    TextureShader.call(this,
        shaderManager,
        // vertex shader
        [
            'attribute vec2 aVertexPosition;',
            'attribute vec2 aTextureCoord;',
            'attribute float aColor;',

            'attribute vec2 aPositionCoord;',
            'attribute vec2 aScale;',
            'attribute float aRotation;',

            'uniform mat3 projectionMatrix;',

            'varying vec2 vTextureCoord;',
            'varying float vColor;',

            'void main(void){',
            '   vec2 v = aVertexPosition;',

            '   v.x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);',
            '   v.y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);',
            '   v = v + aPositionCoord;',

            '   gl_Position = vec4((projectionMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);',

            '   vTextureCoord = aTextureCoord;',
            '   vColor = aColor;',
            '}'
        ].join('\n'),
        // hello
         [
            'precision lowp float;',

            'varying vec2 vTextureCoord;',
            'varying float vColor;',

            'uniform sampler2D uSampler;',
            'uniform float uAlpha;',

            'void main(void){',
            '   gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor * uAlpha ;',
            '}'
        ].join('\n'),
        // custom uniforms
        {
            uAlpha:  { type: '1f', value: 1 }
        },
        // custom attributes
        {
            aPositionCoord: 0,
           // aScale:         0,
            aRotation:      0
        }
    );

    // TEMP HACK

}
/**
 * @class
 * @extends TextureShader
 * @memberof PIXI
 * @param shaderManager {ShaderManager} The webgl shader manager this shader works for.
 */
@class
@extends TextureShader
@memberof PIXI
@param shaderManager {ShaderManager} The webgl shader manager this shader works for.
@class @extends TextureShader @memberof PIXI @param shaderManager { ShaderManager } The webgl shader manager this shader works for .
function ParticleShader(shaderManager)
{
    TextureShader.call(this,
        shaderManager,
        [
            'attribute vec2 aVertexPosition;',
            'attribute vec2 aTextureCoord;',
            'attribute float aColor;',
            'attribute vec2 aPositionCoord;',
            'attribute vec2 aScale;',
            'attribute float aRotation;',
            'uniform mat3 projectionMatrix;',
            'varying vec2 vTextureCoord;',
            'varying float vColor;',
            'void main(void){',
            '   vec2 v = aVertexPosition;',
            '   v.x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);',
            '   v.y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);',
            '   v = v + aPositionCoord;',
            '   gl_Position = vec4((projectionMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);',
            '   vTextureCoord = aTextureCoord;',
            '   vColor = aColor;',
            '}'
        ].join('\n'),
         [
            'precision lowp float;',
            'varying vec2 vTextureCoord;',
            'varying float vColor;',
            'uniform sampler2D uSampler;',
            'uniform float uAlpha;',
            'void main(void){',
            '   gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor * uAlpha ;',
            '}'
        ].join('\n'),
        {
            uAlpha:  { type: '1f', value: 1 }
        },
        {
            aPositionCoord: 0,
            aRotation:      0
        }
    );
}
function ParticleShader ( shaderManager ) { TextureShader . call ( this , shaderManager , [ 'attribute vec2 aVertexPosition;' , 'attribute vec2 aTextureCoord;' , 'attribute float aColor;' , 'attribute vec2 aPositionCoord;' , 'attribute vec2 aScale;' , 'attribute float aRotation;' , 'uniform mat3 projectionMatrix;' , 'varying vec2 vTextureCoord;' , 'varying float vColor;' , 'void main(void){' , '   vec2 v = aVertexPosition;' , '   v.x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);' , '   v.y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);' , '   v = v + aPositionCoord;' , '   gl_Position = vec4((projectionMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);' , '   vTextureCoord = aTextureCoord;' , '   vColor = aColor;' , '}' ] . join ( '\n' ) , [ 'precision lowp float;' , 'varying vec2 vTextureCoord;' , 'varying float vColor;' , 'uniform sampler2D uSampler;' , 'uniform float uAlpha;' , 'void main(void){' , '   gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor * uAlpha ;' , '}' ] . join ( '\n' ) , { uAlpha : { type : '1f' , value : 1 } } , { aPositionCoord : 0 , aRotation : 0 } ) ; }
@class
 @extends TextureShader
 @memberof PIXI
 @param shaderManager {ShaderManager} The webgl shader manager this shader works for.
@class @extends TextureShader @memberof PIXI @param shaderManager { ShaderManager } The webgl shader manager this shader works for .
// vertex shader // hello // custom uniforms // custom attributes // aScale:         0, // TEMP HACK