Three.js base

A base/starter fiddle for Three.js

HTML

<script src="https://rawgit.com/mrdoob/three.js/master/build/three.min.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/0949e59f/examples/js/postprocessing/EffectComposer.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/0949e59f/examples/js/shaders/CopyShader.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/0949e59f/examples/js/postprocessing/ShaderPass.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/0949e59f/examples/js/shaders/SMAAShader.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/0949e59f/examples/js/postprocessing/SMAAPass.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/0949e59f/examples/js/postprocessing/SSAARenderPass.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/0949e59f/examples/js/shaders/SepiaShader.js"></script>
<script src="https://cdn.rawgit.com/AlexVestin/musicvid.org/df5e202e/src/views/editor/canvas/three/postprocessing/shaders/testshader2.js"></script>

CSS

body {
    padding: 0;
    margin: 0;
}
canvas {
  display: block;
}

JavaScript

var camera, scene, renderer, mesh, material, ctx, texture, canvas, dimensions;

var effectComposer, buffer, mainCamera, mainScene, mainMesh;
init();
animate();
alert("FLASHING LIGHTS ALERT, LEAVE IF SENSITIVE")
function init() {
	  canvas = document.createElement("canvas")
		canvas.width = 512;
    canvas.height = 512;
    ctx = canvas.getContext("2d");
    texture = new THREE.CanvasTexture(canvas)
    
    
    renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth,window.innerHeight);
		dimensions = renderer.getSize()

		document.body.appendChild(renderer.domElement);

    camera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1);
    scene = new THREE.Scene();
    
    
    buffer = new THREE.WebGLRenderTarget(dimensions.width, dimensions.height);
    buffer.texure = texture;
    effectComposer = new THREE.EffectComposer(renderer, buffer);
    
    material = new THREE.MeshBasicMaterial({map: texture});
    var geometry = new THREE.PlaneBufferGeometry( 2, 2 );
    mesh = new THREE.Mesh(geometry, material);
    scene.add(mesh);
   
    var renderPass = new THREE.SSAARenderPass(scene, camera);
    var copyPass = new THREE.ShaderPass( THREE.CopyShader );
    var sepiaPass = new THREE.ShaderPass( THREE.SepiaShader );
    var testPass = new THREE.ShaderPass( THREE.TestShader2 );
    
    effectComposer.addPass(renderPass);
    effectComposer.addPass(copyPass);
    effectComposer.addPass(sepiaPass);
    effectComposer.addPass(testPass);
    
    
    mainCamera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1);
    mainScene = new THREE.Scene();
    mainMesh = new THREE.Mesh( 
         new THREE.PlaneBufferGeometry( 2, 2 ), 
         new THREE.MeshBasicMaterial({map: buffer.texture})
    );
    mainScene.add(mainMesh)
}

function animate() {
		
    ctx.save()
    ctx.scale(1, dimensions.width / dimensions.height)
    ctx.fillStyle = "#FF0000"
    ctx.fillRect((canvas.width / 2) - 25, (canvas.height / 2) -25, 50, 50);
    
    
   ...