未验证 提交 fad652cb 编写于 作者: M Mr.doob 提交者: GitHub

Merge pull request #19504 from Mugen87/dev49

Core: More usage of let/const.
......@@ -37,9 +37,9 @@ WebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer
this.texture.format = texture.format;
this.texture.encoding = texture.encoding;
var scene = new Scene();
const scene = new Scene();
var shader = {
const shader = {
uniforms: {
tEquirect: { value: null },
......@@ -87,7 +87,7 @@ WebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer
].join( '\n' ),
};
var material = new ShaderMaterial( {
const material = new ShaderMaterial( {
type: 'CubemapFromEquirect',
......@@ -101,11 +101,11 @@ WebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer
material.uniforms.tEquirect.value = texture;
var mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );
const mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );
scene.add( mesh );
var camera = new CubeCamera( 1, 10, this );
const camera = new CubeCamera( 1, 10, this );
camera.update( renderer, scene );
mesh.geometry.dispose();
......
此差异已折叠。
......@@ -127,7 +127,7 @@ import shadow_vert from './ShaderLib/shadow_vert.glsl.js';
import sprite_frag from './ShaderLib/sprite_frag.glsl.js';
import sprite_vert from './ShaderLib/sprite_vert.glsl.js';
export var ShaderChunk = {
export const ShaderChunk = {
alphamap_fragment: alphamap_fragment,
alphamap_pars_fragment: alphamap_pars_fragment,
alphatest_fragment: alphatest_fragment,
......
......@@ -12,7 +12,7 @@ import { Matrix3 } from '../../math/Matrix3.js';
* @author mikael emtinger / http://gomo.se/
*/
var ShaderLib = {
const ShaderLib = {
basic: {
......
......@@ -6,7 +6,7 @@ import { Matrix3 } from '../../math/Matrix3.js';
* Uniforms library for shared webgl shaders
*/
var UniformsLib = {
const UniformsLib = {
common: {
......
......@@ -4,15 +4,15 @@
export function cloneUniforms( src ) {
var dst = {};
const dst = {};
for ( var u in src ) {
for ( const u in src ) {
dst[ u ] = {};
for ( var p in src[ u ] ) {
for ( const p in src[ u ] ) {
var property = src[ u ][ p ];
const property = src[ u ][ p ];
if ( property && ( property.isColor ||
property.isMatrix3 || property.isMatrix4 ||
......@@ -41,13 +41,13 @@ export function cloneUniforms( src ) {
export function mergeUniforms( uniforms ) {
var merged = {};
const merged = {};
for ( var u = 0; u < uniforms.length; u ++ ) {
for ( let u = 0; u < uniforms.length; u ++ ) {
var tmp = cloneUniforms( uniforms[ u ] );
const tmp = cloneUniforms( uniforms[ u ] );
for ( var p in tmp ) {
for ( const p in tmp ) {
merged[ p ] = tmp[ p ];
......@@ -61,6 +61,6 @@ export function mergeUniforms( uniforms ) {
// Legacy
var UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };
const UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };
export { UniformsUtils };
......@@ -4,9 +4,9 @@
function WebGLAnimation() {
var context = null;
var isAnimating = false;
var animationLoop = null;
let context = null;
let isAnimating = false;
let animationLoop = null;
function onAnimationFrame( time, frame ) {
......
......@@ -4,23 +4,23 @@
function WebGLAttributes( gl, capabilities ) {
var isWebGL2 = capabilities.isWebGL2;
const isWebGL2 = capabilities.isWebGL2;
var buffers = new WeakMap();
const buffers = new WeakMap();
function createBuffer( attribute, bufferType ) {
var array = attribute.array;
var usage = attribute.usage;
const array = attribute.array;
const usage = attribute.usage;
var buffer = gl.createBuffer();
const buffer = gl.createBuffer();
gl.bindBuffer( bufferType, buffer );
gl.bufferData( bufferType, array, usage );
attribute.onUploadCallback();
var type = gl.FLOAT;
let type = gl.FLOAT;
if ( array instanceof Float32Array ) {
......@@ -67,8 +67,8 @@ function WebGLAttributes( gl, capabilities ) {
function updateBuffer( buffer, attribute, bufferType ) {
var array = attribute.array;
var updateRange = attribute.updateRange;
const array = attribute.array;
const updateRange = attribute.updateRange;
gl.bindBuffer( bufferType, buffer );
......@@ -112,7 +112,7 @@ function WebGLAttributes( gl, capabilities ) {
if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
var data = buffers.get( attribute );
const data = buffers.get( attribute );
if ( data ) {
......@@ -128,7 +128,7 @@ function WebGLAttributes( gl, capabilities ) {
if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
var data = buffers.get( attribute );
const data = buffers.get( attribute );
if ( data === undefined ) {
......
......@@ -13,25 +13,25 @@ import { cloneUniforms } from '../shaders/UniformsUtils.js';
function WebGLBackground( renderer, state, objects, premultipliedAlpha ) {
var clearColor = new Color( 0x000000 );
var clearAlpha = 0;
const clearColor = new Color( 0x000000 );
let clearAlpha = 0;
var planeMesh;
var boxMesh;
let planeMesh;
let boxMesh;
var currentBackground = null;
var currentBackgroundVersion = 0;
var currentTonemapping = null;
let currentBackground = null;
let currentBackgroundVersion = 0;
let currentTonemapping = null;
function render( renderList, scene, camera, forceClear ) {
var background = scene.background;
let background = scene.background;
// Ignore background in AR
// TODO: Reconsider this.
var xr = renderer.xr;
var session = xr.getSession && xr.getSession();
const xr = renderer.xr;
const session = xr.getSession && xr.getSession();
if ( session && session.environmentBlendMode === 'additive' ) {
......@@ -98,7 +98,7 @@ function WebGLBackground( renderer, state, objects, premultipliedAlpha ) {
}
var texture = background.isWebGLCubeRenderTarget ? background.texture : background;
const texture = background.isWebGLCubeRenderTarget ? background.texture : background;
boxMesh.material.uniforms.envMap.value = texture;
boxMesh.material.uniforms.flipEnvMap.value = texture.isCubeTexture ? - 1 : 1;
......
......@@ -4,9 +4,9 @@
function WebGLBufferRenderer( gl, extensions, info, capabilities ) {
var isWebGL2 = capabilities.isWebGL2;
const isWebGL2 = capabilities.isWebGL2;
var mode;
let mode;
function setMode( value ) {
......@@ -26,7 +26,7 @@ function WebGLBufferRenderer( gl, extensions, info, capabilities ) {
if ( primcount === 0 ) return;
var extension, methodName;
let extension, methodName;
if ( isWebGL2 ) {
......
......@@ -4,13 +4,13 @@
function WebGLCapabilities( gl, extensions, parameters ) {
var maxAnisotropy;
let maxAnisotropy;
function getMaxAnisotropy() {
if ( maxAnisotropy !== undefined ) return maxAnisotropy;
var extension = extensions.get( 'EXT_texture_filter_anisotropic' );
const extension = extensions.get( 'EXT_texture_filter_anisotropic' );
if ( extension !== null ) {
......@@ -57,12 +57,12 @@ function WebGLCapabilities( gl, extensions, parameters ) {
}
/* eslint-disable no-undef */
var isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||
const isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||
( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );
/* eslint-enable no-undef */
var precision = parameters.precision !== undefined ? parameters.precision : 'highp';
var maxPrecision = getMaxPrecision( precision );
let precision = parameters.precision !== undefined ? parameters.precision : 'highp';
const maxPrecision = getMaxPrecision( precision );
if ( maxPrecision !== precision ) {
......@@ -71,23 +71,23 @@ function WebGLCapabilities( gl, extensions, parameters ) {
}
var logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;
const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;
var maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );
var maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );
var maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );
var maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );
const maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );
const maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );
const maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );
const maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );
var maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );
var maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );
var maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );
var maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );
const maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );
const maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );
const maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );
const maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );
var vertexTextures = maxVertexTextures > 0;
var floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );
var floatVertexTextures = vertexTextures && floatFragmentTextures;
const vertexTextures = maxVertexTextures > 0;
const floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );
const floatVertexTextures = vertexTextures && floatFragmentTextures;
var maxSamples = isWebGL2 ? gl.getParameter( gl.MAX_SAMPLES ) : 0;
const maxSamples = isWebGL2 ? gl.getParameter( gl.MAX_SAMPLES ) : 0;
return {
......
......@@ -7,14 +7,14 @@ import { Plane } from '../../math/Plane.js';
function WebGLClipping() {
var scope = this,
const scope = this;
globalState = null,
let globalState = null,
numGlobalPlanes = 0,
localClippingEnabled = false,
renderingShadows = false,
renderingShadows = false;
plane = new Plane(),
const plane = new Plane(),
viewNormalMatrix = new Matrix3(),
uniform = { value: null, needsUpdate: false };
......@@ -25,7 +25,7 @@ function WebGLClipping() {
this.init = function ( planes, enableLocalClipping, camera ) {
var enabled =
const enabled =
planes.length !== 0 ||
enableLocalClipping ||
// enable state of previous frame - the clipping code has to
......@@ -76,16 +76,16 @@ function WebGLClipping() {
} else {
var nGlobal = renderingShadows ? 0 : numGlobalPlanes,
lGlobal = nGlobal * 4,
const nGlobal = renderingShadows ? 0 : numGlobalPlanes,
lGlobal = nGlobal * 4;
dstArray = cache.clippingState || null;
let dstArray = cache.clippingState || null;
uniform.value = dstArray; // ensure unique state
dstArray = projectPlanes( planes, camera, lGlobal, fromCache );
for ( var i = 0; i !== lGlobal; ++ i ) {
for ( let i = 0; i !== lGlobal; ++ i ) {
dstArray[ i ] = globalState[ i ];
......@@ -116,7 +116,7 @@ function WebGLClipping() {
function projectPlanes( planes, camera, dstOffset, skipTransform ) {
var nPlanes = planes !== null ? planes.length : 0,
let nPlanes = planes !== null ? planes.length : 0,
dstArray = null;
if ( nPlanes !== 0 ) {
......@@ -125,7 +125,7 @@ function WebGLClipping() {
if ( skipTransform !== true || dstArray === null ) {
var flatSize = dstOffset + nPlanes * 4,
const flatSize = dstOffset + nPlanes * 4,
viewMatrix = camera.matrixWorldInverse;
viewNormalMatrix.getNormalMatrix( viewMatrix );
......@@ -136,7 +136,7 @@ function WebGLClipping() {
}
for ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {
for ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {
plane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );
......
......@@ -4,7 +4,7 @@
function WebGLExtensions( gl ) {
var extensions = {};
const extensions = {};
return {
......@@ -16,7 +16,7 @@ function WebGLExtensions( gl ) {
}
var extension;
let extension;
switch ( name ) {
......
......@@ -8,13 +8,13 @@ import { arrayMax } from '../../utils.js';
function WebGLGeometries( gl, attributes, info ) {
var geometries = new WeakMap();
var wireframeAttributes = new WeakMap();
const geometries = new WeakMap();
const wireframeAttributes = new WeakMap();
function onGeometryDispose( event ) {
var geometry = event.target;
var buffergeometry = geometries.get( geometry );
const geometry = event.target;
const buffergeometry = geometries.get( geometry );
if ( buffergeometry.index !== null ) {
......@@ -22,7 +22,7 @@ function WebGLGeometries( gl, attributes, info ) {
}
for ( var name in buffergeometry.attributes ) {
for ( const name in buffergeometry.attributes ) {
attributes.remove( buffergeometry.attributes[ name ] );
......@@ -32,7 +32,7 @@ function WebGLGeometries( gl, attributes, info ) {
geometries.delete( geometry );
var attribute = wireframeAttributes.get( buffergeometry );
const attribute = wireframeAttributes.get( buffergeometry );
if ( attribute ) {
......@@ -49,7 +49,7 @@ function WebGLGeometries( gl, attributes, info ) {
function get( object, geometry ) {
var buffergeometry = geometries.get( geometry );
let buffergeometry = geometries.get( geometry );
if ( buffergeometry ) return buffergeometry;
......@@ -81,8 +81,8 @@ function WebGLGeometries( gl, attributes, info ) {
function update( geometry ) {
var index = geometry.index;
var geometryAttributes = geometry.attributes;
const index = geometry.index;
const geometryAttributes = geometry.attributes;
if ( index !== null ) {
......@@ -90,7 +90,7 @@ function WebGLGeometries( gl, attributes, info ) {
}
for ( var name in geometryAttributes ) {
for ( const name in geometryAttributes ) {
attributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );
......@@ -98,13 +98,13 @@ function WebGLGeometries( gl, attributes, info ) {
// morph targets
var morphAttributes = geometry.morphAttributes;
const morphAttributes = geometry.morphAttributes;
for ( var name in morphAttributes ) {
for ( const name in morphAttributes ) {
var array = morphAttributes[ name ];
const array = morphAttributes[ name ];
for ( var i = 0, l = array.length; i < l; i ++ ) {
for ( let i = 0, l = array.length; i < l; i ++ ) {
attributes.update( array[ i ], gl.ARRAY_BUFFER );
......@@ -116,22 +116,22 @@ function WebGLGeometries( gl, attributes, info ) {
function updateWireframeAttribute( geometry ) {
var indices = [];
const indices = [];
var geometryIndex = geometry.index;
var geometryPosition = geometry.attributes.position;
var version = 0;
const geometryIndex = geometry.index;
const geometryPosition = geometry.attributes.position;
let version = 0;
if ( geometryIndex !== null ) {
var array = geometryIndex.array;
const array = geometryIndex.array;
version = geometryIndex.version;
for ( var i = 0, l = array.length; i < l; i += 3 ) {
for ( let i = 0, l = array.length; i < l; i += 3 ) {
var a = array[ i + 0 ];
var b = array[ i + 1 ];
var c = array[ i + 2 ];
const a = array[ i + 0 ];
const b = array[ i + 1 ];
const c = array[ i + 2 ];
indices.push( a, b, b, c, c, a );
......@@ -139,14 +139,14 @@ function WebGLGeometries( gl, attributes, info ) {
} else {
var array = geometryPosition.array;
const array = geometryPosition.array;
version = geometryPosition.version;
for ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {
for ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {
var a = i + 0;
var b = i + 1;
var c = i + 2;
const a = i + 0;
const b = i + 1;
const c = i + 2;
indices.push( a, b, b, c, c, a );
......@@ -154,14 +154,14 @@ function WebGLGeometries( gl, attributes, info ) {
}
var attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );
const attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );
attribute.version = version;
attributes.update( attribute, gl.ELEMENT_ARRAY_BUFFER );
//
var previousAttribute = wireframeAttributes.get( geometry );
const previousAttribute = wireframeAttributes.get( geometry );
if ( previousAttribute ) attributes.remove( previousAttribute );
......@@ -173,11 +173,11 @@ function WebGLGeometries( gl, attributes, info ) {
function getWireframeAttribute( geometry ) {
var currentAttribute = wireframeAttributes.get( geometry );
const currentAttribute = wireframeAttributes.get( geometry );
if ( currentAttribute ) {
var geometryIndex = geometry.index;
const geometryIndex = geometry.index;
if ( geometryIndex !== null ) {
......
......@@ -4,9 +4,9 @@
function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {
var isWebGL2 = capabilities.isWebGL2;
const isWebGL2 = capabilities.isWebGL2;
var mode;
let mode;
function setMode( value ) {
......@@ -14,7 +14,7 @@ function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {
}
var type, bytesPerElement;
let type, bytesPerElement;
function setIndex( value ) {
......@@ -35,7 +35,7 @@ function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {
if ( primcount === 0 ) return;
var extension, methodName;
let extension, methodName;
if ( isWebGL2 ) {
......
......@@ -4,12 +4,12 @@
function WebGLInfo( gl ) {
var memory = {
const memory = {
geometries: 0,
textures: 0
};
var render = {
const render = {
frame: 0,
calls: 0,
triangles: 0,
......
......@@ -9,7 +9,7 @@ import { Vector3 } from '../../math/Vector3.js';
function UniformsCache() {
var lights = {};
const lights = {};
return {
......@@ -21,7 +21,7 @@ function UniformsCache() {
}
var uniforms;
let uniforms;
switch ( light.type ) {
......@@ -84,7 +84,7 @@ function UniformsCache() {
function ShadowUniformsCache() {
var lights = {};
const lights = {};
return {
......@@ -96,7 +96,7 @@ function ShadowUniformsCache() {
}
var uniforms;
let uniforms;
switch ( light.type ) {
......@@ -142,7 +142,7 @@ function ShadowUniformsCache() {
var nextVersion = 0;
let nextVersion = 0;
function shadowCastingLightsFirst( lightA, lightB ) {
......@@ -152,11 +152,11 @@ function shadowCastingLightsFirst( lightA, lightB ) {
function WebGLLights() {
var cache = new UniformsCache();
const cache = new UniformsCache();
var shadowCache = ShadowUniformsCache();
const shadowCache = ShadowUniformsCache();
var state = {
const state = {
version: 0,
......@@ -191,41 +191,41 @@ function WebGLLights() {
};
for ( var i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );
for ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );
var vector3 = new Vector3();
var matrix4 = new Matrix4();
var matrix42 = new Matrix4();
const vector3 = new Vector3();
const matrix4 = new Matrix4();
const matrix42 = new Matrix4();
function setup( lights, shadows, camera ) {
var r = 0, g = 0, b = 0;
let r = 0, g = 0, b = 0;
for ( var i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );
for ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );
var directionalLength = 0;
var pointLength = 0;
var spotLength = 0;
var rectAreaLength = 0;
var hemiLength = 0;
let directionalLength = 0;
let pointLength = 0;
let spotLength = 0;
let rectAreaLength = 0;
let hemiLength = 0;
var numDirectionalShadows = 0;
var numPointShadows = 0;
var numSpotShadows = 0;
let numDirectionalShadows = 0;
let numPointShadows = 0;
let numSpotShadows = 0;
var viewMatrix = camera.matrixWorldInverse;
const viewMatrix = camera.matrixWorldInverse;
lights.sort( shadowCastingLightsFirst );
for ( var i = 0, l = lights.length; i < l; i ++ ) {
for ( let i = 0, l = lights.length; i < l; i ++ ) {
var light = lights[ i ];
const light = lights[ i ];
var color = light.color;
var intensity = light.intensity;
var distance = light.distance;
const color = light.color;
const intensity = light.intensity;
const distance = light.distance;
var shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;
const shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;
if ( light.isAmbientLight ) {
......@@ -235,7 +235,7 @@ function WebGLLights() {
} else if ( light.isLightProbe ) {
for ( var j = 0; j < 9; j ++ ) {
for ( let j = 0; j < 9; j ++ ) {
state.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );
......@@ -243,7 +243,7 @@ function WebGLLights() {
} else if ( light.isDirectionalLight ) {
var uniforms = cache.get( light );
const uniforms = cache.get( light );
uniforms.color.copy( light.color ).multiplyScalar( light.intensity );
uniforms.direction.setFromMatrixPosition( light.matrixWorld );
......@@ -253,9 +253,9 @@ function WebGLLights() {
if ( light.castShadow ) {
var shadow = light.shadow;
const shadow = light.shadow;
var shadowUniforms = shadowCache.get( light );
const shadowUniforms = shadowCache.get( light );
shadowUniforms.shadowBias = shadow.bias;
shadowUniforms.shadowRadius = shadow.radius;
......@@ -275,7 +275,7 @@ function WebGLLights() {
} else if ( light.isSpotLight ) {
var uniforms = cache.get( light );
const uniforms = cache.get( light );
uniforms.position.setFromMatrixPosition( light.matrixWorld );
uniforms.position.applyMatrix4( viewMatrix );
......@@ -294,9 +294,9 @@ function WebGLLights() {
if ( light.castShadow ) {
var shadow = light.shadow;
const shadow = light.shadow;
var shadowUniforms = shadowCache.get( light );
const shadowUniforms = shadowCache.get( light );
shadowUniforms.shadowBias = shadow.bias;
shadowUniforms.shadowRadius = shadow.radius;
......@@ -316,7 +316,7 @@ function WebGLLights() {
} else if ( light.isRectAreaLight ) {
var uniforms = cache.get( light );
const uniforms = cache.get( light );
// (a) intensity is the total visible light emitted
//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );
......@@ -348,7 +348,7 @@ function WebGLLights() {
} else if ( light.isPointLight ) {
var uniforms = cache.get( light );
const uniforms = cache.get( light );
uniforms.position.setFromMatrixPosition( light.matrixWorld );
uniforms.position.applyMatrix4( viewMatrix );
......@@ -359,9 +359,9 @@ function WebGLLights() {
if ( light.castShadow ) {
var shadow = light.shadow;
const shadow = light.shadow;
var shadowUniforms = shadowCache.get( light );
const shadowUniforms = shadowCache.get( light );
shadowUniforms.shadowBias = shadow.bias;
shadowUniforms.shadowRadius = shadow.radius;
......@@ -383,7 +383,7 @@ function WebGLLights() {
} else if ( light.isHemisphereLight ) {
var uniforms = cache.get( light );
const uniforms = cache.get( light );
uniforms.direction.setFromMatrixPosition( light.matrixWorld );
uniforms.direction.transformDirection( viewMatrix );
......@@ -404,7 +404,7 @@ function WebGLLights() {
state.ambient[ 1 ] = g;
state.ambient[ 2 ] = b;
var hash = state.hash;
const hash = state.hash;
if ( hash.directionalLength !== directionalLength ||
hash.pointLength !== pointLength ||
......
......@@ -143,7 +143,7 @@ function WebGLMaterials( properties ) {
}
var envMap = material.envMap || environment;
const envMap = material.envMap || environment;
if ( envMap ) {
......@@ -180,7 +180,7 @@ function WebGLMaterials( properties ) {
// 5. alpha map
// 6. emissive map
var uvScaleMap;
let uvScaleMap;
if ( material.map ) {
......@@ -243,7 +243,7 @@ function WebGLMaterials( properties ) {
// 1. ao map
// 2. light map
var uv2ScaleMap;
let uv2ScaleMap;
if ( material.aoMap ) {
......@@ -314,7 +314,7 @@ function WebGLMaterials( properties ) {
// 1. color map
// 2. alpha map
var uvScaleMap;
let uvScaleMap;
if ( material.map ) {
......@@ -362,7 +362,7 @@ function WebGLMaterials( properties ) {
// 1. color map
// 2. alpha map
var uvScaleMap;
let uvScaleMap;
if ( material.map ) {
......
......@@ -10,19 +10,19 @@ function absNumericalSort( a, b ) {
function WebGLMorphtargets( gl ) {
var influencesList = {};
var morphInfluences = new Float32Array( 8 );
const influencesList = {};
const morphInfluences = new Float32Array( 8 );
function update( object, geometry, material, program ) {
var objectInfluences = object.morphTargetInfluences;
const objectInfluences = object.morphTargetInfluences;
// When object doesn't have morph target influences defined, we treat it as a 0-length array
// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences
var length = objectInfluences === undefined ? 0 : objectInfluences.length;
const length = objectInfluences === undefined ? 0 : objectInfluences.length;
var influences = influencesList[ geometry.id ];
let influences = influencesList[ geometry.id ];
if ( influences === undefined ) {
......@@ -30,7 +30,7 @@ function WebGLMorphtargets( gl ) {
influences = [];
for ( var i = 0; i < length; i ++ ) {
for ( let i = 0; i < length; i ++ ) {
influences[ i ] = [ i, 0 ];
......@@ -40,14 +40,14 @@ function WebGLMorphtargets( gl ) {
}
var morphTargets = material.morphTargets && geometry.morphAttributes.position;
var morphNormals = material.morphNormals && geometry.morphAttributes.normal;
const morphTargets = material.morphTargets && geometry.morphAttributes.position;
const morphNormals = material.morphNormals && geometry.morphAttributes.normal;
// Remove current morphAttributes
for ( var i = 0; i < length; i ++ ) {
for ( let i = 0; i < length; i ++ ) {
var influence = influences[ i ];
const influence = influences[ i ];
if ( influence[ 1 ] !== 0 ) {
......@@ -60,9 +60,9 @@ function WebGLMorphtargets( gl ) {
// Collect influences
for ( var i = 0; i < length; i ++ ) {
for ( let i = 0; i < length; i ++ ) {
var influence = influences[ i ];
const influence = influences[ i ];
influence[ 0 ] = i;
influence[ 1 ] = objectInfluences[ i ];
......@@ -73,16 +73,16 @@ function WebGLMorphtargets( gl ) {
// Add morphAttributes
var morphInfluencesSum = 0;
let morphInfluencesSum = 0;
for ( var i = 0; i < 8; i ++ ) {
for ( let i = 0; i < 8; i ++ ) {
var influence = influences[ i ];
const influence = influences[ i ];
if ( influence ) {
var index = influence[ 0 ];
var value = influence[ 1 ];
const index = influence[ 0 ];
const value = influence[ 1 ];
if ( value ) {
......@@ -104,7 +104,7 @@ function WebGLMorphtargets( gl ) {
// GLSL shader uses formula baseinfluence * base + sum(target * influence)
// This allows us to switch between absolute morphs and relative morphs without changing shader code
// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)
var morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;
const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;
program.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );
program.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );
......
......@@ -4,14 +4,14 @@
function WebGLObjects( gl, geometries, attributes, info ) {
var updateMap = new WeakMap();
let updateMap = new WeakMap();
function update( object ) {
var frame = info.render.frame;
const frame = info.render.frame;
var geometry = object.geometry;
var buffergeometry = geometries.get( object, geometry );
const geometry = object.geometry;
const buffergeometry = geometries.get( object, geometry );
// Update once per frame
......
......@@ -7,13 +7,13 @@ import { WebGLShader } from './WebGLShader.js';
import { ShaderChunk } from '../shaders/ShaderChunk.js';
import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, EquirectangularRefractionMapping, CubeRefractionMapping, SphericalReflectionMapping, EquirectangularReflectionMapping, CubeUVRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, ACESFilmicToneMapping, CineonToneMapping, Uncharted2ToneMapping, ReinhardToneMapping, LinearToneMapping, GammaEncoding, RGBDEncoding, RGBM16Encoding, RGBM7Encoding, RGBEEncoding, sRGBEncoding, LinearEncoding, LogLuvEncoding } from '../../constants.js';
var programIdCount = 0;
let programIdCount = 0;
function addLineNumbers( string ) {
var lines = string.split( '\n' );
const lines = string.split( '\n' );
for ( var i = 0; i < lines.length; i ++ ) {
for ( let i = 0; i < lines.length; i ++ ) {
lines[ i ] = ( i + 1 ) + ': ' + lines[ i ];
......@@ -52,15 +52,15 @@ function getEncodingComponents( encoding ) {
function getShaderErrors( gl, shader, type ) {
var status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );
var log = gl.getShaderInfoLog( shader ).trim();
const status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );
const log = gl.getShaderInfoLog( shader ).trim();
if ( status && log === '' ) return '';
// --enable-privileged-webgl-extension
// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );
var source = gl.getShaderSource( shader );
const source = gl.getShaderSource( shader );
return 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\n' + log + addLineNumbers( source );
......@@ -68,21 +68,21 @@ function getShaderErrors( gl, shader, type ) {
function getTexelDecodingFunction( functionName, encoding ) {
var components = getEncodingComponents( encoding );
const components = getEncodingComponents( encoding );
return 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';
}
function getTexelEncodingFunction( functionName, encoding ) {
var components = getEncodingComponents( encoding );
const components = getEncodingComponents( encoding );
return 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';
}
function getToneMappingFunction( functionName, toneMapping ) {
var toneMappingName;
let toneMappingName;
switch ( toneMapping ) {
......@@ -117,7 +117,7 @@ function getToneMappingFunction( functionName, toneMapping ) {
function generateExtensions( parameters ) {
var chunks = [
const chunks = [
( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',
( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',
( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',
......@@ -130,11 +130,11 @@ function generateExtensions( parameters ) {
function generateDefines( defines ) {
var chunks = [];
const chunks = [];
for ( var name in defines ) {
for ( const name in defines ) {
var value = defines[ name ];
const value = defines[ name ];
if ( value === false ) continue;
......@@ -148,14 +148,14 @@ function generateDefines( defines ) {
function fetchAttributeLocations( gl, program ) {
var attributes = {};
const attributes = {};
var n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );
const n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );
for ( var i = 0; i < n; i ++ ) {
for ( let i = 0; i < n; i ++ ) {
var info = gl.getActiveAttrib( program, i );
var name = info.name;
const info = gl.getActiveAttrib( program, i );
const name = info.name;
// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );
......@@ -197,7 +197,7 @@ function replaceClippingPlaneNums( string, parameters ) {
// Resolve Includes
var includePattern = /^[ \t]*#include +<([\w\d./]+)>/gm;
const includePattern = /^[ \t]*#include +<([\w\d./]+)>/gm;
function resolveIncludes( string ) {
......@@ -207,7 +207,7 @@ function resolveIncludes( string ) {
function includeReplacer( match, include ) {
var string = ShaderChunk[ include ];
const string = ShaderChunk[ include ];
if ( string === undefined ) {
......@@ -221,8 +221,8 @@ function includeReplacer( match, include ) {
// Unroll Loops
var deprecatedUnrollLoopPattern = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g;
var unrollLoopPattern = /#pragma unroll_loop_start[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}[\s]+?#pragma unroll_loop_end/g;
const deprecatedUnrollLoopPattern = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g;
const unrollLoopPattern = /#pragma unroll_loop_start[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}[\s]+?#pragma unroll_loop_end/g;
function unrollLoops( string ) {
......@@ -241,9 +241,9 @@ function deprecatedLoopReplacer( match, start, end, snippet ) {
function loopReplacer( match, start, end, snippet ) {
var string = '';
let string = '';
for ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {
for ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {
string += snippet
.replace( /\[ i \]/g, '[ ' + i + ' ]' )
......@@ -259,7 +259,7 @@ function loopReplacer( match, start, end, snippet ) {
function generatePrecision( parameters ) {
var precisionstring = "precision " + parameters.precision + " float;\nprecision " + parameters.precision + " int;";
let precisionstring = "precision " + parameters.precision + " float;\nprecision " + parameters.precision + " int;";
if ( parameters.precision === "highp" ) {
......@@ -281,7 +281,7 @@ function generatePrecision( parameters ) {
function generateShadowMapTypeDefine( parameters ) {
var shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';
let shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';
if ( parameters.shadowMapType === PCFShadowMap ) {
......@@ -303,7 +303,7 @@ function generateShadowMapTypeDefine( parameters ) {
function generateEnvMapTypeDefine( parameters ) {
var envMapTypeDefine = 'ENVMAP_TYPE_CUBE';
let envMapTypeDefine = 'ENVMAP_TYPE_CUBE';
if ( parameters.envMap ) {
......@@ -338,7 +338,7 @@ function generateEnvMapTypeDefine( parameters ) {
function generateEnvMapModeDefine( parameters ) {
var envMapModeDefine = 'ENVMAP_MODE_REFLECTION';
let envMapModeDefine = 'ENVMAP_MODE_REFLECTION';
if ( parameters.envMap ) {
......@@ -359,7 +359,7 @@ function generateEnvMapModeDefine( parameters ) {
function generateEnvMapBlendingDefine( parameters ) {
var envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';
let envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';
if ( parameters.envMap ) {
......@@ -387,27 +387,28 @@ function generateEnvMapBlendingDefine( parameters ) {
function WebGLProgram( renderer, cacheKey, parameters ) {
var gl = renderer.getContext();
const gl = renderer.getContext();
var defines = parameters.defines;
const defines = parameters.defines;
var vertexShader = parameters.vertexShader;
var fragmentShader = parameters.fragmentShader;
var shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );
var envMapTypeDefine = generateEnvMapTypeDefine( parameters );
var envMapModeDefine = generateEnvMapModeDefine( parameters );
var envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );
let vertexShader = parameters.vertexShader;
let fragmentShader = parameters.fragmentShader;
const shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );
const envMapTypeDefine = generateEnvMapTypeDefine( parameters );
const envMapModeDefine = generateEnvMapModeDefine( parameters );
const envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );
var gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;
var customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );
const gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;
var customDefines = generateDefines( defines );
const customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );
var program = gl.createProgram();
const customDefines = generateDefines( defines );
var prefixVertex, prefixFragment;
const program = gl.createProgram();
let prefixVertex, prefixFragment;
if ( parameters.isRawShaderMaterial ) {
......@@ -668,9 +669,9 @@ function WebGLProgram( renderer, cacheKey, parameters ) {
if ( parameters.isWebGL2 && ! parameters.isRawShaderMaterial ) {
var isGLSL3ShaderMaterial = false;
let isGLSL3ShaderMaterial = false;
var versionRegex = /^\s*#version\s+300\s+es\s*\n/;
const versionRegex = /^\s*#version\s+300\s+es\s*\n/;
if ( parameters.isShaderMaterial &&
vertexShader.match( versionRegex ) !== null &&
......@@ -711,14 +712,14 @@ function WebGLProgram( renderer, cacheKey, parameters ) {
}
var vertexGlsl = prefixVertex + vertexShader;
var fragmentGlsl = prefixFragment + fragmentShader;
const vertexGlsl = prefixVertex + vertexShader;
const fragmentGlsl = prefixFragment + fragmentShader;
// console.log( '*VERTEX*', vertexGlsl );
// console.log( '*FRAGMENT*', fragmentGlsl );
var glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );
var glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );
const glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );
const glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );
gl.attachShader( program, glVertexShader );
gl.attachShader( program, glFragmentShader );
......@@ -741,19 +742,19 @@ function WebGLProgram( renderer, cacheKey, parameters ) {
// check for link errors
if ( renderer.debug.checkShaderErrors ) {
var programLog = gl.getProgramInfoLog( program ).trim();
var vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();
var fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();
const programLog = gl.getProgramInfoLog( program ).trim();
const vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();
const fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();
var runnable = true;
var haveDiagnostics = true;
let runnable = true;
let haveDiagnostics = true;
if ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {
runnable = false;
var vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );
var fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );
const vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );
const fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );
console.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );
......@@ -806,7 +807,7 @@ function WebGLProgram( renderer, cacheKey, parameters ) {
// set up caching for uniform locations
var cachedUniforms;
let cachedUniforms;
this.getUniforms = function () {
......@@ -822,7 +823,7 @@ function WebGLProgram( renderer, cacheKey, parameters ) {
// set up caching for attribute locations
var cachedAttributes;
let cachedAttributes;
this.getAttributes = function () {
......
......@@ -9,16 +9,17 @@ import { UniformsUtils } from '../shaders/UniformsUtils.js';
function WebGLPrograms( renderer, extensions, capabilities ) {
var programs = [];
const programs = [];
var isWebGL2 = capabilities.isWebGL2;
var logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;
var floatVertexTextures = capabilities.floatVertexTextures;
var precision = capabilities.precision;
var maxVertexUniforms = capabilities.maxVertexUniforms;
var vertexTextures = capabilities.vertexTextures;
const isWebGL2 = capabilities.isWebGL2;
const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;
const floatVertexTextures = capabilities.floatVertexTextures;
const maxVertexUniforms = capabilities.maxVertexUniforms;
const vertexTextures = capabilities.vertexTextures;
var shaderIDs = {
let precision = capabilities.precision;
const shaderIDs = {
MeshDepthMaterial: 'depth',
MeshDistanceMaterial: 'distanceRGBA',
MeshNormalMaterial: 'normal',
......@@ -36,7 +37,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
SpriteMaterial: 'sprite'
};
var parameterNames = [
const parameterNames = [
"precision", "isWebGL2", "supportsVertexTextures", "outputEncoding", "instancing",
"map", "mapEncoding", "matcap", "matcapEncoding", "envMap", "envMapMode", "envMapEncoding", "envMapCubeUV",
"lightMap", "lightMapEncoding", "aoMap", "emissiveMap", "emissiveMapEncoding", "bumpMap", "normalMap", "objectSpaceNormalMap", "tangentSpaceNormalMap", "clearcoatMap", "clearcoatRoughnessMap", "clearcoatNormalMap", "displacementMap", "specularMap",
......@@ -54,11 +55,11 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
function getShaderObject( material, shaderID ) {
var shaderobject;
let shaderobject;
if ( shaderID ) {
var shader = ShaderLib[ shaderID ];
const shader = ShaderLib[ shaderID ];
shaderobject = {
name: material.type,
......@@ -84,8 +85,8 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
function allocateBones( object ) {
var skeleton = object.skeleton;
var bones = skeleton.bones;
const skeleton = object.skeleton;
const bones = skeleton.bones;
if ( floatVertexTextures ) {
......@@ -100,10 +101,10 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
// - limit here is ANGLE's 254 max uniform vectors
// (up to 54 should be safe)
var nVertexUniforms = maxVertexUniforms;
var nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );
const nVertexUniforms = maxVertexUniforms;
const nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );
var maxBones = Math.min( nVertexMatrices, bones.length );
const maxBones = Math.min( nVertexMatrices, bones.length );
if ( maxBones < bones.length ) {
......@@ -120,7 +121,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
function getTextureEncodingFromMap( map ) {
var encoding;
let encoding;
if ( ! map ) {
......@@ -143,17 +144,17 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
this.getParameters = function ( material, lights, shadows, scene, nClipPlanes, nClipIntersection, object ) {
var fog = scene.fog;
var environment = material.isMeshStandardMaterial ? scene.environment : null;
const fog = scene.fog;
const environment = material.isMeshStandardMaterial ? scene.environment : null;
var envMap = material.envMap || environment;
const envMap = material.envMap || environment;
var shaderID = shaderIDs[ material.type ];
const shaderID = shaderIDs[ material.type ];
// heuristics to create shader parameters according to lights in the scene
// (not to blow over maxLights budget)
var maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;
const maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;
if ( material.precision !== null ) {
......@@ -167,12 +168,12 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
}
var shaderobject = getShaderObject( material, shaderID );
const shaderobject = getShaderObject( material, shaderID );
material.onBeforeCompile( shaderobject, renderer );
var currentRenderTarget = renderer.getRenderTarget();
const currentRenderTarget = renderer.getRenderTarget();
var parameters = {
const parameters = {
isWebGL2: isWebGL2,
......@@ -298,7 +299,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
this.getProgramCacheKey = function ( parameters ) {
var array = [];
const array = [];
if ( parameters.shaderID ) {
......@@ -313,7 +314,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
if ( parameters.defines !== undefined ) {
for ( var name in parameters.defines ) {
for ( const name in parameters.defines ) {
array.push( name );
array.push( parameters.defines[ name ] );
......@@ -324,7 +325,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
if ( parameters.isRawShaderMaterial === undefined ) {
for ( var i = 0; i < parameterNames.length; i ++ ) {
for ( let i = 0; i < parameterNames.length; i ++ ) {
array.push( parameters[ parameterNames[ i ] ] );
......@@ -343,12 +344,12 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
this.acquireProgram = function ( parameters, cacheKey ) {
var program;
let program;
// Check if code has been already compiled
for ( var p = 0, pl = programs.length; p < pl; p ++ ) {
for ( let p = 0, pl = programs.length; p < pl; p ++ ) {
var preexistingProgram = programs[ p ];
const preexistingProgram = programs[ p ];
if ( preexistingProgram.cacheKey === cacheKey ) {
......@@ -377,7 +378,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
if ( -- program.usedTimes === 0 ) {
// Remove from unordered set
var i = programs.indexOf( program );
const i = programs.indexOf( program );
programs[ i ] = programs[ programs.length - 1 ];
programs.pop();
......
......@@ -4,11 +4,11 @@
function WebGLProperties() {
var properties = new WeakMap();
let properties = new WeakMap();
function get( object ) {
var map = properties.get( object );
let map = properties.get( object );
if ( map === undefined ) {
......
......@@ -57,13 +57,13 @@ function reversePainterSortStable( a, b ) {
function WebGLRenderList() {
var renderItems = [];
var renderItemsIndex = 0;
const renderItems = [];
let renderItemsIndex = 0;
var opaque = [];
var transparent = [];
const opaque = [];
const transparent = [];
var defaultProgram = { id: - 1 };
const defaultProgram = { id: - 1 };
function init() {
......@@ -76,7 +76,7 @@ function WebGLRenderList() {
function getNextRenderItem( object, geometry, material, groupOrder, z, group ) {
var renderItem = renderItems[ renderItemsIndex ];
let renderItem = renderItems[ renderItemsIndex ];
if ( renderItem === undefined ) {
......@@ -116,7 +116,7 @@ function WebGLRenderList() {
function push( object, geometry, material, groupOrder, z, group ) {
var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );
const renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );
( material.transparent === true ? transparent : opaque ).push( renderItem );
......@@ -124,7 +124,7 @@ function WebGLRenderList() {
function unshift( object, geometry, material, groupOrder, z, group ) {
var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );
const renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );
( material.transparent === true ? transparent : opaque ).unshift( renderItem );
......@@ -141,9 +141,9 @@ function WebGLRenderList() {
// Clear references from inactive renderItems in the list
for ( var i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {
for ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {
var renderItem = renderItems[ i ];
const renderItem = renderItems[ i ];
if ( renderItem.id === null ) break;
......@@ -174,11 +174,11 @@ function WebGLRenderList() {
function WebGLRenderLists() {
var lists = new WeakMap();
let lists = new WeakMap();
function onSceneDispose( event ) {
var scene = event.target;
const scene = event.target;
scene.removeEventListener( 'dispose', onSceneDispose );
......@@ -188,8 +188,9 @@ function WebGLRenderLists() {
function get( scene, camera ) {
var cameras = lists.get( scene );
var list;
const cameras = lists.get( scene );
let list;
if ( cameras === undefined ) {
list = new WebGLRenderList();
......
......@@ -6,10 +6,10 @@ import { WebGLLights } from './WebGLLights.js';
function WebGLRenderState() {
var lights = new WebGLLights();
const lights = new WebGLLights();
var lightsArray = [];
var shadowsArray = [];
const lightsArray = [];
const shadowsArray = [];
function init() {
......@@ -36,7 +36,7 @@ function WebGLRenderState() {
}
var state = {
const state = {
lightsArray: lightsArray,
shadowsArray: shadowsArray,
......@@ -56,11 +56,11 @@ function WebGLRenderState() {
function WebGLRenderStates() {
var renderStates = new WeakMap();
let renderStates = new WeakMap();
function onSceneDispose( event ) {
var scene = event.target;
const scene = event.target;
scene.removeEventListener( 'dispose', onSceneDispose );
......@@ -70,7 +70,7 @@ function WebGLRenderStates() {
function get( scene, camera ) {
var renderState;
let renderState;
if ( renderStates.has( scene ) === false ) {
......
......@@ -4,7 +4,7 @@
function WebGLShader( gl, type, string ) {
var shader = gl.createShader( type );
const shader = gl.createShader( type );
gl.shaderSource( shader, string );
gl.compileShader( shader );
......
......@@ -20,9 +20,9 @@ import vsm_vert from '../shaders/ShaderLib/vsm_vert.glsl.js';
function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
var _frustum = new Frustum(),
let _frustum = new Frustum();
_shadowMapSize = new Vector2(),
const _shadowMapSize = new Vector2(),
_viewportSize = new Vector2(),
_viewport = new Vector4(),
......@@ -32,9 +32,9 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
_materialCache = {};
var shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };
const shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };
var shadowMaterialVertical = new ShaderMaterial( {
const shadowMaterialVertical = new ShaderMaterial( {
defines: {
SAMPLE_RATE: 2.0 / 8.0,
......@@ -53,10 +53,10 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
} );
var shadowMaterialHorizonal = shadowMaterialVertical.clone();
const shadowMaterialHorizonal = shadowMaterialVertical.clone();
shadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;
var fullScreenTri = new BufferGeometry();
const fullScreenTri = new BufferGeometry();
fullScreenTri.setAttribute(
"position",
new BufferAttribute(
......@@ -65,9 +65,9 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
)
);
var fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );
const fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );
var scope = this;
const scope = this;
this.enabled = false;
......@@ -83,11 +83,11 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
if ( lights.length === 0 ) return;
var currentRenderTarget = _renderer.getRenderTarget();
var activeCubeFace = _renderer.getActiveCubeFace();
var activeMipmapLevel = _renderer.getActiveMipmapLevel();
const currentRenderTarget = _renderer.getRenderTarget();
const activeCubeFace = _renderer.getActiveCubeFace();
const activeMipmapLevel = _renderer.getActiveMipmapLevel();
var _state = _renderer.state;
const _state = _renderer.state;
// Set GL state for depth map.
_state.setBlending( NoBlending );
......@@ -97,10 +97,10 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
// render depth map
for ( var i = 0, il = lights.length; i < il; i ++ ) {
for ( let i = 0, il = lights.length; i < il; i ++ ) {
var light = lights[ i ];
var shadow = light.shadow;
const light = lights[ i ];
const shadow = light.shadow;
if ( shadow === undefined ) {
......@@ -111,7 +111,7 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
_shadowMapSize.copy( shadow.mapSize );
var shadowFrameExtents = shadow.getFrameExtents();
const shadowFrameExtents = shadow.getFrameExtents();
_shadowMapSize.multiply( shadowFrameExtents );
......@@ -139,7 +139,7 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
if ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {
var pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };
const pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };
shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );
shadow.map.texture.name = light.name + ".shadowMap";
......@@ -152,7 +152,7 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
if ( shadow.map === null ) {
var pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };
const pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };
shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );
shadow.map.texture.name = light.name + ".shadowMap";
......@@ -164,11 +164,11 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
_renderer.setRenderTarget( shadow.map );
_renderer.clear();
var viewportCount = shadow.getViewportCount();
const viewportCount = shadow.getViewportCount();
for ( var vp = 0; vp < viewportCount; vp ++ ) {
for ( let vp = 0; vp < viewportCount; vp ++ ) {
var viewport = shadow.getViewport( vp );
const viewport = shadow.getViewport( vp );
_viewport.set(
_viewportSize.x * viewport.x,
......@@ -205,7 +205,7 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
function VSMPass( shadow, camera ) {
var geometry = _objects.update( fullScreenMesh );
const geometry = _objects.update( fullScreenMesh );
// vertical pass
......@@ -229,9 +229,9 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
function getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {
var index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;
const index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;
var material = _depthMaterials[ index ];
let material = _depthMaterials[ index ];
if ( material === undefined ) {
......@@ -254,9 +254,9 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
function getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {
var index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;
const index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;
var material = _distanceMaterials[ index ];
let material = _distanceMaterials[ index ];
if ( material === undefined ) {
......@@ -277,10 +277,10 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
function getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {
var result = null;
let result = null;
var getMaterialVariant = getDepthMaterialVariant;
var customMaterial = object.customDepthMaterial;
let getMaterialVariant = getDepthMaterialVariant;
let customMaterial = object.customDepthMaterial;
if ( light.isPointLight === true ) {
......@@ -291,7 +291,7 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
if ( customMaterial === undefined ) {
var useMorphing = false;
let useMorphing = false;
if ( material.morphTargets === true ) {
......@@ -299,7 +299,7 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
}
var useSkinning = false;
let useSkinning = false;
if ( object.isSkinnedMesh === true ) {
......@@ -315,7 +315,7 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
}
var useInstancing = object.isInstancedMesh === true;
const useInstancing = object.isInstancedMesh === true;
result = getMaterialVariant( useMorphing, useSkinning, useInstancing );
......@@ -332,9 +332,9 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
// in this case we need a unique material instance reflecting the
// appropriate state
var keyA = result.uuid, keyB = material.uuid;
const keyA = result.uuid, keyB = material.uuid;
var materialsForVariant = _materialCache[ keyA ];
let materialsForVariant = _materialCache[ keyA ];
if ( materialsForVariant === undefined ) {
......@@ -343,7 +343,7 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
}
var cachedMaterial = materialsForVariant[ keyB ];
let cachedMaterial = materialsForVariant[ keyB ];
if ( cachedMaterial === undefined ) {
......@@ -392,7 +392,7 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
if ( object.visible === false ) return;
var visible = object.layers.test( camera.layers );
const visible = object.layers.test( camera.layers );
if ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {
......@@ -400,21 +400,21 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
object.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );
var geometry = _objects.update( object );
var material = object.material;
const geometry = _objects.update( object );
const material = object.material;
if ( Array.isArray( material ) ) {
var groups = geometry.groups;
const groups = geometry.groups;
for ( var k = 0, kl = groups.length; k < kl; k ++ ) {
for ( let k = 0, kl = groups.length; k < kl; k ++ ) {
var group = groups[ k ];
var groupMaterial = material[ group.materialIndex ];
const group = groups[ k ];
const groupMaterial = material[ group.materialIndex ];
if ( groupMaterial && groupMaterial.visible ) {
var depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );
const depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );
_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );
......@@ -424,7 +424,7 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
} else if ( material.visible ) {
var depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );
const depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );
_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );
......@@ -434,9 +434,9 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
}
var children = object.children;
const children = object.children;
for ( var i = 0, l = children.length; i < l; i ++ ) {
for ( let i = 0, l = children.length; i < l; i ++ ) {
renderObject( children[ i ], camera, shadowCamera, light, type );
......
......@@ -7,15 +7,15 @@ import { Vector4 } from '../../math/Vector4.js';
function WebGLState( gl, extensions, capabilities ) {
var isWebGL2 = capabilities.isWebGL2;
const isWebGL2 = capabilities.isWebGL2;
function ColorBuffer() {
var locked = false;
let locked = false;
var color = new Vector4();
var currentColorMask = null;
var currentColorClear = new Vector4( 0, 0, 0, 0 );
const color = new Vector4();
let currentColorMask = null;
const currentColorClear = new Vector4( 0, 0, 0, 0 );
return {
......@@ -70,11 +70,11 @@ function WebGLState( gl, extensions, capabilities ) {
function DepthBuffer() {
var locked = false;
let locked = false;
var currentDepthMask = null;
var currentDepthFunc = null;
var currentDepthClear = null;
let currentDepthMask = null;
let currentDepthFunc = null;
let currentDepthClear = null;
return {
......@@ -202,16 +202,16 @@ function WebGLState( gl, extensions, capabilities ) {
function StencilBuffer() {
var locked = false;
let locked = false;
var currentStencilMask = null;
var currentStencilFunc = null;
var currentStencilRef = null;
var currentStencilFuncMask = null;
var currentStencilFail = null;
var currentStencilZFail = null;
var currentStencilZPass = null;
var currentStencilClear = null;
let currentStencilMask = null;
let currentStencilFunc = null;
let currentStencilRef = null;
let currentStencilFuncMask = null;
let currentStencilFail = null;
let currentStencilZFail = null;
let currentStencilZPass = null;
let currentStencilClear = null;
return {
......@@ -314,42 +314,42 @@ function WebGLState( gl, extensions, capabilities ) {
//
var colorBuffer = new ColorBuffer();
var depthBuffer = new DepthBuffer();
var stencilBuffer = new StencilBuffer();
const colorBuffer = new ColorBuffer();
const depthBuffer = new DepthBuffer();
const stencilBuffer = new StencilBuffer();
var maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );
var newAttributes = new Uint8Array( maxVertexAttributes );
var enabledAttributes = new Uint8Array( maxVertexAttributes );
var attributeDivisors = new Uint8Array( maxVertexAttributes );
const maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );
const newAttributes = new Uint8Array( maxVertexAttributes );
const enabledAttributes = new Uint8Array( maxVertexAttributes );
const attributeDivisors = new Uint8Array( maxVertexAttributes );
var enabledCapabilities = {};
let enabledCapabilities = {};
var currentProgram = null;
let currentProgram = null;
var currentBlendingEnabled = null;
var currentBlending = null;
var currentBlendEquation = null;
var currentBlendSrc = null;
var currentBlendDst = null;
var currentBlendEquationAlpha = null;
var currentBlendSrcAlpha = null;
var currentBlendDstAlpha = null;
var currentPremultipledAlpha = false;
let currentBlendingEnabled = null;
let currentBlending = null;
let currentBlendEquation = null;
let currentBlendSrc = null;
let currentBlendDst = null;
let currentBlendEquationAlpha = null;
let currentBlendSrcAlpha = null;
let currentBlendDstAlpha = null;
let currentPremultipledAlpha = false;
var currentFlipSided = null;
var currentCullFace = null;
let currentFlipSided = null;
let currentCullFace = null;
var currentLineWidth = null;
let currentLineWidth = null;
var currentPolygonOffsetFactor = null;
var currentPolygonOffsetUnits = null;
let currentPolygonOffsetFactor = null;
let currentPolygonOffsetUnits = null;
var maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );
const maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );
var lineWidthAvailable = false;
var version = 0;
var glVersion = gl.getParameter( gl.VERSION );
let lineWidthAvailable = false;
let version = 0;
const glVersion = gl.getParameter( gl.VERSION );
if ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {
......@@ -363,22 +363,22 @@ function WebGLState( gl, extensions, capabilities ) {
}
var currentTextureSlot = null;
var currentBoundTextures = {};
let currentTextureSlot = null;
let currentBoundTextures = {};
var currentScissor = new Vector4();
var currentViewport = new Vector4();
const currentScissor = new Vector4();
const currentViewport = new Vector4();
function createTexture( type, target, count ) {
var data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.
var texture = gl.createTexture();
const data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.
const texture = gl.createTexture();
gl.bindTexture( type, texture );
gl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );
gl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );
for ( var i = 0; i < count; i ++ ) {
for ( let i = 0; i < count; i ++ ) {
gl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );
......@@ -388,7 +388,7 @@ function WebGLState( gl, extensions, capabilities ) {
}
var emptyTextures = {};
const emptyTextures = {};
emptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );
emptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );
......@@ -411,7 +411,7 @@ function WebGLState( gl, extensions, capabilities ) {
function initAttributes() {
for ( var i = 0, l = newAttributes.length; i < l; i ++ ) {
for ( let i = 0, l = newAttributes.length; i < l; i ++ ) {
newAttributes[ i ] = 0;
......@@ -438,7 +438,7 @@ function WebGLState( gl, extensions, capabilities ) {
if ( attributeDivisors[ attribute ] !== meshPerAttribute ) {
var extension = isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );
const extension = isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );
extension[ isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );
attributeDivisors[ attribute ] = meshPerAttribute;
......@@ -449,7 +449,7 @@ function WebGLState( gl, extensions, capabilities ) {
function disableUnusedAttributes() {
for ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {
for ( let i = 0, l = enabledAttributes.length; i !== l; ++ i ) {
if ( enabledAttributes[ i ] !== newAttributes[ i ] ) {
......@@ -514,7 +514,7 @@ function WebGLState( gl, extensions, capabilities ) {
}
var equationToGL = {
const equationToGL = {
[ AddEquation ]: gl.FUNC_ADD,
[ SubtractEquation ]: gl.FUNC_SUBTRACT,
[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT
......@@ -527,7 +527,7 @@ function WebGLState( gl, extensions, capabilities ) {
} else {
var extension = extensions.get( 'EXT_blend_minmax' );
const extension = extensions.get( 'EXT_blend_minmax' );
if ( extension !== null ) {
......@@ -538,7 +538,7 @@ function WebGLState( gl, extensions, capabilities ) {
}
var factorToGL = {
const factorToGL = {
[ ZeroFactor ]: gl.ZERO,
[ OneFactor ]: gl.ONE,
[ SrcColorFactor ]: gl.SRC_COLOR,
......@@ -692,7 +692,7 @@ function WebGLState( gl, extensions, capabilities ) {
? disable( gl.CULL_FACE )
: enable( gl.CULL_FACE );
var flipSided = ( material.side === BackSide );
let flipSided = ( material.side === BackSide );
if ( frontFaceCW ) flipSided = ! flipSided;
setFlipSided( flipSided );
......@@ -706,7 +706,7 @@ function WebGLState( gl, extensions, capabilities ) {
depthBuffer.setMask( material.depthWrite );
colorBuffer.setMask( material.colorWrite );
var stencilWrite = material.stencilWrite;
const stencilWrite = material.stencilWrite;
stencilBuffer.setTest( stencilWrite );
if ( stencilWrite ) {
......@@ -848,7 +848,7 @@ function WebGLState( gl, extensions, capabilities ) {
}
var boundTexture = currentBoundTextures[ currentTextureSlot ];
let boundTexture = currentBoundTextures[ currentTextureSlot ];
if ( boundTexture === undefined ) {
......@@ -870,7 +870,7 @@ function WebGLState( gl, extensions, capabilities ) {
function unbindTexture() {
var boundTexture = currentBoundTextures[ currentTextureSlot ];
const boundTexture = currentBoundTextures[ currentTextureSlot ];
if ( boundTexture !== undefined && boundTexture.type !== undefined ) {
......@@ -953,7 +953,7 @@ function WebGLState( gl, extensions, capabilities ) {
function reset() {
for ( var i = 0; i < enabledAttributes.length; i ++ ) {
for ( let i = 0; i < enabledAttributes.length; i ++ ) {
if ( enabledAttributes[ i ] === 1 ) {
......
......@@ -50,35 +50,35 @@ import { Texture } from '../../textures/Texture.js';
import { DataTexture2DArray } from '../../textures/DataTexture2DArray.js';
import { DataTexture3D } from '../../textures/DataTexture3D.js';
var emptyTexture = new Texture();
var emptyTexture2dArray = new DataTexture2DArray();
var emptyTexture3d = new DataTexture3D();
var emptyCubeTexture = new CubeTexture();
const emptyTexture = new Texture();
const emptyTexture2dArray = new DataTexture2DArray();
const emptyTexture3d = new DataTexture3D();
const emptyCubeTexture = new CubeTexture();
// --- Utilities ---
// Array Caches (provide typed arrays for temporary by size)
var arrayCacheF32 = [];
var arrayCacheI32 = [];
const arrayCacheF32 = [];
const arrayCacheI32 = [];
// Float32Array caches used for uploading Matrix uniforms
var mat4array = new Float32Array( 16 );
var mat3array = new Float32Array( 9 );
var mat2array = new Float32Array( 4 );
const mat4array = new Float32Array( 16 );
const mat3array = new Float32Array( 9 );
const mat2array = new Float32Array( 4 );
// Flattening for arrays of vectors and matrices
function flatten( array, nBlocks, blockSize ) {
var firstElem = array[ 0 ];
const firstElem = array[ 0 ];
if ( firstElem <= 0 || firstElem > 0 ) return array;
// unoptimized: ! isNaN( firstElem )
// see http://jacksondunstan.com/articles/983
var n = nBlocks * blockSize,
let n = nBlocks * blockSize,
r = arrayCacheF32[ n ];
if ( r === undefined ) {
......@@ -92,7 +92,7 @@ function flatten( array, nBlocks, blockSize ) {
firstElem.toArray( r, 0 );
for ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {
for ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {
offset += blockSize;
array[ i ].toArray( r, offset );
......@@ -109,7 +109,7 @@ function arraysEqual( a, b ) {
if ( a.length !== b.length ) return false;
for ( var i = 0, l = a.length; i < l; i ++ ) {
for ( let i = 0, l = a.length; i < l; i ++ ) {
if ( a[ i ] !== b[ i ] ) return false;
......@@ -121,7 +121,7 @@ function arraysEqual( a, b ) {
function copyArray( a, b ) {
for ( var i = 0, l = b.length; i < l; i ++ ) {
for ( let i = 0, l = b.length; i < l; i ++ ) {
a[ i ] = b[ i ];
......@@ -133,7 +133,7 @@ function copyArray( a, b ) {
function allocTexUnits( textures, n ) {
var r = arrayCacheI32[ n ];
let r = arrayCacheI32[ n ];
if ( r === undefined ) {
......@@ -142,9 +142,12 @@ function allocTexUnits( textures, n ) {
}
for ( var i = 0; i !== n; ++ i )
for ( let i = 0; i !== n; ++ i ) {
r[ i ] = textures.allocateTextureUnit();
}
return r;
}
......@@ -158,7 +161,7 @@ function allocTexUnits( textures, n ) {
function setValueV1f( gl, v ) {
var cache = this.cache;
const cache = this.cache;
if ( cache[ 0 ] === v ) return;
......@@ -172,7 +175,7 @@ function setValueV1f( gl, v ) {
function setValueV2f( gl, v ) {
var cache = this.cache;
const cache = this.cache;
if ( v.x !== undefined ) {
......@@ -199,7 +202,7 @@ function setValueV2f( gl, v ) {
function setValueV3f( gl, v ) {
var cache = this.cache;
const cache = this.cache;
if ( v.x !== undefined ) {
......@@ -239,7 +242,7 @@ function setValueV3f( gl, v ) {
function setValueV4f( gl, v ) {
var cache = this.cache;
const cache = this.cache;
if ( v.x !== undefined ) {
......@@ -270,8 +273,8 @@ function setValueV4f( gl, v ) {
function setValueM2( gl, v ) {
var cache = this.cache;
var elements = v.elements;
const cache = this.cache;
const elements = v.elements;
if ( elements === undefined ) {
......@@ -297,8 +300,8 @@ function setValueM2( gl, v ) {
function setValueM3( gl, v ) {
var cache = this.cache;
var elements = v.elements;
const cache = this.cache;
const elements = v.elements;
if ( elements === undefined ) {
......@@ -324,8 +327,8 @@ function setValueM3( gl, v ) {
function setValueM4( gl, v ) {
var cache = this.cache;
var elements = v.elements;
const cache = this.cache;
const elements = v.elements;
if ( elements === undefined ) {
......@@ -353,8 +356,8 @@ function setValueM4( gl, v ) {
function setValueT1( gl, v, textures ) {
var cache = this.cache;
var unit = textures.allocateTextureUnit();
const cache = this.cache;
const unit = textures.allocateTextureUnit();
if ( cache[ 0 ] !== unit ) {
......@@ -369,8 +372,8 @@ function setValueT1( gl, v, textures ) {
function setValueT2DArray1( gl, v, textures ) {
var cache = this.cache;
var unit = textures.allocateTextureUnit();
const cache = this.cache;
const unit = textures.allocateTextureUnit();
if ( cache[ 0 ] !== unit ) {
......@@ -385,8 +388,8 @@ function setValueT2DArray1( gl, v, textures ) {
function setValueT3D1( gl, v, textures ) {
var cache = this.cache;
var unit = textures.allocateTextureUnit();
const cache = this.cache;
const unit = textures.allocateTextureUnit();
if ( cache[ 0 ] !== unit ) {
......@@ -401,8 +404,8 @@ function setValueT3D1( gl, v, textures ) {
function setValueT6( gl, v, textures ) {
var cache = this.cache;
var unit = textures.allocateTextureUnit();
const cache = this.cache;
const unit = textures.allocateTextureUnit();
if ( cache[ 0 ] !== unit ) {
......@@ -419,7 +422,7 @@ function setValueT6( gl, v, textures ) {
function setValueV1i( gl, v ) {
var cache = this.cache;
const cache = this.cache;
if ( cache[ 0 ] === v ) return;
......@@ -431,7 +434,7 @@ function setValueV1i( gl, v ) {
function setValueV2i( gl, v ) {
var cache = this.cache;
const cache = this.cache;
if ( arraysEqual( cache, v ) ) return;
......@@ -443,7 +446,7 @@ function setValueV2i( gl, v ) {
function setValueV3i( gl, v ) {
var cache = this.cache;
const cache = this.cache;
if ( arraysEqual( cache, v ) ) return;
......@@ -455,7 +458,7 @@ function setValueV3i( gl, v ) {
function setValueV4i( gl, v ) {
var cache = this.cache;
const cache = this.cache;
if ( arraysEqual( cache, v ) ) return;
......@@ -469,7 +472,7 @@ function setValueV4i( gl, v ) {
function setValueV1ui( gl, v ) {
var cache = this.cache;
const cache = this.cache;
if ( cache[ 0 ] === v ) return;
......@@ -566,7 +569,7 @@ function setValueV4iArray( gl, v ) {
function setValueV2fArray( gl, v ) {
var data = flatten( v, this.size, 2 );
const data = flatten( v, this.size, 2 );
gl.uniform2fv( this.addr, data );
......@@ -574,7 +577,7 @@ function setValueV2fArray( gl, v ) {
function setValueV3fArray( gl, v ) {
var data = flatten( v, this.size, 3 );
const data = flatten( v, this.size, 3 );
gl.uniform3fv( this.addr, data );
......@@ -582,7 +585,7 @@ function setValueV3fArray( gl, v ) {
function setValueV4fArray( gl, v ) {
var data = flatten( v, this.size, 4 );
const data = flatten( v, this.size, 4 );
gl.uniform4fv( this.addr, data );
......@@ -592,7 +595,7 @@ function setValueV4fArray( gl, v ) {
function setValueM2Array( gl, v ) {
var data = flatten( v, this.size, 4 );
const data = flatten( v, this.size, 4 );
gl.uniformMatrix2fv( this.addr, false, data );
......@@ -600,7 +603,7 @@ function setValueM2Array( gl, v ) {
function setValueM3Array( gl, v ) {
var data = flatten( v, this.size, 9 );
const data = flatten( v, this.size, 9 );
gl.uniformMatrix3fv( this.addr, false, data );
......@@ -608,7 +611,7 @@ function setValueM3Array( gl, v ) {
function setValueM4Array( gl, v ) {
var data = flatten( v, this.size, 16 );
const data = flatten( v, this.size, 16 );
gl.uniformMatrix4fv( this.addr, false, data );
......@@ -618,13 +621,13 @@ function setValueM4Array( gl, v ) {
function setValueT1Array( gl, v, textures ) {
var n = v.length;
const n = v.length;
var units = allocTexUnits( textures, n );
const units = allocTexUnits( textures, n );
gl.uniform1iv( this.addr, units );
for ( var i = 0; i !== n; ++ i ) {
for ( let i = 0; i !== n; ++ i ) {
textures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );
......@@ -634,13 +637,13 @@ function setValueT1Array( gl, v, textures ) {
function setValueT6Array( gl, v, textures ) {
var n = v.length;
const n = v.length;
var units = allocTexUnits( textures, n );
const units = allocTexUnits( textures, n );
gl.uniform1iv( this.addr, units );
for ( var i = 0; i !== n; ++ i ) {
for ( let i = 0; i !== n; ++ i ) {
textures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );
......@@ -712,7 +715,7 @@ function PureArrayUniform( id, activeInfo, addr ) {
PureArrayUniform.prototype.updateCache = function ( data ) {
var cache = this.cache;
let cache = this.cache;
if ( data instanceof Float32Array && cache.length !== data.length ) {
......@@ -735,11 +738,11 @@ function StructuredUniform( id ) {
StructuredUniform.prototype.setValue = function ( gl, value, textures ) {
var seq = this.seq;
const seq = this.seq;
for ( var i = 0, n = seq.length; i !== n; ++ i ) {
for ( let i = 0, n = seq.length; i !== n; ++ i ) {
var u = seq[ i ];
const u = seq[ i ];
u.setValue( gl, value[ u.id ], textures );
}
......@@ -750,7 +753,7 @@ StructuredUniform.prototype.setValue = function ( gl, value, textures ) {
// Parser - builds up the property tree from the path strings
var RePathPart = /([\w\d_]+)(\])?(\[|\.)?/g;
const RePathPart = /([\w\d_]+)(\])?(\[|\.)?/g;
// extracts
// - the identifier (member name or array index)
......@@ -770,7 +773,7 @@ function addUniform( container, uniformObject ) {
function parseUniform( activeInfo, addr, container ) {
var path = activeInfo.name,
const path = activeInfo.name,
pathLength = path.length;
// reset RegExp object, because of the early exit of a previous run
......@@ -778,10 +781,10 @@ function parseUniform( activeInfo, addr, container ) {
while ( true ) {
var match = RePathPart.exec( path ),
matchEnd = RePathPart.lastIndex,
const match = RePathPart.exec( path ),
matchEnd = RePathPart.lastIndex;
id = match[ 1 ],
let id = match[ 1 ],
idIsIndex = match[ 2 ] === ']',
subscript = match[ 3 ];
......@@ -801,7 +804,8 @@ function parseUniform( activeInfo, addr, container ) {
// step into inner node / create it in case it doesn't exist
var map = container.map, next = map[ id ];
const map = container.map;
let next = map[ id ];
if ( next === undefined ) {
......@@ -825,11 +829,11 @@ function WebGLUniforms( gl, program ) {
this.seq = [];
this.map = {};
var n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );
const n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );
for ( var i = 0; i < n; ++ i ) {
for ( let i = 0; i < n; ++ i ) {
var info = gl.getActiveUniform( program, i ),
const info = gl.getActiveUniform( program, i ),
addr = gl.getUniformLocation( program, info.name );
parseUniform( info, addr, this );
......@@ -840,7 +844,7 @@ function WebGLUniforms( gl, program ) {
WebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {
var u = this.map[ name ];
const u = this.map[ name ];
if ( u !== undefined ) u.setValue( gl, value, textures );
......@@ -848,7 +852,7 @@ WebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {
WebGLUniforms.prototype.setOptional = function ( gl, object, name ) {
var v = object[ name ];
const v = object[ name ];
if ( v !== undefined ) this.setValue( gl, name, v );
......@@ -859,9 +863,9 @@ WebGLUniforms.prototype.setOptional = function ( gl, object, name ) {
WebGLUniforms.upload = function ( gl, seq, values, textures ) {
for ( var i = 0, n = seq.length; i !== n; ++ i ) {
for ( let i = 0, n = seq.length; i !== n; ++ i ) {
var u = seq[ i ],
const u = seq[ i ],
v = values[ u.id ];
if ( v.needsUpdate !== false ) {
......@@ -877,11 +881,11 @@ WebGLUniforms.upload = function ( gl, seq, values, textures ) {
WebGLUniforms.seqWithValue = function ( seq, values ) {
var r = [];
const r = [];
for ( var i = 0, n = seq.length; i !== n; ++ i ) {
for ( let i = 0, n = seq.length; i !== n; ++ i ) {
var u = seq[ i ];
const u = seq[ i ];
if ( u.id in values ) r.push( u );
}
......
......@@ -6,11 +6,11 @@ import { RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_
function WebGLUtils( gl, extensions, capabilities ) {
var isWebGL2 = capabilities.isWebGL2;
const isWebGL2 = capabilities.isWebGL2;
function convert( p ) {
var extension;
let extension;
if ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;
if ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;
......
......@@ -83,11 +83,11 @@ Object.assign( WebXRController.prototype, {
update: function ( inputSource, frame, referenceSpace ) {
var inputPose = null;
var gripPose = null;
let inputPose = null;
let gripPose = null;
var targetRay = this._targetRay;
var grip = this._grip;
const targetRay = this._targetRay;
const grip = this._grip;
if ( inputSource ) {
......
......@@ -12,38 +12,38 @@ import { WebXRController } from './WebXRController.js';
function WebXRManager( renderer, gl ) {
var scope = this;
const scope = this;
var session = null;
let session = null;
var framebufferScaleFactor = 1.0;
let framebufferScaleFactor = 1.0;
var referenceSpace = null;
var referenceSpaceType = 'local-floor';
let referenceSpace = null;
let referenceSpaceType = 'local-floor';
var pose = null;
let pose = null;
var controllers = [];
var inputSourcesMap = new Map();
const controllers = [];
const inputSourcesMap = new Map();
//
var cameraL = new PerspectiveCamera();
const cameraL = new PerspectiveCamera();
cameraL.layers.enable( 1 );
cameraL.viewport = new Vector4();
var cameraR = new PerspectiveCamera();
const cameraR = new PerspectiveCamera();
cameraR.layers.enable( 2 );
cameraR.viewport = new Vector4();
var cameras = [ cameraL, cameraR ];
const cameras = [ cameraL, cameraR ];
var cameraVR = new ArrayCamera();
const cameraVR = new ArrayCamera();
cameraVR.layers.enable( 1 );
cameraVR.layers.enable( 2 );
var _currentDepthNear = null;
var _currentDepthFar = null;
let _currentDepthNear = null;
let _currentDepthFar = null;
//
......@@ -53,7 +53,7 @@ function WebXRManager( renderer, gl ) {
this.getController = function ( index ) {
var controller = controllers[ index ];
let controller = controllers[ index ];
if ( controller === undefined ) {
......@@ -68,7 +68,7 @@ function WebXRManager( renderer, gl ) {
this.getControllerGrip = function ( index ) {
var controller = controllers[ index ];
let controller = controllers[ index ];
if ( controller === undefined ) {
......@@ -85,7 +85,7 @@ function WebXRManager( renderer, gl ) {
function onSessionEvent( event ) {
var controller = inputSourcesMap.get( event.inputSource );
const controller = inputSourcesMap.get( event.inputSource );
if ( controller ) {
......@@ -180,7 +180,7 @@ function WebXRManager( renderer, gl ) {
session.addEventListener( 'squeezeend', onSessionEvent );
session.addEventListener( 'end', onSessionEnd );
var attributes = gl.getContextAttributes();
const attributes = gl.getContextAttributes();
if ( attributes.xrCompatible !== true ) {
......@@ -188,7 +188,7 @@ function WebXRManager( renderer, gl ) {
}
var layerInit = {
const layerInit = {
antialias: attributes.antialias,
alpha: attributes.alpha,
depth: attributes.depth,
......@@ -197,7 +197,7 @@ function WebXRManager( renderer, gl ) {
};
// eslint-disable-next-line no-undef
var baseLayer = new XRWebGLLayer( session, gl, layerInit );
const baseLayer = new XRWebGLLayer( session, gl, layerInit );
session.updateRenderState( { baseLayer: baseLayer } );
......@@ -213,11 +213,11 @@ function WebXRManager( renderer, gl ) {
function updateInputSources( event ) {
var inputSources = session.inputSources;
const inputSources = session.inputSources;
// Assign inputSources to available controllers
for ( var i = 0; i < controllers.length; i ++ ) {
for ( let i = 0; i < controllers.length; i ++ ) {
inputSourcesMap.set( inputSources[ i ], controllers[ i ] );
......@@ -225,10 +225,10 @@ function WebXRManager( renderer, gl ) {
// Notify disconnected
for ( var i = 0; i < event.removed.length; i ++ ) {
for ( let i = 0; i < event.removed.length; i ++ ) {
var inputSource = event.removed[ i ];
var controller = inputSourcesMap.get( inputSource );
const inputSource = event.removed[ i ];
const controller = inputSourcesMap.get( inputSource );
if ( controller ) {
......@@ -241,10 +241,10 @@ function WebXRManager( renderer, gl ) {
// Notify connected
for ( var i = 0; i < event.added.length; i ++ ) {
for ( let i = 0; i < event.added.length; i ++ ) {
var inputSource = event.added[ i ];
var controller = inputSourcesMap.get( inputSource );
const inputSource = event.added[ i ];
const controller = inputSourcesMap.get( inputSource );
if ( controller ) {
......@@ -258,8 +258,8 @@ function WebXRManager( renderer, gl ) {
//
var cameraLPos = new Vector3();
var cameraRPos = new Vector3();
const cameraLPos = new Vector3();
const cameraRPos = new Vector3();
/**
* @author jsantell / https://www.jsantell.com/
......@@ -274,28 +274,28 @@ function WebXRManager( renderer, gl ) {
cameraLPos.setFromMatrixPosition( cameraL.matrixWorld );
cameraRPos.setFromMatrixPosition( cameraR.matrixWorld );
var ipd = cameraLPos.distanceTo( cameraRPos );
const ipd = cameraLPos.distanceTo( cameraRPos );
var projL = cameraL.projectionMatrix.elements;
var projR = cameraR.projectionMatrix.elements;
const projL = cameraL.projectionMatrix.elements;
const projR = cameraR.projectionMatrix.elements;
// VR systems will have identical far and near planes, and
// most likely identical top and bottom frustum extents.
// Use the left camera for these values.
var near = projL[ 14 ] / ( projL[ 10 ] - 1 );
var far = projL[ 14 ] / ( projL[ 10 ] + 1 );
var topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];
var bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];
const near = projL[ 14 ] / ( projL[ 10 ] - 1 );
const far = projL[ 14 ] / ( projL[ 10 ] + 1 );
const topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];
const bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];
var leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];
var rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];
var left = near * leftFov;
var right = near * rightFov;
const leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];
const rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];
const left = near * leftFov;
const right = near * rightFov;
// Calculate the new camera's position offset from the
// left camera. xOffset should be roughly half `ipd`.
var zOffset = ipd / ( - leftFov + rightFov );
var xOffset = zOffset * - leftFov;
const zOffset = ipd / ( - leftFov + rightFov );
const xOffset = zOffset * - leftFov;
// TODO: Better way to apply this offset?
cameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );
......@@ -307,12 +307,12 @@ function WebXRManager( renderer, gl ) {
// Find the union of the frustum values of the cameras and scale
// the values so that the near plane's position does not change in world space,
// although must now be relative to the new union camera.
var near2 = near + zOffset;
var far2 = far + zOffset;
var left2 = left - xOffset;
var right2 = right + ( ipd - xOffset );
var top2 = topFov * far / far2 * near2;
var bottom2 = bottomFov * far / far2 * near2;
const near2 = near + zOffset;
const far2 = far + zOffset;
const left2 = left - xOffset;
const right2 = right + ( ipd - xOffset );
const top2 = topFov * far / far2 * near2;
const bottom2 = bottomFov * far / far2 * near2;
camera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );
......@@ -353,12 +353,12 @@ function WebXRManager( renderer, gl ) {
}
var parent = camera.parent;
var cameras = cameraVR.cameras;
const parent = camera.parent;
const cameras = cameraVR.cameras;
updateCamera( cameraVR, parent );
for ( var i = 0; i < cameras.length; i ++ ) {
for ( let i = 0; i < cameras.length; i ++ ) {
updateCamera( cameras[ i ], parent );
......@@ -368,9 +368,9 @@ function WebXRManager( renderer, gl ) {
camera.matrixWorld.copy( cameraVR.matrixWorld );
var children = camera.children;
const children = camera.children;
for ( var i = 0, l = children.length; i < l; i ++ ) {
for ( let i = 0, l = children.length; i < l; i ++ ) {
children[ i ].updateMatrixWorld( true );
......@@ -396,7 +396,7 @@ function WebXRManager( renderer, gl ) {
// Animation Loop
var onAnimationFrameCallback = null;
let onAnimationFrameCallback = null;
function onAnimationFrame( time, frame ) {
......@@ -404,12 +404,12 @@ function WebXRManager( renderer, gl ) {
if ( pose !== null ) {
var views = pose.views;
var baseLayer = session.renderState.baseLayer;
const views = pose.views;
const baseLayer = session.renderState.baseLayer;
renderer.setFramebuffer( baseLayer.framebuffer );
var cameraVRNeedsUpdate = false;
let cameraVRNeedsUpdate = false;
// check if it's necessary to rebuild cameraVR's camera list
......@@ -420,12 +420,12 @@ function WebXRManager( renderer, gl ) {
}
for ( var i = 0; i < views.length; i ++ ) {
for ( let i = 0; i < views.length; i ++ ) {
var view = views[ i ];
var viewport = baseLayer.getViewport( view );
const view = views[ i ];
const viewport = baseLayer.getViewport( view );
var camera = cameras[ i ];
const camera = cameras[ i ];
camera.matrix.fromArray( view.transform.matrix );
camera.projectionMatrix.fromArray( view.projectionMatrix );
camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
......@@ -448,12 +448,12 @@ function WebXRManager( renderer, gl ) {
//
var inputSources = session.inputSources;
const inputSources = session.inputSources;
for ( var i = 0; i < controllers.length; i ++ ) {
for ( let i = 0; i < controllers.length; i ++ ) {
var controller = controllers[ i ];
var inputSource = inputSources[ i ];
const controller = controllers[ i ];
const inputSource = inputSources[ i ];
controller.update( inputSource, frame, referenceSpace );
......@@ -463,7 +463,7 @@ function WebXRManager( renderer, gl ) {
}
var animation = new WebGLAnimation();
const animation = new WebGLAnimation();
animation.setAnimationLoop( onAnimationFrame );
this.setAnimationLoop = function ( callback ) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册