var TextureShader = require('../../renderers/webgl/shaders/TextureShader'); /** * @class * @extends Shader * @namespace PIXI * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function SpriteBatchShader(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;', // 'uniform mat3 uMatrix;', 'varying vec2 vTextureCoord;', 'varying float vColor;', 'void main(void){', ' vec2 v;', ' vec2 sv = aVertexPosition * aScale;', ' v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);', ' v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);', ' v = v + aPositionCoord ;', ' gl_Position = vec4((projectionMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);', ' vTextureCoord = aTextureCoord;', ' vColor = 1.0;', '}' ].join('\n'), // hello [ 'precision lowp float;', 'varying vec2 vTextureCoord;', 'varying float vColor;', 'uniform sampler2D uSampler;', 'void main(void){', ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', '}' ].join('\n'), // custom uniforms { // uMatrix: { type: 'mat3', value: new Float32Array(9) } }, // custom attributes { aPositionCoord: 0, aScale: 0, aRotation: 0 } ); // TEMP HACK } SpriteBatchShader.prototype = Object.create(TextureShader.prototype); SpriteBatchShader.prototype.constructor = SpriteBatchShader; module.exports = SpriteBatchShader;