var Shader = require('./Shader'); /** * @class * @namespace PIXI * @param gl {WebGLContext} the current WebGL drawing context */ function ComplexPrimitiveShader(gl) { Shader.call(this, gl, // vertex shader [ 'attribute vec2 aVertexPosition;', // 'attribute vec2 aTextureCoord;', // 'attribute vec4 aColor;', 'uniform mat3 translationMatrix;', 'uniform vec2 projectionVector;', 'uniform vec2 offsetVector;', 'uniform vec3 tint;', 'uniform float alpha;', 'uniform vec3 color;', 'uniform float flipY;', 'varying vec4 vColor;', 'void main(void){', ' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);', ' v -= offsetVector.xyx;', ' gl_Position = vec4( v.x / projectionVector.x -1.0, (v.y / projectionVector.y * -flipY) + flipY , 0.0, 1.0);', ' vColor = vec4(color * alpha * tint, alpha);',//" * 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] }, flipY: { type: '1f', value: 0 }, alpha: { type: '1f', value: 0 }, color: { type: '3f', value: [0,0,0] }, translationMatrix: { type: 'mat3', value: new Float32Array(9) } } ); } ComplexPrimitiveShader.prototype = Object.create(Shader.prototype); ComplexPrimitiveShader.prototype.constructor = ComplexPrimitiveShader; module.exports = ComplexPrimitiveShader;