浏览代码

Core: More usage of let/const.

Mugen87 5 年之前
父节点
当前提交
0a538fcfee
共有 33 个文件被更改,包括 786 次插入777 次删除
  1. 5 5
      src/renderers/WebGLCubeRenderTarget.js
  2. 132 132
      src/renderers/WebGLRenderer.js
  3. 1 1
      src/renderers/shaders/ShaderChunk.js
  4. 1 1
      src/renderers/shaders/ShaderLib.js
  5. 1 1
      src/renderers/shaders/UniformsLib.js
  6. 9 9
      src/renderers/shaders/UniformsUtils.js
  7. 3 3
      src/renderers/webgl/WebGLAnimation.js
  8. 10 10
      src/renderers/webgl/WebGLAttributes.js
  9. 11 11
      src/renderers/webgl/WebGLBackground.js
  10. 3 3
      src/renderers/webgl/WebGLBufferRenderer.js
  11. 18 18
      src/renderers/webgl/WebGLCapabilities.js
  12. 12 12
      src/renderers/webgl/WebGLClipping.js
  13. 2 2
      src/renderers/webgl/WebGLExtensions.js
  14. 32 32
      src/renderers/webgl/WebGLGeometries.js
  15. 4 4
      src/renderers/webgl/WebGLIndexedBufferRenderer.js
  16. 2 2
      src/renderers/webgl/WebGLInfo.js
  17. 42 42
      src/renderers/webgl/WebGLLights.js
  18. 5 5
      src/renderers/webgl/WebGLMaterials.js
  19. 18 18
      src/renderers/webgl/WebGLMorphtargets.js
  20. 4 4
      src/renderers/webgl/WebGLObjects.js
  21. 58 57
      src/renderers/webgl/WebGLProgram.js
  22. 33 32
      src/renderers/webgl/WebGLPrograms.js
  23. 2 2
      src/renderers/webgl/WebGLProperties.js
  24. 15 14
      src/renderers/webgl/WebGLRenderLists.js
  25. 7 7
      src/renderers/webgl/WebGLRenderStates.js
  26. 1 1
      src/renderers/webgl/WebGLShader.js
  27. 46 46
      src/renderers/webgl/WebGLShadowMap.js
  28. 64 64
      src/renderers/webgl/WebGLState.js
  29. 97 95
      src/renderers/webgl/WebGLTextures.js
  30. 75 71
      src/renderers/webgl/WebGLUniforms.js
  31. 2 2
      src/renderers/webgl/WebGLUtils.js
  32. 4 4
      src/renderers/webxr/WebXRController.js
  33. 67 67
      src/renderers/webxr/WebXRManager.js

+ 5 - 5
src/renderers/WebGLCubeRenderTarget.js

@@ -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();

+ 132 - 132
src/renderers/WebGLRenderer.js

@@ -51,7 +51,7 @@ function WebGLRenderer( parameters ) {
 
 	parameters = parameters || {};
 
-	var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),
+	const _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),
 		_context = parameters.context !== undefined ? parameters.context : null,
 
 		_alpha = parameters.alpha !== undefined ? parameters.alpha : false,
