|
@@ -14035,7 +14035,7 @@ var fog_vertex = "#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif";
|
|
|
|
|
|
var fog_pars_vertex = "#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif";
|
|
|
|
|
|
-var fog_fragment = "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif";
|
|
|
+var fog_fragment = "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif";
|
|
|
|
|
|
var fog_pars_fragment = "#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif";
|
|
|
|
|
@@ -15756,13 +15756,13 @@ function WebGLExtensions( gl ) {
|
|
|
|
|
|
function WebGLGeometries( gl, attributes, info ) {
|
|
|
|
|
|
- var geometries = {};
|
|
|
- var wireframeAttributes = {};
|
|
|
+ var geometries = new WeakMap();
|
|
|
+ var wireframeAttributes = new WeakMap();
|
|
|
|
|
|
function onGeometryDispose( event ) {
|
|
|
|
|
|
var geometry = event.target;
|
|
|
- var buffergeometry = geometries[ geometry.id ];
|
|
|
+ var buffergeometry = geometries.get( geometry );
|
|
|
|
|
|
if ( buffergeometry.index !== null ) {
|
|
|
|
|
@@ -15778,14 +15778,14 @@ function WebGLGeometries( gl, attributes, info ) {
|
|
|
|
|
|
geometry.removeEventListener( 'dispose', onGeometryDispose );
|
|
|
|
|
|
- delete geometries[ geometry.id ];
|
|
|
+ geometries.delete( geometry );
|
|
|
|
|
|
- var attribute = wireframeAttributes[ buffergeometry.id ];
|
|
|
+ var attribute = wireframeAttributes.get( buffergeometry );
|
|
|
|
|
|
if ( attribute ) {
|
|
|
|
|
|
attributes.remove( attribute );
|
|
|
- delete wireframeAttributes[ buffergeometry.id ];
|
|
|
+ wireframeAttributes.delete( buffergeometry );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -15797,7 +15797,7 @@ function WebGLGeometries( gl, attributes, info ) {
|
|
|
|
|
|
function get( object, geometry ) {
|
|
|
|
|
|
- var buffergeometry = geometries[ geometry.id ];
|
|
|
+ var buffergeometry = geometries.get( geometry );
|
|
|
|
|
|
if ( buffergeometry ) return buffergeometry;
|
|
|
|
|
@@ -15819,7 +15819,7 @@ function WebGLGeometries( gl, attributes, info ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- geometries[ geometry.id ] = buffergeometry;
|
|
|
+ geometries.set( geometry, buffergeometry );
|
|
|
|
|
|
info.memory.geometries ++;
|
|
|
|
|
@@ -15909,19 +15909,19 @@ function WebGLGeometries( gl, attributes, info ) {
|
|
|
|
|
|
//
|
|
|
|
|
|
- var previousAttribute = wireframeAttributes[ geometry.id ];
|
|
|
+ var previousAttribute = wireframeAttributes.get( geometry );
|
|
|
|
|
|
if ( previousAttribute ) attributes.remove( previousAttribute );
|
|
|
|
|
|
//
|
|
|
|
|
|
- wireframeAttributes[ geometry.id ] = attribute;
|
|
|
+ wireframeAttributes.set( geometry, attribute );
|
|
|
|
|
|
}
|
|
|
|
|
|
function getWireframeAttribute( geometry ) {
|
|
|
|
|
|
- var currentAttribute = wireframeAttributes[ geometry.id ];
|
|
|
+ var currentAttribute = wireframeAttributes.get( geometry );
|
|
|
|
|
|
if ( currentAttribute ) {
|
|
|
|
|
@@ -15945,7 +15945,7 @@ function WebGLGeometries( gl, attributes, info ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- return wireframeAttributes[ geometry.id ];
|
|
|
+ return wireframeAttributes.get( geometry );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -16001,7 +16001,7 @@ function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- var extension = extensions.get( 'ANGLE_instanced_arrays' );
|
|
|
+ extension = extensions.get( 'ANGLE_instanced_arrays' );
|
|
|
|
|
|
if ( extension === null ) {
|
|
|
|
|
@@ -17594,7 +17594,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
|
|
|
|
|
|
'#define MAX_BONES ' + parameters.maxBones,
|
|
|
( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',
|
|
|
- ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',
|
|
|
+ ( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',
|
|
|
|
|
|
parameters.map ? '#define USE_MAP' : '',
|
|
|
parameters.envMap ? '#define USE_ENVMAP' : '',
|
|
@@ -17709,7 +17709,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
|
|
|
'#define GAMMA_FACTOR ' + gammaFactorDefine,
|
|
|
|
|
|
( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',
|
|
|
- ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',
|
|
|
+ ( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',
|
|
|
|
|
|
parameters.map ? '#define USE_MAP' : '',
|
|
|
parameters.matcap ? '#define USE_MATCAP' : '',
|
|
@@ -18007,7 +18007,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
|
|
|
"precision", "supportsVertexTextures", "map", "mapEncoding", "matcap", "matcapEncoding", "envMap", "envMapMode", "envMapEncoding",
|
|
|
"lightMap", "aoMap", "emissiveMap", "emissiveMapEncoding", "bumpMap", "normalMap", "objectSpaceNormalMap", "clearCoatNormalMap", "displacementMap", "specularMap",
|
|
|
"roughnessMap", "metalnessMap", "gradientMap",
|
|
|
- "alphaMap", "combine", "vertexColors", "vertexTangents", "fog", "useFog", "fogExp",
|
|
|
+ "alphaMap", "combine", "vertexColors", "vertexTangents", "fog", "useFog", "fogExp2",
|
|
|
"flatShading", "sizeAttenuation", "logarithmicDepthBuffer", "skinning",
|
|
|
"maxBones", "useVertexTexture", "morphTargets", "morphNormals",
|
|
|
"maxMorphTargets", "maxMorphNormals", "premultipliedAlpha",
|
|
@@ -18146,7 +18146,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
|
|
|
|
|
|
fog: !! fog,
|
|
|
useFog: material.fog,
|
|
|
- fogExp: ( fog && fog.isFogExp2 ),
|
|
|
+ fogExp2: ( fog && fog.isFogExp2 ),
|
|
|
|
|
|
flatShading: material.flatShading,
|
|
|
|
|
@@ -18495,7 +18495,7 @@ function WebGLRenderList() {
|
|
|
|
|
|
function WebGLRenderLists() {
|
|
|
|
|
|
- var lists = {};
|
|
|
+ var lists = new WeakMap();
|
|
|
|
|
|
function onSceneDispose( event ) {
|
|
|
|
|
@@ -18503,29 +18503,29 @@ function WebGLRenderLists() {
|
|
|
|
|
|
scene.removeEventListener( 'dispose', onSceneDispose );
|
|
|
|
|
|
- delete lists[ scene.id ];
|
|
|
+ lists.delete( scene );
|
|
|
|
|
|
}
|
|
|
|
|
|
function get( scene, camera ) {
|
|
|
|
|
|
- var cameras = lists[ scene.id ];
|
|
|
+ var cameras = lists.get( scene );
|
|
|
var list;
|
|
|
if ( cameras === undefined ) {
|
|
|
|
|
|
list = new WebGLRenderList();
|
|
|
- lists[ scene.id ] = {};
|
|
|
- lists[ scene.id ][ camera.id ] = list;
|
|
|
+ lists.set( scene, new WeakMap() );
|
|
|
+ lists.get( scene ).set( camera, list );
|
|
|
|
|
|
scene.addEventListener( 'dispose', onSceneDispose );
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- list = cameras[ camera.id ];
|
|
|
+ list = cameras.get( camera );
|
|
|
if ( list === undefined ) {
|
|
|
|
|
|
list = new WebGLRenderList();
|
|
|
- cameras[ camera.id ] = list;
|
|
|
+ cameras.set( camera, list );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -18537,7 +18537,7 @@ function WebGLRenderLists() {
|
|
|
|
|
|
function dispose() {
|
|
|
|
|
|
- lists = {};
|
|
|
+ lists = new WeakMap();
|
|
|
|
|
|
}
|
|
|
|
|
@@ -19006,7 +19006,7 @@ function WebGLRenderState() {
|
|
|
|
|
|
function WebGLRenderStates() {
|
|
|
|
|
|
- var renderStates = {};
|
|
|
+ var renderStates = new WeakMap();
|
|
|
|
|
|
function onSceneDispose( event ) {
|
|
|
|
|
@@ -19014,7 +19014,7 @@ function WebGLRenderStates() {
|
|
|
|
|
|
scene.removeEventListener( 'dispose', onSceneDispose );
|
|
|
|
|
|
- delete renderStates[ scene.id ];
|
|
|
+ renderStates.delete( scene );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -19022,24 +19022,24 @@ function WebGLRenderStates() {
|
|
|
|
|
|
var renderState;
|
|
|
|
|
|
- if ( renderStates[ scene.id ] === undefined ) {
|
|
|
+ if ( renderStates.has( scene ) === false ) {
|
|
|
|
|
|
renderState = new WebGLRenderState();
|
|
|
- renderStates[ scene.id ] = {};
|
|
|
- renderStates[ scene.id ][ camera.id ] = renderState;
|
|
|
+ renderStates.set( scene, new WeakMap() );
|
|
|
+ renderStates.get( scene ).set( camera, renderState );
|
|
|
|
|
|
scene.addEventListener( 'dispose', onSceneDispose );
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- if ( renderStates[ scene.id ][ camera.id ] === undefined ) {
|
|
|
+ if ( renderStates.get( scene ).has( camera ) === false ) {
|
|
|
|
|
|
renderState = new WebGLRenderState();
|
|
|
- renderStates[ scene.id ][ camera.id ] = renderState;
|
|
|
+ renderStates.get( scene ).set( camera, renderState );
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- renderState = renderStates[ scene.id ][ camera.id ];
|
|
|
+ renderState = renderStates.get( scene ).get( camera );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -19051,7 +19051,7 @@ function WebGLRenderStates() {
|
|
|
|
|
|
function dispose() {
|
|
|
|
|
|
- renderStates = {};
|
|
|
+ renderStates = new WeakMap();
|
|
|
|
|
|
}
|
|
|
|
|
@@ -20636,7 +20636,7 @@ function WebGLState( gl, extensions, utils, capabilities ) {
|
|
|
|
|
|
function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {
|
|
|
|
|
|
- var _videoTextures = {};
|
|
|
+ var _videoTextures = new WeakMap();
|
|
|
var _canvas;
|
|
|
|
|
|
//
|
|
@@ -20818,7 +20818,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
|
|
|
if ( texture.isVideoTexture ) {
|
|
|
|
|
|
- delete _videoTextures[ texture.id ];
|
|
|
+ _videoTextures.delete( texture );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -21039,9 +21039,9 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
for ( var j = 0; j < mipmaps.length; ++ j ) {
|
|
|
|
|
|
var mipmap = mipmaps[ j ];
|
|
|
- var image = mipmap.image[ i ].image;
|
|
|
+ var mipmapImage = mipmap.image[ i ].image;
|
|
|
|
|
|
- state.texImage2D( 34069 + i, j + 1, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );
|
|
|
+ state.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -21061,7 +21061,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- var mipmaps = cubeImage[ i ].mipmaps;
|
|
|
+ mipmaps = cubeImage[ i ].mipmaps;
|
|
|
|
|
|
for ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {
|
|
|
|
|
@@ -21727,14 +21727,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
|
|
|
function updateVideoTexture( texture ) {
|
|
|
|
|
|
- var id = texture.id;
|
|
|
var frame = info.render.frame;
|
|
|
|
|
|
// Check the last frame we updated the VideoTexture
|
|
|
|
|
|
- if ( _videoTextures[ id ] !== frame ) {
|
|
|
+ if ( _videoTextures.get( texture ) !== frame ) {
|
|
|
|
|
|
- _videoTextures[ id ] = frame;
|
|
|
+ _videoTextures.set( texture, frame );
|
|
|
texture.update();
|
|
|
|
|
|
}
|
|
@@ -41047,6 +41046,7 @@ function Audio( listener ) {
|
|
|
this.loop = false;
|
|
|
this.startTime = 0;
|
|
|
this.offset = 0;
|
|
|
+ this.duration = undefined;
|
|
|
this.playbackRate = 1;
|
|
|
this.isPlaying = false;
|
|
|
this.hasPlaybackControl = true;
|
|
@@ -41121,7 +41121,7 @@ Audio.prototype = Object.assign( Object.create( Object3D.prototype ), {
|
|
|
source.loop = this.loop;
|
|
|
source.onended = this.onEnded.bind( this );
|
|
|
this.startTime = this.context.currentTime;
|
|
|
- source.start( this.startTime, this.offset );
|
|
|
+ source.start( this.startTime, this.offset, this.duration );
|
|
|
|
|
|
this.isPlaying = true;
|
|
|
|