Newer
Older
pixi.js / src / pixi / renderers / webgl / WebGLShaders.js
@Mat Groves Mat Groves on 31 Dec 2013 3 KB Restructured render texture
/**
 * @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.aVertexPosition);
    gl.disableVertexAttribArray(PIXI.defaultShader.colorAttribute);
    gl.disableVertexAttribArray(PIXI.defaultShader.aTextureCoord);

    gl.enableVertexAttribArray(PIXI.primitiveShader.aVertexPosition);
    gl.enableVertexAttribArray(PIXI.primitiveShader.colorAttribute);
};

PIXI.deactivatePrimitiveShader = function()
{
    var gl = PIXI.gl;

    gl.useProgram(PIXI.defaultShader.program);

    gl.disableVertexAttribArray(PIXI.primitiveShader.aVertexPosition);
    gl.disableVertexAttribArray(PIXI.primitiveShader.colorAttribute);

    gl.enableVertexAttribArray(PIXI.defaultShader.aVertexPosition);
    gl.enableVertexAttribArray(PIXI.defaultShader.colorAttribute);
    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)) {
        window.console.log(gl.getShaderInfoLog(shader));
        return null;
    }

    return shader;
};

PIXI.compileProgram = function(gl, 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)) {
        window.console.log("Could not initialise shaders");
    }

    return shaderProgram;
};