three.js dev template

HTML

<script src="https://rawgit.com/mrdoob/three.js/dev/build/three.js"></script>
<script src="https://rawgit.com/mrdoob/three.js/dev/examples/js/controls/OrbitControls.js"></script>
<script src="https://rawgit.com/mrdoob/three.js/dev/examples/js/loaders/HDRCubeTextureLoader.js"></script>
<script src="https://rawgit.com/mrdoob/three.js/dev/examples/js/pmrem/PMREMGenerator.js"></script>
<script src="https://rawgit.com/mrdoob/three.js/dev/examples/js/pmrem/PMREMCubeUVPacker.js"></script>
<script src="https://rawgit.com/mrdoob/three.js/dev/examples/js/loaders/RGBELoader.js"></script>

CSS

body {
	background-color: #000;
	margin: 0px;
	overflow: hidden;
}

JavaScript

// Simple three.js example

var meshStandard, meshCustom, renderer, scene, camera, controls;

init();
animate();

function init() {

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

    // scene
    scene = new THREE.Scene();
    
    // camera
    camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 10000 );
    camera.position.set(0, 0, 40);

    // controls
    controls = new THREE.OrbitControls( camera );
    
    // light
    var light = new THREE.DirectionalLight( 0xffffff, 1 );
    light.position.set( 20,20, 0 );
    scene.add( light )

    // geometry
    var geometry = new THREE.SphereGeometry(5, 64, 16);
    
    // material
    var material = new THREE.MeshStandardMaterial( {
        color: 0x00ffff,
        roughness: 0,
        metalness: 1
    } );
    
    // mesh
    meshStandard = new THREE.Mesh( geometry, material );
    meshStandard.position.x = -10;
    scene.add( meshStandard );
    
    let standard = THREE.ShaderLib['standard'];
    let customMaterial = new THREE.ShaderMaterial({
      lights: true,
      fragmentShader: standard.fragmentShader,
      vertexShader: standard.vertexShader,
      uniforms: THREE.UniformsUtils.clone(standard.uniforms),
    });
    customMaterial.uniforms.diffuse.value = new THREE.Color(0x00ffff);
    customMaterial.uniforms.roughness.value = 0;
    customMaterial.uniforms.metalness.value = 1;
    
    meshCustom = new THREE.Mesh( geometry, customMaterial );
    meshCustom.position.x = 10;
    scene.add( meshCustom );
    
    var genCubeUrls = function (prefix, postfix) {
      return [
        prefix + 'px' + postfix, prefix + 'nx' + postfix,
        prefix + 'py' + postfix, prefix + 'ny' + postfix,
        prefix + 'pz' + postfix, prefix + 'nz' + postfix
      ];
    };
    var hdrUrls =...