Three.js base

A base/starter fiddle for Three.js

by grano

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/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, quad, cube;
init();
animate();

function init() {

    renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth,window.innerHeight);
		dimensions = renderer.getSize()
		document.body.appendChild(renderer.domElement);

    scene = new THREE.Scene();
		camera = new THREE.PerspectiveCamera( 75,window.innerWidth/window.innerHeight, 0.1, 1000 );
    camera.position.z = 5;
    
    var geo = new THREE.BoxGeometry( 1, 1, 1 );
		var mat = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
		cube = new THREE.Mesh( geo, mat );
		scene.add( cube );
    
    mainCamera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1);
    mainScene = new THREE.Scene();
    
    buffer = new THREE.WebGLRenderTarget(dimensions.width, dimensions.height);
    effectComposer = new THREE.EffectComposer(renderer, buffer);
    
    material = new THREE.MeshBasicMaterial({map: buffer.texture});
    var geometry = new THREE.PlaneBufferGeometry( 2, 2 );
    quad = new THREE.Mesh(geometry, material);
    mainScene.add(quad);
   
    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);
}

function animate() {
		cube.rotation.x += 0.01;
		cube.rotation.y += 0.01;

    effectComposer.render()
    renderer.render(mainScene, mainCamera)
    requestAnimationFrame(animate);
}