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;