/** * @author Mat Groves http://matgroves.com/ @Doormat23 */ PIXI.initDefaultShaders = function() { PIXI.primitiveShader = new PIXI.PrimitiveShader(); PIXI.primitiveShader.init(); PIXI.stripShader = new PIXI.StripShader(); PIXI.stripShader.init(); PIXI.defaultShader = new PIXI.PixiShader(); PIXI.defaultShader.init(); var gl = PIXI.gl; var shaderProgram = PIXI.defaultShader.program; gl.useProgram(shaderProgram); gl.enableVertexAttribArray(PIXI.defaultShader.aVertexPosition); gl.enableVertexAttribArray(PIXI.defaultShader.colorAttribute); gl.enableVertexAttribArray(PIXI.defaultShader.aTextureCoord); } PIXI.activatePrimitiveShader = function() { var gl = PIXI.gl; gl.useProgram(PIXI.primitiveShader.program); gl.disableVertexAttribArray(PIXI.defaultShader.aTextureCoord); } PIXI.deactivatePrimitiveShader = function() { var gl = PIXI.gl; gl.useProgram(PIXI.defaultShader.program); gl.enableVertexAttribArray(PIXI.defaultShader.aTextureCoord); } PIXI.activateStripShader = function() { var gl = PIXI.gl; gl.useProgram(PIXI.stripShader.program); // gl.disableVertexAttribArray(PIXI.defaultShader.aTextureCoord); } PIXI.deactivateStripShader = function() { var gl = PIXI.gl; gl.useProgram(PIXI.defaultShader.program); //gl.enableVertexAttribArray(PIXI.defaultShader.aTextureCoord); } /* SHADER COMPILER HELPERS */ PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); } PIXI.CompileFragmentShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.FRAGMENT_SHADER); } PIXI._CompileShader = function(gl, shaderSrc, shaderType) { var src = shaderSrc.join("\n"); var shader = gl.createShader(shaderType); gl.shaderSource(shader, src); gl.compileShader(shader); if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { console.log(gl.getShaderInfoLog(shader)); return null; } return shader; } PIXI.compileProgram = function(vertexSrc, fragmentSrc) { var gl = PIXI.gl; var fragmentShader = PIXI.CompileFragmentShader(gl, fragmentSrc); var vertexShader = PIXI.CompileVertexShader(gl, vertexSrc); var shaderProgram = gl.createProgram(); gl.attachShader(shaderProgram, vertexShader); gl.attachShader(shaderProgram, fragmentShader); gl.linkProgram(shaderProgram); if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { console.log("Could not initialise shaders"); } return shaderProgram; }