
function Effect2(controller) {
	//init START
	console.log("Width:"+WIDTH+";Height:"+HEIGHT+";");		//size check for browser compatibility
	renderer.setSize(WIDTH, HEIGHT);
	container.appendChild(renderer.domElement);				//linking rendering window to container on the DOM
	scene2D.add(camera2D);										//lets add our camera2D to the scene2D
	var vertShader = [
		'varying vec4 verpos;',
		'void main() {',
		'gl_Position = projectionMatrix *',
		'modelViewMatrix *',
		'vec4(position,1.0);',
		'}'
		].join('\n'); 
	var startTime = demosong.currentTime;
	var fragShader = document.getElementById( 'effect2fs' ).innerHTML;

	var uniforms = {
		iResolution: {type: 'v2', value: new THREE.Vector2(WIDTH,HEIGHT)},
		globalTime: {type: 'f', value: (new Date()).getDate()},
		ovi:{type:'t', value:ovi}
		}
	var shaderMaterial = new THREE.ShaderMaterial({
		vertexShader: vertShader, 
		fragmentShader: fragShader,
		uniforms: uniforms
		}
		);
	var geo = new THREE.Geometry();
	geo.vertices.push(new THREE.Vector3(-1.0, -1.0, 0.0));
	geo.vertices.push(new THREE.Vector3(1.0, -1.0, 0.0));
	geo.vertices.push(new THREE.Vector3(1.0, 1.0, 0.0));
	geo.vertices.push(new THREE.Vector3(-1.0, 1.0, 0.0));
	geo.faces.push( new THREE.Face3(0,1,2));
	geo.faces.push( new THREE.Face3(0,2,3));
	var cube = new THREE.Mesh( geo, shaderMaterial);
	cube.position.z=-1;
	scene2D.add(cube);
	//getters
	/*NONE :-)*/
	//setters
	/*
	 *updates screen!!!1111onenoneoneelevenelevenonehundredandaeleven
	 */
	this.updateScreen = function() {
		uniforms.globalTime.value = (demosong.currentTime - startTime);
		renderer.render(scene2D, camera2D);
	};
};
