vizicities/src/engine/Renderer.js

55 wiersze
1.6 KiB
JavaScript
Executable File

import * as THREE from 'three';
import Scene from './Scene';
// This can only be accessed from Engine.renderer if you want to reference the
// same scene in multiple places
export default function(container, antialias) {
var renderer = new THREE.WebGLRenderer({
antialias: antialias
// Enabling this removes a lot of z-index intersecting but it also removes
// shadows due to a bug in three.js
//
// See: https://github.com/mrdoob/three.js/issues/7815
// logarithmicDepthBuffer: true
});
// TODO: Re-enable when this works with the skybox
// renderer.setClearColor(Scene.fog.color, 1);
renderer.setClearColor(0xffffff, 1);
// TODO: Re-enable this when perf issues can be solved
//
// Rendering double the resolution of the screen can be really slow
// var pixelRatio = window.devicePixelRatio;
var pixelRatio = 1;
renderer.setPixelRatio(pixelRatio);
// Gamma settings make things look nicer
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.shadowMap.enabled = true;
// TODO: Work out which of the shadowmap types is best
// https://github.com/mrdoob/three.js/blob/r56/src/Three.js#L107
// renderer.shadowMap.type = THREE.PCFSoftShadowMap;
// TODO: Check that leaving this as default (CullFrontFace) is right
// renderer.shadowMap.cullFace = THREE.CullFaceBack;
container.appendChild(renderer.domElement);
var updateSize = function() {
renderer.setSize(container.clientWidth, container.clientHeight);
};
window.addEventListener('resize', updateSize, false);
updateSize();
return renderer;
};