Added phaser build and hellophaser sample
This commit is contained in:
104
src/pixi/renderers/webgl/shaders/PrimitiveShader.js
Normal file
104
src/pixi/renderers/webgl/shaders/PrimitiveShader.js
Normal file
@@ -0,0 +1,104 @@
|
||||
/**
|
||||
* @author Mat Groves http://matgroves.com/ @Doormat23
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class PrimitiveShader
|
||||
* @constructor
|
||||
* @param gl {WebGLContext} the current WebGL drawing context
|
||||
*/
|
||||
PIXI.PrimitiveShader = function(gl)
|
||||
{
|
||||
/**
|
||||
* @property gl
|
||||
* @type WebGLContext
|
||||
*/
|
||||
this.gl = gl;
|
||||
|
||||
/**
|
||||
* @property {any} program - The WebGL program.
|
||||
*/
|
||||
this.program = null;
|
||||
|
||||
/**
|
||||
* @property fragmentSrc
|
||||
* @type Array
|
||||
*/
|
||||
this.fragmentSrc = [
|
||||
'precision mediump float;',
|
||||
'varying vec4 vColor;',
|
||||
|
||||
'void main(void) {',
|
||||
' gl_FragColor = vColor;',
|
||||
'}'
|
||||
];
|
||||
|
||||
/**
|
||||
* @property vertexSrc
|
||||
* @type Array
|
||||
*/
|
||||
this.vertexSrc = [
|
||||
'attribute vec2 aVertexPosition;',
|
||||
'attribute vec4 aColor;',
|
||||
'uniform mat3 translationMatrix;',
|
||||
'uniform vec2 projectionVector;',
|
||||
'uniform vec2 offsetVector;',
|
||||
'uniform float alpha;',
|
||||
'uniform vec3 tint;',
|
||||
'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 + 1.0 , 0.0, 1.0);',
|
||||
' vColor = aColor * vec4(tint * alpha, alpha);',
|
||||
'}'
|
||||
];
|
||||
|
||||
this.init();
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialises the shader
|
||||
* @method init
|
||||
*
|
||||
*/
|
||||
PIXI.PrimitiveShader.prototype.init = function()
|
||||
{
|
||||
|
||||
var gl = this.gl;
|
||||
|
||||
var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc);
|
||||
gl.useProgram(program);
|
||||
|
||||
// get and store the uniforms for the shader
|
||||
this.projectionVector = gl.getUniformLocation(program, 'projectionVector');
|
||||
this.offsetVector = gl.getUniformLocation(program, 'offsetVector');
|
||||
this.tintColor = gl.getUniformLocation(program, 'tint');
|
||||
|
||||
|
||||
// get and store the attributes
|
||||
this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition');
|
||||
this.colorAttribute = gl.getAttribLocation(program, 'aColor');
|
||||
|
||||
this.attributes = [this.aVertexPosition, this.colorAttribute];
|
||||
|
||||
this.translationMatrix = gl.getUniformLocation(program, 'translationMatrix');
|
||||
this.alpha = gl.getUniformLocation(program, 'alpha');
|
||||
|
||||
this.program = program;
|
||||
};
|
||||
|
||||
/**
|
||||
* Destroys the shader
|
||||
* @method destroy
|
||||
*
|
||||
*/
|
||||
PIXI.PrimitiveShader.prototype.destroy = function()
|
||||
{
|
||||
this.gl.deleteProgram( this.program );
|
||||
this.uniforms = null;
|
||||
this.gl = null;
|
||||
|
||||
this.attribute = null;
|
||||
};
|
||||
Reference in New Issue
Block a user