var Shader = require('./Shader');
/**
* This shader is used to draw simple primitive shapes for {@link PIXI.Graphics}.
*
* @class
* @memberof PIXI
* @extends PIXI.Shader
* @param shaderManager {ShaderManager} The webgl shader manager this shader works for.
*/
function PrimitiveShader(shaderManager)
{
Shader.call(this,
shaderManager,
// vertex shader
[
'attribute vec2 aVertexPosition;',
'attribute vec4 aColor;',
'uniform mat3 translationMatrix;',
'uniform mat3 projectionMatrix;',
'uniform float alpha;',
'uniform float flipY;',
'uniform vec3 tint;',
'varying vec4 vColor;',
'void main(void){',
' gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);',
' vColor = aColor * vec4(tint * alpha, alpha);',
'}'
].join('\n'),
// fragment shader
[
'precision mediump float;',
'varying vec4 vColor;',
'void main(void){',
' gl_FragColor = vColor;',
'}'
].join('\n'),
// custom uniforms
{
tint: { type: '3f', value: [0, 0, 0] },
alpha: { type: '1f', value: 0 },
translationMatrix: { type: 'mat3', value: new Float32Array(9) },
projectionMatrix: { type: 'mat3', value: new Float32Array(9) }
},
// custom attributes
{
aVertexPosition:0,
aColor:0
}
);
}
PrimitiveShader.prototype = Object.create(Shader.prototype);
PrimitiveShader.prototype.constructor = PrimitiveShader;
module.exports = PrimitiveShader;