Newer
Older
pixi.js / src / pixi / renderers / webgl / StripShader.js
@Mat Groves Mat Groves on 1 Nov 2013 2 KB Filter Tweaks
/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */


PIXI.StripShader = function()
{
	// the webGL program..
	this.program;
	
    this.fragmentSrc = [
      "precision mediump float;",
      "varying vec2 vTextureCoord;",
      "varying float vColor;",
      "uniform float alpha;",
      "uniform sampler2D uSampler;",
      "void main(void) {",
        "gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));",
        "gl_FragColor = gl_FragColor * alpha;",
      "}"
    ];

    this.vertexSrc = [
      "attribute vec2 aVertexPosition;",
      "attribute vec2 aTextureCoord;",
      "attribute float aColor;",
      "uniform mat3 translationMatrix;",
      "uniform vec2 projectionVector;",
      "varying vec2 vTextureCoord;",
      "varying vec2 offsetVector;",
      "varying float 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 + 1.0 , 0.0, 1.0);",
        "vTextureCoord = aTextureCoord;",
        "vColor = aColor;",
      "}"
    ];
}

PIXI.StripShader.prototype.init = function()
{
	var program = PIXI.compileProgram(this.vertexSrc, this.fragmentSrc)
	
	var gl = PIXI.gl;
	
    gl.useProgram(program);

	// get and store the uniforms for the shader
	this.uSampler = gl.getUniformLocation(program, "uSampler");
	this.projectionVector = gl.getUniformLocation(program, "projectionVector");
	this.offsetVector = gl.getUniformLocation(program, "offsetVector");
	this.colorAttribute = gl.getAttribLocation(program, "aColor");
	//this.dimensions = gl.getUniformLocation(this.program, "dimensions");
	
	// get and store the attributes
	this.aVertexPosition = gl.getAttribLocation(program, "aVertexPosition");
	this.aTextureCoord = gl.getAttribLocation(program, "aTextureCoord");
	  
    this.translationMatrix = gl.getUniformLocation(program, "translationMatrix");
    this.alpha = gl.getUniformLocation(program, "alpha");
  
	this.program = program;
}