|
@@ -2001,7 +2001,7 @@ class Texture extends EventDispatcher {
|
|
|
this.onUpdate = null;
|
|
|
|
|
|
this.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not
|
|
|
- this.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)
|
|
|
+ this.pmremVersion = 0; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)
|
|
|
|
|
|
}
|
|
|
|
|
@@ -2232,6 +2232,16 @@ class Texture extends EventDispatcher {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ set needsPMREMUpdate( value ) {
|
|
|
+
|
|
|
+ if ( value === true ) {
|
|
|
+
|
|
|
+ this.pmremVersion ++;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
Texture.DEFAULT_IMAGE = null;
|
|
@@ -17041,24 +17051,26 @@ function WebGLCubeUVMaps( renderer ) {
|
|
|
|
|
|
if ( isEquirectMap || isCubeMap ) {
|
|
|
|
|
|
- if ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {
|
|
|
+ let renderTarget = cubeUVmaps.get( texture );
|
|
|
|
|
|
- texture.needsPMREMUpdate = false;
|
|
|
+ const currentPMREMVersion = renderTarget !== undefined ? renderTarget.texture.pmremVersion : 0;
|
|
|
|
|
|
- let renderTarget = cubeUVmaps.get( texture );
|
|
|
+ if ( texture.isRenderTargetTexture && texture.pmremVersion !== currentPMREMVersion ) {
|
|
|
|
|
|
if ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );
|
|
|
|
|
|
renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );
|
|
|
+ renderTarget.texture.pmremVersion = texture.pmremVersion;
|
|
|
+
|
|
|
cubeUVmaps.set( texture, renderTarget );
|
|
|
|
|
|
return renderTarget.texture;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- if ( cubeUVmaps.has( texture ) ) {
|
|
|
+ if ( renderTarget !== undefined ) {
|
|
|
|
|
|
- return cubeUVmaps.get( texture ).texture;
|
|
|
+ return renderTarget.texture;
|
|
|
|
|
|
} else {
|
|
|
|
|
@@ -17068,7 +17080,9 @@ function WebGLCubeUVMaps( renderer ) {
|
|
|
|
|
|
if ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );
|
|
|
|
|
|
- const renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );
|
|
|
+ renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );
|
|
|
+ renderTarget.texture.pmremVersion = texture.pmremVersion;
|
|
|
+
|
|
|
cubeUVmaps.set( texture, renderTarget );
|
|
|
|
|
|
texture.addEventListener( 'dispose', onTextureDispose );
|
|
@@ -32356,6 +32370,7 @@ class InstancedMesh extends Mesh {
|
|
|
|
|
|
this.instanceMatrix.copy( source.instanceMatrix );
|
|
|
|
|
|
+ if ( source.morphTexture !== null ) this.morphTexture = source.morphTexture.clone();
|
|
|
if ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();
|
|
|
|
|
|
this.count = source.count;
|
|
@@ -32507,6 +32522,15 @@ class InstancedMesh extends Mesh {
|
|
|
|
|
|
this.dispatchEvent( { type: 'dispose' } );
|
|
|
|
|
|
+ if ( this.morphTexture !== null ) {
|
|
|
+
|
|
|
+ this.morphTexture.dispose();
|
|
|
+ this.morphTexture = null;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return this;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -42384,7 +42408,7 @@ VectorKeyframeTrack.prototype.ValueTypeName = 'vector';
|
|
|
|
|
|
class AnimationClip {
|
|
|
|
|
|
- constructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {
|
|
|
+ constructor( name = '', duration = - 1, tracks = [], blendMode = NormalAnimationBlendMode ) {
|
|
|
|
|
|
this.name = name;
|
|
|
this.tracks = tracks;
|