JSFiddle - React, Tailwind, and code Playground

HTML

https://jsfiddle.net/#collaborate

JavaScript

var init = function(){
  if(WEBGL.isWebGL2Available() === false){
    document.body.appendChild(WEBGL.getWebGL2ErrorMessage());
  }
  else{
    //Setup our THREE scene--------------------------------
	  time = Date.now();
	  textFPS = document.getElementById('fps');
    local_scene = new THREE.Scene();
    global_scene = new THREE.Scene();
    comp_scene = new THREE.Scene();
    var canvas  = document.createElement('canvas');
    var context = canvas.getContext('webgl2');
    renderer = new THREE.WebGLRenderer({canvas: canvas, context: context});
    renderer.autoClear =false;
    document.body.appendChild(renderer.domElement);
    g_screenResolution = new THREE.Vector2(window.innerWidth, window.innerHeight);
    g_screenShotResolution = new THREE.Vector2(window.innerWidth, window.innerHeight);
    g_effect = new THREE.VREffect(renderer);
    camera = new THREE.OrthographicCamera(-1,1,1,-1,1/Math.pow(2,53),1);
    cameraRT = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 100);
    g_controls = new THREE.Controls();
    g_rotation = new THREE.Quaternion();
    g_controllerBoosts.push(new THREE.Matrix4());
    g_controllerBoosts.push(new THREE.Matrix4());
    g_currentBoost = new THREE.Matrix4(); // boost for camera relative to central cell
    g_cellBoost = new THREE.Matrix4(); // boost for the cell that we are in relative to where we started
    g_invCellBoost = new THREE.Matrix4();
    g_geometry = Geometry.Hyperbolic; // we start off hyperbolic
	  initGenerators(4,3,6);
    initLights(g_geometry);
    initObjects(g_geometry);
	  //We need to load the shaders from file
    //since web is async we need to wait on this to finish
    loadShaders();
  }
}

var gPass;
var lPass;
var cPass;

var loadShaders = function(){ //Since our shader is made up of strings we can construct it from parts
  var loader = new THREE.FileLoader();
  loader.setResponseType('text');
  loader.load('shaders/deferred/globalpass.glsl', function(global){
   ...