@@ -63,8 +63,8 @@ function WebGLRenderer( parameters ) {
 		_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',
 		_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;
 
-	var currentRenderList = null;
-	var currentRenderState = null;
+	let currentRenderList = null;
+	let currentRenderState = null;
 
 	// public properties
 
@@ -118,7 +118,7 @@ function WebGLRenderer( parameters ) {
 
 	// internal properties
 
-	var _this = this,
+	let _this = this,
 
 		_isContextLost = false,
 
@@ -184,11 +184,11 @@ function WebGLRenderer( parameters ) {
 
 	// initialize
 
-	var _gl;
+	let _gl;
 
 	try {
 
-		var contextAttributes = {
+		const contextAttributes = {
 			alpha: _alpha,
 			depth: _depth,
 			stencil: _stencil,
@@ -239,13 +239,13 @@ function WebGLRenderer( parameters ) {
 
 	}
 
-	var extensions, capabilities, state, info;
-	var properties, textures, attributes, geometries, objects;
-	var programCache, materials, renderLists, renderStates;
+	let extensions, capabilities, state, info;
+	let properties, textures, attributes, geometries, objects;
+	let programCache, materials, renderLists, renderStates;
 
-	var background, morphtargets, bufferRenderer, indexedBufferRenderer;
+	let background, morphtargets, bufferRenderer, indexedBufferRenderer;
 
-	var utils;
+	let utils;
 
 	function initGLContext() {
 
@@ -305,13 +305,13 @@ function WebGLRenderer( parameters ) {
 
 	// xr
 
-	var xr = new WebXRManager( _this, _gl );
+	const xr = new WebXRManager( _this, _gl );
 
 	this.xr = xr;
 
 	// shadow map
 
-	var shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );
+	const shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );
 
 	this.shadowMap = shadowMap;
 
@@ -331,14 +331,14 @@ function WebGLRenderer( parameters ) {
 
 	this.forceContextLoss = function () {
 
-		var extension = extensions.get( 'WEBGL_lose_context' );
+		const extension = extensions.get( 'WEBGL_lose_context' );
 		if ( extension ) extension.loseContext();
 
 	};
 
 	this.forceContextRestore = function () {
 
-		var extension = extensions.get( 'WEBGL_lose_context' );
+		const extension = extensions.get( 'WEBGL_lose_context' );
 		if ( extension ) extension.restoreContext();
 
 	};
@@ -537,7 +537,7 @@ function WebGLRenderer( parameters ) {
 
 	this.clear = function ( color, depth, stencil ) {
 
-		var bits = 0;
+		let bits = 0;
 
 		if ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;
 		if ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;
@@ -607,7 +607,7 @@ function WebGLRenderer( parameters ) {
 
 	function onMaterialDispose( event ) {
 
-		var material = event.target;
+		const material = event.target;
 
 		material.removeEventListener( 'dispose', onMaterialDispose );
 
@@ -628,7 +628,7 @@ function WebGLRenderer( parameters ) {
 
 	function releaseMaterialProgramReference( material ) {
 
-		var programInfo = properties.get( material ).program;
+		const programInfo = properties.get( material ).program;
 
 		material.program = undefined;
 
@@ -656,14 +656,14 @@ function WebGLRenderer( parameters ) {
 
 		state.initAttributes();
 
-		var buffers = properties.get( object );
+		const buffers = properties.get( object );
 
 		if ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();
 		if ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();
 		if ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();
 		if ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();
 
-		var programAttributes = program.getAttributes();
+		const programAttributes = program.getAttributes();
 
 		if ( object.hasPositions ) {
 
@@ -713,19 +713,19 @@ function WebGLRenderer( parameters ) {
 
 	};
 
-	var tempScene = new Scene();
+	const tempScene = new Scene();
 
 	this.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {
 
 		if ( scene === null ) scene = tempScene; // renderBufferDirect second parameter used to be fog (could be null)
 
-		var frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );
+		const frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );
 
-		var program = setProgram( camera, scene, material, object );
+		const program = setProgram( camera, scene, material, object );
 
 		state.setMaterial( material, frontFaceCW );
 
-		var updateBuffers = false;
+		let updateBuffers = false;
 
 		if ( _currentGeometryProgram.geometry !== geometry.id ||
 			_currentGeometryProgram.program !== program.id ||
@@ -754,8 +754,8 @@ function WebGLRenderer( parameters ) {
 
 		//
 
-		var index = geometry.index;
-		var position = geometry.attributes.position;
+		let index = geometry.index;
+		const position = geometry.attributes.position;
 
 		//
 
@@ -771,7 +771,7 @@ function WebGLRenderer( parameters ) {
 
 		//
 
-		var rangeFactor = 1;
+		let rangeFactor = 1;
 
 		if ( material.wireframe === true ) {
 
@@ -780,8 +780,8 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		var attribute;
-		var renderer = bufferRenderer;
+		let attribute;
+		let renderer = bufferRenderer;
 
 		if ( index !== null ) {
 
@@ -806,18 +806,18 @@ function WebGLRenderer( parameters ) {
 
 		//
 
-		var dataCount = ( index !== null ) ? index.count : position.count;
+		const dataCount = ( index !== null ) ? index.count : position.count;
 
-		var rangeStart = geometry.drawRange.start * rangeFactor;
-		var rangeCount = geometry.drawRange.count * rangeFactor;
+		const rangeStart = geometry.drawRange.start * rangeFactor;
+		const rangeCount = geometry.drawRange.count * rangeFactor;
 
-		var groupStart = group !== null ? group.start * rangeFactor : 0;
-		var groupCount = group !== null ? group.count * rangeFactor : Infinity;
+		const groupStart = group !== null ? group.start * rangeFactor : 0;
+		const groupCount = group !== null ? group.count * rangeFactor : Infinity;
 
-		var drawStart = Math.max( rangeStart, groupStart );
-		var drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;
+		const drawStart = Math.max( rangeStart, groupStart );
+		const drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;
 
-		var drawCount = Math.max( 0, drawEnd - drawStart + 1 );
+		const drawCount = Math.max( 0, drawEnd - drawStart + 1 );
 
 		if ( drawCount === 0 ) return;
 
@@ -838,7 +838,7 @@ function WebGLRenderer( parameters ) {
 
 		} else if ( object.isLine ) {
 
-			var lineWidth = material.linewidth;
+			let lineWidth = material.linewidth;
 
 			if ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material
 
@@ -874,7 +874,7 @@ function WebGLRenderer( parameters ) {
 
 		} else if ( geometry.isInstancedBufferGeometry ) {
 
-			var instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );
+			const instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );
 
 			renderer.renderInstances( geometry, drawStart, drawCount, instanceCount );
 
@@ -896,40 +896,40 @@ function WebGLRenderer( parameters ) {
 
 		state.initAttributes();
 
-		var geometryAttributes = geometry.attributes;
+		const geometryAttributes = geometry.attributes;
 
-		var programAttributes = program.getAttributes();
+		const programAttributes = program.getAttributes();
 
-		var materialDefaultAttributeValues = material.defaultAttributeValues;
+		const materialDefaultAttributeValues = material.defaultAttributeValues;
 
-		for ( var name in programAttributes ) {
+		for ( const name in programAttributes ) {
 
-			var programAttribute = programAttributes[ name ];
+			const programAttribute = programAttributes[ name ];
 
 			if ( programAttribute >= 0 ) {
 
-				var geometryAttribute = geometryAttributes[ name ];
+				const geometryAttribute = geometryAttributes[ name ];
 
 				if ( geometryAttribute !== undefined ) {
 
-					var normalized = geometryAttribute.normalized;
-					var size = geometryAttribute.itemSize;
+					const normalized = geometryAttribute.normalized;
+					const size = geometryAttribute.itemSize;
 
-					var attribute = attributes.get( geometryAttribute );
+					const attribute = attributes.get( geometryAttribute );
 
 					// TODO Attribute may not be available on context restore
 
 					if ( attribute === undefined ) continue;
 
-					var buffer = attribute.buffer;
-					var type = attribute.type;
-					var bytesPerElement = attribute.bytesPerElement;
+					const buffer = attribute.buffer;
+					const type = attribute.type;
+					const bytesPerElement = attribute.bytesPerElement;
 
 					if ( geometryAttribute.isInterleavedBufferAttribute ) {
 
-						var data = geometryAttribute.data;
-						var stride = data.stride;
-						var offset = geometryAttribute.offset;
+						const data = geometryAttribute.data;
+						const stride = data.stride;
+						const offset = geometryAttribute.offset;
 
 						if ( data && data.isInstancedInterleavedBuffer ) {
 
@@ -975,14 +975,14 @@ function WebGLRenderer( parameters ) {
 
 				} else if ( name === 'instanceMatrix' ) {
 
-					var attribute = attributes.get( object.instanceMatrix );
+					const attribute = attributes.get( object.instanceMatrix );
 
 					// TODO Attribute may not be available on context restore
 
 					if ( attribute === undefined ) continue;
 
-					var buffer = attribute.buffer;
-					var type = attribute.type;
+					const buffer = attribute.buffer;
+					const type = attribute.type;
 
 					state.enableAttributeAndDivisor( programAttribute + 0, 1 );
 					state.enableAttributeAndDivisor( programAttribute + 1, 1 );
@@ -998,7 +998,7 @@ function WebGLRenderer( parameters ) {
 
 				} else if ( materialDefaultAttributeValues !== undefined ) {
 
-					var value = materialDefaultAttributeValues[ name ];
+					const value = materialDefaultAttributeValues[ name ];
 
 					if ( value !== undefined ) {
 
@@ -1096,7 +1096,7 @@ function WebGLRenderer( parameters ) {
 
 	// Animation Loop
 
-	var onAnimationFrameCallback = null;
+	let onAnimationFrameCallback = null;
 
 	function onAnimationFrame( time ) {
 
@@ -1105,7 +1105,7 @@ function WebGLRenderer( parameters ) {
 
 	}
 
-	var animation = new WebGLAnimation();
+	const animation = new WebGLAnimation();
 	animation.setAnimationLoop( onAnimationFrame );
 
 	if ( typeof window !== 'undefined' ) animation.setContext( window );
@@ -1123,7 +1123,7 @@ function WebGLRenderer( parameters ) {
 
 	this.render = function ( scene, camera ) {
 
-		var renderTarget, forceClear;
+		let renderTarget, forceClear;
 
 		if ( arguments[ 2 ] !== undefined ) {
 
@@ -1199,7 +1199,7 @@ function WebGLRenderer( parameters ) {
 
 		if ( _clippingEnabled ) _clipping.beginShadows();
 
-		var shadowsArray = currentRenderState.state.shadowsArray;
+		const shadowsArray = currentRenderState.state.shadowsArray;
 
 		shadowMap.render( shadowsArray, scene, camera );
 
@@ -1223,12 +1223,12 @@ function WebGLRenderer( parameters ) {
 
 		// render scene
 
-		var opaqueObjects = currentRenderList.opaque;
-		var transparentObjects = currentRenderList.transparent;
+		const opaqueObjects = currentRenderList.opaque;
+		const transparentObjects = currentRenderList.transparent;
 
 		if ( scene.overrideMaterial ) {
 
-			var overrideMaterial = scene.overrideMaterial;
+			const overrideMaterial = scene.overrideMaterial;
 
 			if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );
 			if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );
@@ -1282,7 +1282,7 @@ function WebGLRenderer( parameters ) {
 
 		if ( object.visible === false ) return;
 
-		var visible = object.layers.test( camera.layers );
+		const visible = object.layers.test( camera.layers );
 
 		if ( visible ) {
 
@@ -1315,8 +1315,8 @@ function WebGLRenderer( parameters ) {
 
 					}
 
-					var geometry = objects.update( object );
-					var material = object.material;
+					const geometry = objects.update( object );
+					const material = object.material;
 
 					if ( material.visible ) {
 
@@ -1361,17 +1361,17 @@ function WebGLRenderer( parameters ) {
 
 					}
 
-					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 i = 0, l = groups.length; i < l; i ++ ) {
+						for ( let i = 0, l = groups.length; i < l; i ++ ) {
 
-							var group = groups[ i ];
-							var groupMaterial = material[ group.materialIndex ];
+							const group = groups[ i ];
+							const groupMaterial = material[ group.materialIndex ];
 
 							if ( groupMaterial && groupMaterial.visible ) {
 
@@ -1393,9 +1393,9 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		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 ++ ) {
 
 			projectObject( children[ i ], camera, groupOrder, sortObjects );
 
@@ -1405,24 +1405,24 @@ function WebGLRenderer( parameters ) {
 
 	function renderObjects( renderList, scene, camera, overrideMaterial ) {
 
-		for ( var i = 0, l = renderList.length; i < l; i ++ ) {
+		for ( let i = 0, l = renderList.length; i < l; i ++ ) {
 
-			var renderItem = renderList[ i ];
+			const renderItem = renderList[ i ];
 
-			var object = renderItem.object;
-			var geometry = renderItem.geometry;
-			var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
-			var group = renderItem.group;
+			const object = renderItem.object;
+			const geometry = renderItem.geometry;
+			const material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
+			const group = renderItem.group;
 
 			if ( camera.isArrayCamera ) {
 
 				_currentArrayCamera = camera;
 
-				var cameras = camera.cameras;
+				const cameras = camera.cameras;
 
-				for ( var j = 0, jl = cameras.length; j < jl; j ++ ) {
+				for ( let j = 0, jl = cameras.length; j < jl; j ++ ) {
 
-					var camera2 = cameras[ j ];
+					const camera2 = cameras[ j ];
 
 					if ( object.layers.test( camera2.layers ) ) {
 
@@ -1458,7 +1458,7 @@ function WebGLRenderer( parameters ) {
 
 		if ( object.isImmediateRenderObject ) {
 
-			var program = setProgram( camera, scene, material, object );
+			const program = setProgram( camera, scene, material, object );
 
 			state.setMaterial( material );
 
@@ -1481,18 +1481,18 @@ function WebGLRenderer( parameters ) {
 
 	function initMaterial( material, scene, object ) {
 
-		var materialProperties = properties.get( material );
+		const materialProperties = properties.get( material );
 
-		var lights = currentRenderState.state.lights;
-		var shadowsArray = currentRenderState.state.shadowsArray;
+		const lights = currentRenderState.state.lights;
+		const shadowsArray = currentRenderState.state.shadowsArray;
 
-		var lightsStateVersion = lights.state.version;
+		const lightsStateVersion = lights.state.version;
 
-		var parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );
-		var programCacheKey = programCache.getProgramCacheKey( parameters );
+		const parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );
+		const programCacheKey = programCache.getProgramCacheKey( parameters );
 
-		var program = materialProperties.program;
-		var programChange = true;
+		let program = materialProperties.program;
+		let programChange = true;
 
 		if ( program === undefined ) {
 
@@ -1533,13 +1533,13 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		var programAttributes = program.getAttributes();
+		const programAttributes = program.getAttributes();
 
 		if ( material.morphTargets ) {
 
 			material.numSupportedMorphTargets = 0;
 
-			for ( var i = 0; i < _this.maxMorphTargets; i ++ ) {
+			for ( let i = 0; i < _this.maxMorphTargets; i ++ ) {
 
 				if ( programAttributes[ 'morphTarget' + i ] >= 0 ) {
 
@@ -1555,7 +1555,7 @@ function WebGLRenderer( parameters ) {
 
 			material.numSupportedMorphNormals = 0;
 
-			for ( var i = 0; i < _this.maxMorphNormals; i ++ ) {
+			for ( let i = 0; i < _this.maxMorphNormals; i ++ ) {
 
 				if ( programAttributes[ 'morphNormal' + i ] >= 0 ) {
 
@@ -1567,7 +1567,7 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		var uniforms = materialProperties.uniforms;
+		const uniforms = materialProperties.uniforms;
 
 		if ( ! material.isShaderMaterial &&
 			! material.isRawShaderMaterial ||
@@ -1612,7 +1612,7 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		var progUniforms = materialProperties.program.getUniforms(),
+		const progUniforms = materialProperties.program.getUniforms(),
 			uniformsList =
 				WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );
 
@@ -1624,18 +1624,18 @@ function WebGLRenderer( parameters ) {
 
 		textures.resetTextureUnits();
 
-		var fog = scene.fog;
-		var environment = material.isMeshStandardMaterial ? scene.environment : null;
-		var encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;
+		const fog = scene.fog;
+		const environment = material.isMeshStandardMaterial ? scene.environment : null;
+		const encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;
 
-		var materialProperties = properties.get( material );
-		var lights = currentRenderState.state.lights;
+		const materialProperties = properties.get( material );
+		const lights = currentRenderState.state.lights;
 
 		if ( _clippingEnabled ) {
 
 			if ( _localClippingEnabled || camera !== _currentCamera ) {
 
-				var useCache =
+				const useCache =
 					camera === _currentCamera &&
 					material.id === _currentMaterialId;
 
@@ -1687,11 +1687,11 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		var refreshProgram = false;
-		var refreshMaterial = false;
-		var refreshLights = false;
+		let refreshProgram = false;
+		let refreshMaterial = false;
+		let refreshLights = false;
 
-		var program = materialProperties.program,
+		const program = materialProperties.program,
 			p_uniforms = program.getUniforms(),
 			m_uniforms = materialProperties.uniforms;
 
@@ -1744,7 +1744,7 @@ function WebGLRenderer( parameters ) {
 				material.isMeshStandardMaterial ||
 				material.envMap ) {
 
-				var uCamPos = p_uniforms.map.cameraPosition;
+				const uCamPos = p_uniforms.map.cameraPosition;
 
 				if ( uCamPos !== undefined ) {
 
@@ -1789,11 +1789,11 @@ function WebGLRenderer( parameters ) {
 			p_uniforms.setOptional( _gl, object, 'bindMatrix' );
 			p_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );
 
-			var skeleton = object.skeleton;
+			const skeleton = object.skeleton;
 
 			if ( skeleton ) {
 
-				var bones = skeleton.bones;
+				const bones = skeleton.bones;
 
 				if ( capabilities.floatVertexTextures ) {
 
@@ -1807,14 +1807,14 @@ function WebGLRenderer( parameters ) {
 						//       64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)
 
 
-						var size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix
+						let size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix
 						size = MathUtils.ceilPowerOfTwo( size );
 						size = Math.max( size, 4 );
 
-						var boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel
+						const boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel
 						boneMatrices.set( skeleton.boneMatrices ); // copy current values
 
-						var boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );
+						const boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );
 
 						skeleton.boneMatrices = boneMatrices;
 						skeleton.boneTexture = boneTexture;
@@ -1970,12 +1970,12 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		var framebuffer = _framebuffer;
-		var isCube = false;
+		let framebuffer = _framebuffer;
+		let isCube = false;
 
 		if ( renderTarget ) {
 
-			var __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;
+			const __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;
 
 			if ( renderTarget.isWebGLCubeRenderTarget ) {
 
@@ -2017,7 +2017,7 @@ function WebGLRenderer( parameters ) {
 
 		if ( isCube ) {
 
-			var textureProperties = properties.get( renderTarget.texture );
+			const textureProperties = properties.get( renderTarget.texture );
 			_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );
 
 		}
@@ -2033,7 +2033,7 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		var framebuffer = properties.get( renderTarget ).__webglFramebuffer;
+		let framebuffer = properties.get( renderTarget ).__webglFramebuffer;
 
 		if ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {
 
@@ -2043,7 +2043,7 @@ function WebGLRenderer( parameters ) {
 
 		if ( framebuffer ) {
 
-			var restore = false;
+			let restore = false;
 
 			if ( framebuffer !== _currentFramebuffer ) {
 
@@ -2055,9 +2055,9 @@ function WebGLRenderer( parameters ) {
 
 			try {
 
-				var texture = renderTarget.texture;
-				var textureFormat = texture.format;
-				var textureType = texture.type;
+				const texture = renderTarget.texture;
+				const textureFormat = texture.format;
+				const textureType = texture.type;
 
 				if ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {
 
@@ -2109,10 +2109,10 @@ function WebGLRenderer( parameters ) {
 
 		if ( level === undefined ) level = 0;
 
-		var levelScale = Math.pow( 2, - level );
-		var width = Math.floor( texture.image.width * levelScale );
-		var height = Math.floor( texture.image.height * levelScale );
-		var glFormat = utils.convert( texture.format );
+		const levelScale = Math.pow( 2, - level );
+		const width = Math.floor( texture.image.width * levelScale );
+		const height = Math.floor( texture.image.height * levelScale );
+		const glFormat = utils.convert( texture.format );
 
 		textures.setTexture2D( texture, 0 );
 
@@ -2126,10 +2126,10 @@ function WebGLRenderer( parameters ) {
 
 		if ( level === undefined ) level = 0;
 
-		var width = srcTexture.image.width;
-		var height = srcTexture.image.height;
-		var glFormat = utils.convert( dstTexture.format );
-		var glType = utils.convert( dstTexture.type );
+		const width = srcTexture.image.width;
+		const height = srcTexture.image.height;
+		const glFormat = utils.convert( dstTexture.format );
+		const glType = utils.convert( dstTexture.type );
 
 		textures.setTexture2D( dstTexture, 0 );
 

+ 1 - 1
src/renderers/shaders/ShaderChunk.js

@@ -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,

+ 1 - 1
src/renderers/shaders/ShaderLib.js

@@ -12,7 +12,7 @@ import { Matrix3 } from '../../math/Matrix3.js';
  * @author mikael emtinger / http://gomo.se/
  */
 
-var ShaderLib = {
+const ShaderLib = {
 
 	basic: {
 

+ 1 - 1
src/renderers/shaders/UniformsLib.js

@@ -6,7 +6,7 @@ import { Matrix3 } from '../../math/Matrix3.js';
  * Uniforms library for shared webgl shaders
  */
 
-var UniformsLib = {
+const UniformsLib = {
 
 	common: {
 

+ 9 - 9
src/renderers/shaders/UniformsUtils.js

@@ -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 };

+ 3 - 3
src/renderers/webgl/WebGLAnimation.js

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

+ 10 - 10
src/renderers/webgl/WebGLAttributes.js

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

+ 11 - 11
src/renderers/webgl/WebGLBackground.js

@@ -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;

+ 3 - 3
src/renderers/webgl/WebGLBufferRenderer.js

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

+ 18 - 18
src/renderers/webgl/WebGLCapabilities.js

@@ -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 {
 

+ 12 - 12
src/renderers/webgl/WebGLClipping.js

@@ -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 );
 

+ 2 - 2
src/renderers/webgl/WebGLExtensions.js

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

+ 32 - 32
src/renderers/webgl/WebGLGeometries.js

@@ -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 - 4
src/renderers/webgl/WebGLIndexedBufferRenderer.js

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

+ 2 - 2
src/renderers/webgl/WebGLInfo.js

@@ -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,

+ 42 - 42
src/renderers/webgl/WebGLLights.js

@@ -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 ||

+ 5 - 5
src/renderers/webgl/WebGLMaterials.js

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

+ 18 - 18
src/renderers/webgl/WebGLMorphtargets.js

@@ -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 - 4
src/renderers/webgl/WebGLObjects.js

@@ -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
 

+ 58 - 57
src/renderers/webgl/WebGLProgram.js

@@ -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 () {
 

+ 33 - 32
src/renderers/webgl/WebGLPrograms.js

@@ -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();
 

+ 2 - 2
src/renderers/webgl/WebGLProperties.js

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

+ 15 - 14
src/renderers/webgl/WebGLRenderLists.js

@@ -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();

+ 7 - 7
src/renderers/webgl/WebGLRenderStates.js

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

+ 1 - 1
src/renderers/webgl/WebGLShader.js

@@ -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 );

+ 46 - 46
src/renderers/webgl/WebGLShadowMap.js

@@ -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 );
 

+ 64 - 64
src/renderers/webgl/WebGLState.js

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

+ 97 - 95
src/renderers/webgl/WebGLTextures.js

@@ -7,20 +7,20 @@ import { MathUtils } from '../../math/MathUtils.js';
 
 function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {
 
-	var isWebGL2 = capabilities.isWebGL2;
-	var maxTextures = capabilities.maxTextures;
-	var maxCubemapSize = capabilities.maxCubemapSize;
-	var maxTextureSize = capabilities.maxTextureSize;
-	var maxSamples = capabilities.maxSamples;
+	const isWebGL2 = capabilities.isWebGL2;
+	const maxTextures = capabilities.maxTextures;
+	const maxCubemapSize = capabilities.maxCubemapSize;
+	const maxTextureSize = capabilities.maxTextureSize;
+	const maxSamples = capabilities.maxSamples;
 
-	var _videoTextures = new WeakMap();
-	var _canvas;
+	const _videoTextures = new WeakMap();
+	let _canvas;
 
 	// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,
 	// also OffscreenCanvas.getContext("webgl"), but not OffscreenCanvas.getContext("2d")!
 	// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).
 
-	var useOffscreenCanvas = false;
+	let useOffscreenCanvas = false;
 
 	try {
 
@@ -45,7 +45,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {
 
-		var scale = 1;
+		let scale = 1;
 
 		// handle case if texture exceeds max size
 
@@ -65,21 +65,21 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 				( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||
 				( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {
 
-				var floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;
+				const floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;
 
-				var width = floor( scale * image.width );
-				var height = floor( scale * image.height );
+				const width = floor( scale * image.width );
+				const height = floor( scale * image.height );
 
 				if ( _canvas === undefined ) _canvas = createCanvas( width, height );
 
 				// cube textures can't reuse the same canvas
 
-				var canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;
+				const canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;
 
 				canvas.width = width;
 				canvas.height = height;
 
-				var context = canvas.getContext( '2d' );
+				const context = canvas.getContext( '2d' );
 				context.drawImage( image, 0, 0, width, height );
 
 				console.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );
@@ -130,7 +130,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 		_gl.generateMipmap( target );
 
-		var textureProperties = properties.get( texture );
+		const textureProperties = properties.get( texture );
 
 		// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11
 		textureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;
@@ -149,7 +149,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 		}
 
-		var internalFormat = glFormat;
+		let internalFormat = glFormat;
 
 		if ( glFormat === _gl.RED ) {
 
@@ -204,7 +204,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function onTextureDispose( event ) {
 
-		var texture = event.target;
+		const texture = event.target;
 
 		texture.removeEventListener( 'dispose', onTextureDispose );
 
@@ -222,7 +222,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function onRenderTargetDispose( event ) {
 
-		var renderTarget = event.target;
+		const renderTarget = event.target;
 
 		renderTarget.removeEventListener( 'dispose', onRenderTargetDispose );
 
@@ -236,7 +236,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function deallocateTexture( texture ) {
 
-		var textureProperties = properties.get( texture );
+		const textureProperties = properties.get( texture );
 
 		if ( textureProperties.__webglInit === undefined ) return;
 
@@ -248,8 +248,8 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function deallocateRenderTarget( renderTarget ) {
 
-		var renderTargetProperties = properties.get( renderTarget );
-		var textureProperties = properties.get( renderTarget.texture );
+		const renderTargetProperties = properties.get( renderTarget );
+		const textureProperties = properties.get( renderTarget.texture );
 
 		if ( ! renderTarget ) return;
 
@@ -267,7 +267,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 		if ( renderTarget.isWebGLCubeRenderTarget ) {
 
-			for ( var i = 0; i < 6; i ++ ) {
+			for ( let i = 0; i < 6; i ++ ) {
 
 				_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );
 				if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );
@@ -291,7 +291,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	//
 
-	var textureUnits = 0;
+	let textureUnits = 0;
 
 	function resetTextureUnits() {
 
@@ -301,7 +301,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function allocateTextureUnit() {
 
-		var textureUnit = textureUnits;
+		const textureUnit = textureUnits;
 
 		if ( textureUnit >= maxTextures ) {
 
@@ -319,13 +319,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function setTexture2D( texture, slot ) {
 
-		var textureProperties = properties.get( texture );
+		const textureProperties = properties.get( texture );
 
 		if ( texture.isVideoTexture ) updateVideoTexture( texture );
 
 		if ( texture.version > 0 && textureProperties.__version !== texture.version ) {
 
-			var image = texture.image;
+			const image = texture.image;
 
 			if ( image === undefined ) {
 
@@ -351,7 +351,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function setTexture2DArray( texture, slot ) {
 
-		var textureProperties = properties.get( texture );
+		const textureProperties = properties.get( texture );
 
 		if ( texture.version > 0 && textureProperties.__version !== texture.version ) {
 
@@ -367,7 +367,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function setTexture3D( texture, slot ) {
 
-		var textureProperties = properties.get( texture );
+		const textureProperties = properties.get( texture );
 
 		if ( texture.version > 0 && textureProperties.__version !== texture.version ) {
 
@@ -385,7 +385,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 		if ( texture.image.length !== 6 ) return;
 
-		var textureProperties = properties.get( texture );
+		const textureProperties = properties.get( texture );
 
 		if ( texture.version > 0 && textureProperties.__version !== texture.version ) {
 
@@ -396,12 +396,12 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 			_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );
 
-			var isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );
-			var isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );
+			const isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );
+			const isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );
 
-			var cubeImage = [];
+			const cubeImage = [];
 
-			for ( var i = 0; i < 6; i ++ ) {
+			for ( let i = 0; i < 6; i ++ ) {
 
 				if ( ! isCompressed && ! isDataTexture ) {
 
@@ -415,7 +415,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 			}
 
-			var image = cubeImage[ 0 ],
+			const image = cubeImage[ 0 ],
 				supportsMips = isPowerOfTwo( image ) || isWebGL2,
 				glFormat = utils.convert( texture.format ),
 				glType = utils.convert( texture.type ),
@@ -423,17 +423,17 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 			setTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );
 
-			var mipmaps;
+			let mipmaps;
 
 			if ( isCompressed ) {
 
-				for ( var i = 0; i < 6; i ++ ) {
+				for ( let i = 0; i < 6; i ++ ) {
 
 					mipmaps = cubeImage[ i ].mipmaps;
 
-					for ( var j = 0; j < mipmaps.length; j ++ ) {
+					for ( let j = 0; j < mipmaps.length; j ++ ) {
 
-						var mipmap = mipmaps[ j ];
+						const mipmap = mipmaps[ j ];
 
 						if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {
 
@@ -463,16 +463,16 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 				mipmaps = texture.mipmaps;
 
-				for ( var i = 0; i < 6; i ++ ) {
+				for ( let i = 0; i < 6; i ++ ) {
 
 					if ( isDataTexture ) {
 
 						state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );
 
-						for ( var j = 0; j < mipmaps.length; j ++ ) {
+						for ( let j = 0; j < mipmaps.length; j ++ ) {
 
-							var mipmap = mipmaps[ j ];
-							var mipmapImage = mipmap.image[ i ].image;
+							const mipmap = mipmaps[ j ];
+							const mipmapImage = mipmap.image[ i ].image;
 
 							state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );
 
@@ -482,9 +482,9 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 						state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );
 
-						for ( var j = 0; j < mipmaps.length; j ++ ) {
+						for ( let j = 0; j < mipmaps.length; j ++ ) {
 
-							var mipmap = mipmaps[ j ];
+							const mipmap = mipmaps[ j ];
 
 							state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );
 
@@ -525,13 +525,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	}
 
-	var wrappingToGL = {
+	const wrappingToGL = {
 		[ RepeatWrapping ]: _gl.REPEAT,
 		[ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE,
 		[ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT
 	};
 
-	var filterToGL = {
+	const filterToGL = {
 		[ NearestFilter ]: _gl.NEAREST,
 		[ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST,
 		[ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR,
@@ -585,7 +585,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 		}
 
-		var extension = extensions.get( 'EXT_texture_filter_anisotropic' );
+		const extension = extensions.get( 'EXT_texture_filter_anisotropic' );
 
 		if ( extension ) {
 
@@ -621,7 +621,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function uploadTexture( textureProperties, texture, slot ) {
 
-		var textureType = _gl.TEXTURE_2D;
+		let textureType = _gl.TEXTURE_2D;
 
 		if ( texture.isDataTexture2DArray ) textureType = _gl.TEXTURE_2D_ARRAY;
 		if ( texture.isDataTexture3D ) textureType = _gl.TEXTURE_3D;
@@ -635,17 +635,19 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 		_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );
 		_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );
 
-		var needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;
-		var image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );
+		const needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;
+		const image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );
 
-		var supportsMips = isPowerOfTwo( image ) || isWebGL2,
-			glFormat = utils.convert( texture.format ),
-			glType = utils.convert( texture.type ),
+		const supportsMips = isPowerOfTwo( image ) || isWebGL2,
+			glFormat = utils.convert( texture.format );
+
+		let glType = utils.convert( texture.type ),
 			glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );
 
 		setTextureParameters( textureType, texture, supportsMips );
 
-		var mipmap, mipmaps = texture.mipmaps;
+		let mipmap;
+		const mipmaps = texture.mipmaps;
 
 		if ( texture.isDepthTexture ) {
 
@@ -733,7 +735,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 			if ( mipmaps.length > 0 && supportsMips ) {
 
-				for ( var i = 0, il = mipmaps.length; i < il; i ++ ) {
+				for ( let i = 0, il = mipmaps.length; i < il; i ++ ) {
 
 					mipmap = mipmaps[ i ];
 					state.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );
@@ -752,7 +754,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 		} else if ( texture.isCompressedTexture ) {
 
-			for ( var i = 0, il = mipmaps.length; i < il; i ++ ) {
+			for ( let i = 0, il = mipmaps.length; i < il; i ++ ) {
 
 				mipmap = mipmaps[ i ];
 
@@ -798,7 +800,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 			if ( mipmaps.length > 0 && supportsMips ) {
 
-				for ( var i = 0, il = mipmaps.length; i < il; i ++ ) {
+				for ( let i = 0, il = mipmaps.length; i < il; i ++ ) {
 
 					mipmap = mipmaps[ i ];
 					state.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap );
@@ -834,9 +836,9 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 	// Setup storage for target texture and bind it to correct framebuffer
 	function setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {
 
-		var glFormat = utils.convert( renderTarget.texture.format );
-		var glType = utils.convert( renderTarget.texture.type );
-		var glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );
+		const glFormat = utils.convert( renderTarget.texture.format );
+		const glType = utils.convert( renderTarget.texture.type );
+		const glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );
 		state.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );
 		_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
 		_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );
@@ -851,11 +853,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 		if ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {
 
-			var glInternalFormat = _gl.DEPTH_COMPONENT16;
+			let glInternalFormat = _gl.DEPTH_COMPONENT16;
 
 			if ( isMultisample ) {
 
-				var depthTexture = renderTarget.depthTexture;
+				const depthTexture = renderTarget.depthTexture;
 
 				if ( depthTexture && depthTexture.isDepthTexture ) {
 
@@ -871,7 +873,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 				}
 
-				var samples = getRenderTargetSamples( renderTarget );
+				const samples = getRenderTargetSamples( renderTarget );
 
 				_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
 
@@ -887,7 +889,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 			if ( isMultisample ) {
 
-				var samples = getRenderTargetSamples( renderTarget );
+				const samples = getRenderTargetSamples( renderTarget );
 
 				_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );
 
@@ -902,13 +904,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 		} else {
 
-			var glFormat = utils.convert( renderTarget.texture.format );
-			var glType = utils.convert( renderTarget.texture.type );
-			var glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );
+			const glFormat = utils.convert( renderTarget.texture.format );
+			const glType = utils.convert( renderTarget.texture.type );
+			const glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );
 
 			if ( isMultisample ) {
 
-				var samples = getRenderTargetSamples( renderTarget );
+				const samples = getRenderTargetSamples( renderTarget );
 
 				_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
 
@@ -927,7 +929,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 	// Setup resources for a Depth Texture for a FBO (needs an extension)
 	function setupDepthTexture( framebuffer, renderTarget ) {
 
-		var isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );
+		const isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );
 		if ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );
 
 		_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
@@ -951,7 +953,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 		setTexture2D( renderTarget.depthTexture, 0 );
 
-		var webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;
+		const webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;
 
 		if ( renderTarget.depthTexture.format === DepthFormat ) {
 
@@ -972,9 +974,9 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 	// Setup GL resources for a non-texture depth buffer
 	function setupDepthRenderbuffer( renderTarget ) {
 
-		var renderTargetProperties = properties.get( renderTarget );
+		const renderTargetProperties = properties.get( renderTarget );
 
-		var isCube = ( renderTarget.isWebGLCubeRenderTarget === true );
+		const isCube = ( renderTarget.isWebGLCubeRenderTarget === true );
 
 		if ( renderTarget.depthTexture ) {
 
@@ -988,7 +990,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 				renderTargetProperties.__webglDepthbuffer = [];
 
-				for ( var i = 0; i < 6; i ++ ) {
+				for ( let i = 0; i < 6; i ++ ) {
 
 					_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );
 					renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();
@@ -1013,8 +1015,8 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 	// Set up GL resources for the render target
 	function setupRenderTarget( renderTarget ) {
 
-		var renderTargetProperties = properties.get( renderTarget );
-		var textureProperties = properties.get( renderTarget.texture );
+		const renderTargetProperties = properties.get( renderTarget );
+		const textureProperties = properties.get( renderTarget.texture );
 
 		renderTarget.addEventListener( 'dispose', onRenderTargetDispose );
 
@@ -1022,9 +1024,9 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 		info.memory.textures ++;
 
-		var isCube = ( renderTarget.isWebGLCubeRenderTarget === true );
-		var isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );
-		var supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;
+		const isCube = ( renderTarget.isWebGLCubeRenderTarget === true );
+		const isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );
+		const supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;
 
 		// Handles WebGL2 RGBFormat fallback - #18858
 
@@ -1042,7 +1044,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 			renderTargetProperties.__webglFramebuffer = [];
 
-			for ( var i = 0; i < 6; i ++ ) {
+			for ( let i = 0; i < 6; i ++ ) {
 
 				renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();
 
@@ -1061,10 +1063,10 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 					_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer );
 
-					var glFormat = utils.convert( renderTarget.texture.format );
-					var glType = utils.convert( renderTarget.texture.type );
-					var glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );
-					var samples = getRenderTargetSamples( renderTarget );
+					const glFormat = utils.convert( renderTarget.texture.format );
+					const glType = utils.convert( renderTarget.texture.type );
+					const glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );
+					const samples = getRenderTargetSamples( renderTarget );
 					_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
 
 					_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );
@@ -1098,7 +1100,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 			state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );
 			setTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, supportsMips );
 
-			for ( var i = 0; i < 6; i ++ ) {
+			for ( let i = 0; i < 6; i ++ ) {
 
 				setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );
 
@@ -1140,13 +1142,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function updateRenderTargetMipmap( renderTarget ) {
 
-		var texture = renderTarget.texture;
-		var supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;
+		const texture = renderTarget.texture;
+		const supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;
 
 		if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {
 
-			var target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;
-			var webglTexture = properties.get( texture ).__webglTexture;
+			const target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;
+			const webglTexture = properties.get( texture ).__webglTexture;
 
 			state.bindTexture( target, webglTexture );
 			generateMipmap( target, texture, renderTarget.width, renderTarget.height );
@@ -1162,14 +1164,14 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 			if ( isWebGL2 ) {
 
-				var renderTargetProperties = properties.get( renderTarget );
+				const renderTargetProperties = properties.get( renderTarget );
 
 				_gl.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );
 				_gl.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
 
-				var width = renderTarget.width;
-				var height = renderTarget.height;
-				var mask = _gl.COLOR_BUFFER_BIT;
+				const width = renderTarget.width;
+				const height = renderTarget.height;
+				let mask = _gl.COLOR_BUFFER_BIT;
 
 				if ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;
 				if ( renderTarget.stencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;
@@ -1197,7 +1199,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	function updateVideoTexture( texture ) {
 
-		var frame = info.render.frame;
+		const frame = info.render.frame;
 
 		// Check the last frame we updated the VideoTexture
 
@@ -1212,8 +1214,8 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	// backwards compatibility
 
-	var warnedTexture2D = false;
-	var warnedTextureCube = false;
+	let warnedTexture2D = false;
+	let warnedTextureCube = false;
 
 	function safeSetTexture2D( texture, slot ) {
 

+ 75 - 71
src/renderers/webgl/WebGLUniforms.js

@@ -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 );
 
 	}

+ 2 - 2
src/renderers/webgl/WebGLUtils.js

@@ -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;

+ 4 - 4
src/renderers/webxr/WebXRController.js

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

+ 67 - 67
src/renderers/webxr/WebXRManager.js

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