|
|
@@ -13190,7 +13190,7 @@ const _removedEvent = { type: 'removed' };
|
|
|
const _childaddedEvent = { type: 'childadded', child: null };
|
|
|
|
|
|
/**
|
|
|
- * Fires when a new child object has been added.
|
|
|
+ * Fires when a child object has been removed.
|
|
|
*
|
|
|
* @event Object3D#childremoved
|
|
|
* @type {Object}
|
|
|
@@ -17786,7 +17786,7 @@ class BufferAttribute {
|
|
|
/**
|
|
|
* Applies to integer data only. Indicates how the underlying data in the buffer maps to
|
|
|
* the values in the GLSL code. For instance, if `array` is an instance of `UInt16Array`,
|
|
|
- * and `normalized` is `true`, the values `0 -+65535` in the array data will be mapped to
|
|
|
+ * and `normalized` is `true`, the values `0 - +65535` in the array data will be mapped to
|
|
|
* `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted
|
|
|
* to floats unmodified, i.e. `65535` becomes `65535.0f`.
|
|
|
*
|
|
|
@@ -44293,6 +44293,8 @@ class CompressedTextureLoader extends Loader {
|
|
|
|
|
|
}
|
|
|
|
|
|
+const _loading = new WeakMap();
|
|
|
+
|
|
|
/**
|
|
|
* A loader for loading images. The class loads images with the HTML `Image` API.
|
|
|
*
|
|
|
@@ -44343,15 +44345,32 @@ class ImageLoader extends Loader {
|
|
|
|
|
|
if ( cached !== undefined ) {
|
|
|
|
|
|
- scope.manager.itemStart( url );
|
|
|
+ if ( cached.complete === true ) {
|
|
|
|
|
|
- setTimeout( function () {
|
|
|
+ scope.manager.itemStart( url );
|
|
|
|
|
|
- if ( onLoad ) onLoad( cached );
|
|
|
+ setTimeout( function () {
|
|
|
|
|
|
- scope.manager.itemEnd( url );
|
|
|
+ if ( onLoad ) onLoad( cached );
|
|
|
|
|
|
- }, 0 );
|
|
|
+ scope.manager.itemEnd( url );
|
|
|
+
|
|
|
+ }, 0 );
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ let arr = _loading.get( cached );
|
|
|
+
|
|
|
+ if ( arr === undefined ) {
|
|
|
+
|
|
|
+ arr = [];
|
|
|
+ _loading.set( cached, arr );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ arr.push( { onLoad, onError } );
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
return cached;
|
|
|
|
|
|
@@ -44363,10 +44382,21 @@ class ImageLoader extends Loader {
|
|
|
|
|
|
removeEventListeners();
|
|
|
|
|
|
- Cache.add( url, this );
|
|
|
-
|
|
|
if ( onLoad ) onLoad( this );
|
|
|
|
|
|
+ //
|
|
|
+
|
|
|
+ const callbacks = _loading.get( this ) || [];
|
|
|
+
|
|
|
+ for ( let i = 0; i < callbacks.length; i ++ ) {
|
|
|
+
|
|
|
+ const callback = callbacks[ i ];
|
|
|
+ if ( callback.onLoad ) callback.onLoad( this );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ _loading.delete( this );
|
|
|
+
|
|
|
scope.manager.itemEnd( url );
|
|
|
|
|
|
}
|
|
|
@@ -44377,6 +44407,22 @@ class ImageLoader extends Loader {
|
|
|
|
|
|
if ( onError ) onError( event );
|
|
|
|
|
|
+ Cache.remove( url );
|
|
|
+
|
|
|
+ //
|
|
|
+
|
|
|
+ const callbacks = _loading.get( this ) || [];
|
|
|
+
|
|
|
+ for ( let i = 0; i < callbacks.length; i ++ ) {
|
|
|
+
|
|
|
+ const callback = callbacks[ i ];
|
|
|
+ if ( callback.onError ) callback.onError( event );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ _loading.delete( this );
|
|
|
+
|
|
|
+
|
|
|
scope.manager.itemError( url );
|
|
|
scope.manager.itemEnd( url );
|
|
|
|
|
|
@@ -44398,6 +44444,7 @@ class ImageLoader extends Loader {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ Cache.add( url, image );
|
|
|
scope.manager.itemStart( url );
|
|
|
|
|
|
image.src = url;
|
|
|
@@ -54221,8 +54268,9 @@ class GLBufferAttribute {
|
|
|
* @param {number} itemSize - The item size.
|
|
|
* @param {number} elementSize - The corresponding size (in bytes) for the given `type` parameter.
|
|
|
* @param {number} count - The expected number of vertices in VBO.
|
|
|
+ * @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
|
*/
|
|
|
- constructor( buffer, type, itemSize, elementSize, count ) {
|
|
|
+ constructor( buffer, type, itemSize, elementSize, count, normalized = false ) {
|
|
|
|
|
|
/**
|
|
|
* This flag can be used for type testing.
|
|
|
@@ -54275,6 +54323,17 @@ class GLBufferAttribute {
|
|
|
*/
|
|
|
this.count = count;
|
|
|
|
|
|
+ /**
|
|
|
+ * Applies to integer data only. Indicates how the underlying data in the buffer maps to
|
|
|
+ * the values in the GLSL code. For instance, if `buffer` contains data of `gl.UNSIGNED_SHORT`,
|
|
|
+ * and `normalized` is `true`, the values `0 - +65535` in the buffer data will be mapped to
|
|
|
+ * `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted
|
|
|
+ * to floats unmodified, i.e. `65535` becomes `65535.0f`.
|
|
|
+ *
|
|
|
+ * @type {boolean}
|
|
|
+ */
|
|
|
+ this.normalized = normalized;
|
|
|
+
|
|
|
/**
|
|
|
* A version number, incremented every time the `needsUpdate` is set to `true`.
|
|
|
*
|
|
|
@@ -65151,7 +65210,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
useFog: material.fog === true,
|
|
|
fogExp2: ( !! fog && fog.isFogExp2 ),
|
|
|
|
|
|
- flatShading: material.flatShading === true,
|
|
|
+ flatShading: ( material.flatShading === true && material.wireframe === false ),
|
|
|
|
|
|
sizeAttenuation: material.sizeAttenuation === true,
|
|
|
logarithmicDepthBuffer: logarithmicDepthBuffer,
|
|
|
@@ -67545,7 +67604,7 @@ function WebGLState( gl, extensions ) {
|
|
|
break;
|
|
|
|
|
|
case MultiplyBlending:
|
|
|
- gl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );
|
|
|
+ gl.blendFuncSeparate( gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ZERO, gl.ONE );
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
@@ -67563,15 +67622,15 @@ function WebGLState( gl, extensions ) {
|
|
|
break;
|
|
|
|
|
|
case AdditiveBlending:
|
|
|
- gl.blendFunc( gl.SRC_ALPHA, gl.ONE );
|
|
|
+ gl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE );
|
|
|
break;
|
|
|
|
|
|
case SubtractiveBlending:
|
|
|
- gl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );
|
|
|
+ console.error( 'THREE.WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true' );
|
|
|
break;
|
|
|
|
|
|
case MultiplyBlending:
|
|
|
- gl.blendFunc( gl.ZERO, gl.SRC_COLOR );
|
|
|
+ console.error( 'THREE.WebGLState: MultiplyBlending requires material.premultipliedAlpha = true' );
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
@@ -75705,7 +75764,7 @@ class WebGLRenderer {
|
|
|
|
|
|
if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
|
|
|
|
|
|
- // when using MRT, select the corect color buffer for the subsequent read command
|
|
|
+ // when using MRT, select the correct color buffer for the subsequent read command
|
|
|
|
|
|
if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
|
|
|
|