aframe
Version:
A web framework for building virtual reality experiences.
61 lines (53 loc) • 2.16 kB
JavaScript
var registerSystem = require('../core/system').registerSystem;
var utils = require('../utils/');
var THREE = require('../lib/three');
var debug = utils.debug;
var warn = debug('components:renderer:warn');
/**
* Determines state of various renderer properties.
*/
module.exports.System = registerSystem('renderer', {
schema: {
antialias: {default: 'auto', oneOf: ['true', 'false', 'auto']},
highRefreshRate: {default: utils.device.isOculusBrowser()},
logarithmicDepthBuffer: {default: 'auto', oneOf: ['true', 'false', 'auto']},
maxCanvasWidth: {default: 1920},
maxCanvasHeight: {default: 1920},
physicallyCorrectLights: {default: false},
precision: {default: 'high', oneOf: ['high', 'medium', 'low']},
sortObjects: {default: false},
colorManagement: {default: false},
gammaOutput: {default: false},
alpha: {default: true},
foveationLevel: {default: 0}
},
init: function () {
var data = this.data;
var sceneEl = this.el;
// This is the rendering engine, such as THREE.js so copy over any persistent properties from the rendering system.
var renderer = sceneEl.renderer;
renderer.sortObjects = data.sortObjects;
renderer.physicallyCorrectLights = data.physicallyCorrectLights;
if (data.colorManagement || data.gammaOutput) {
renderer.outputEncoding = THREE.sRGBEncoding;
if (data.gammaOutput) {
warn('Property `gammaOutput` is deprecated. Use `renderer="colorManagement: true;"` instead.');
}
}
if (sceneEl.hasAttribute('antialias')) {
warn('Component `antialias` is deprecated. Use `renderer="antialias: true"` instead.');
}
if (sceneEl.hasAttribute('logarithmicDepthBuffer')) {
warn('Component `logarithmicDepthBuffer` is deprecated. Use `renderer="logarithmicDepthBuffer: true"` instead.');
}
},
applyColorCorrection: function (colorOrTexture) {
if (!this.data.colorManagement || !colorOrTexture) {
return;
} else if (colorOrTexture.isColor) {
colorOrTexture.convertSRGBToLinear();
} else if (colorOrTexture.isTexture) {
colorOrTexture.encoding = THREE.sRGBEncoding;
}
}
});