Three.js base

A base/starter fiddle for Three.js

by spacorum

HTML

<script src="https://rawgit.com/mrdoob/three.js/master/build/three.min.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/stats.js/r17/build/stats.min.js"></script>
<script src="https://threejs.org/examples/js/objects/Water.js"></script>
<script src="https://threejs.org/examples/js/objects/Sky.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>

CSS

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

JavaScript

var camera, scene, renderer, mesh, material, stats, water, bgScene, bufferScene, bufferTexture;
init();
overrideFunctions();
animate();

function init() {
    // Renderer.
    renderer = new THREE.WebGLRenderer({alpha:true});
    renderer.setPixelRatio(window.devicePixelRatio);
    renderer.setSize(window.innerWidth, window.innerHeight);
    renderer.autoClear = false;
    
        // Create a different scene to hold our buffer objects
    bufferScene = new THREE.Scene();
    // Create the texture that will store our result
    bufferTexture = new THREE.WebGLRenderTarget( window.innerWidth/10, window.innerHeight/10, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter});    
    bufferTexture.wrapS = THREE.MirroredRepeatWrapping;
    bufferTexture.wrapT = THREE.MirroredRepeatWrapping;
		//renderer.background = bufferTexture.texture;

    
    // Add renderer to page
    document.body.appendChild(renderer.domElement);

    // Create camera.

		camera = new THREE.PerspectiveCamera( 55, window.innerWidth / window.innerHeight, 1, 20000 );
		camera.position.set( 30, 30, 100 );

    // Create scene.
    scene = new THREE.Scene();
    bgScene = new THREE.Scene();

    //scene.background = bufferTexture;    
		//scene.background = bufferTexture.texture;

    // Create light and add to scene.
  	light = new THREE.DirectionalLight( 0xffffff, 0.8 );
  	scene.add( light );
    
    

    // Water

    var waterGeometry = new THREE.PlaneBufferGeometry( 10000, 10000 );

    water = new THREE.Water(
      waterGeometry,
      {
        textureWidth: 512,
        textureHeight: 512,
        waterNormals: new THREE.TextureLoader().load( 'https://threejs.org/examples/textures/waternormals.jpg', function ( texture ) {

          texture.wrapS = texture.wrapT = THREE.RepeatWrapping;

        } ),
        alpha: 1.0,
        sunDirection: light.position.clone().normalize(),
        sunColor: 0xffffff,
        waterColor: 0x001e0f,
        distortionScale: 3.7,
        fog:...