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){
...