initialize: function()

in effects/seriously.tvglitch.js [36:100]


			initialize: function (parent) {
				var i,
					sizeRange,
					velocityRange,
					particleVertex,
					particleFragment,
					particles;

				gl = this.gl;

				lastHeight = this.height;

				//initialize particles
				particles = [];
				sizeRange = maxSize - minSize;
				velocityRange = maxVelocity - minVelocity;
				for (i = 0; i < particleCount; i++) {
					particles.push(Math.random() * 2 - 1); //position
					particles.push(Math.random() * velocityRange + minVelocity); //velocity
					particles.push(Math.random() * sizeRange + minSize); //size
					particles.push(Math.random() * 0.2); //intensity
				}

				particleBuffer = gl.createBuffer();
				gl.bindBuffer(gl.ARRAY_BUFFER, particleBuffer);
				gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(particles), gl.STATIC_DRAW);
				particleBuffer.itemSize = 4;
				particleBuffer.numItems = particleCount;

				particleVertex = [
					'precision mediump float;',

					'attribute vec4 particle;',

					'uniform float time;',
					'uniform float height;',

					'varying float intensity;',

					'void main(void) {',
					'	float y = particle.x + time * particle.y;',
					'	y = fract((y + 1.0) / 2.0) * 4.0 - 2.0;',
					'	intensity = particle.w;',
					'	gl_Position = vec4(0.0, -y , 1.0, 2.0);',
					//'	gl_Position = vec4(0.0, 1.0 , 1.0, 1.0);',
					'	gl_PointSize = height * particle.z;',
					'}'
				].join('\n');

				particleFragment = [
					'precision mediump float;',

					'varying float intensity;',

					'void main(void) {',
					'	gl_FragColor = vec4(1.0);',
					'	gl_FragColor.a = 2.0 * intensity * (1.0 - abs(gl_PointCoord.y - 0.5));',
					'}'
				].join('\n');

				particleShader = new Seriously.util.ShaderProgram(gl, particleVertex, particleFragment);

				particleFrameBuffer = new Seriously.util.FrameBuffer(gl, 1, Math.max(1, this.height / 2));
				parent();
			},