Three.js base

A base/starter fiddle for Three.js

by alexvestin

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>

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();

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();
    
    var rtParameters = {
      minFilter: THREE.LinearFilter,
      magFilter: THREE.LinearFilter,
      format: THREE.RGBAFormat,
      stencilBuffer: true,
    };
    
    buffer = new THREE.WebGLRenderTarget(dimensions.width, dimensions.height, rtParameters);
    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 );
    effectComposer.addPass(renderPass);
    effectComposer.addPass(copyPass);
    effectComposer.addPass(sepiaPass);
    effectComposer.addPass(sepiaPass);
    
    
    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) -...