|
@@ -20,24 +20,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 {
|
|
|
|
|
@@ -47,7 +49,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 );
|