Emmett Lalish пре 5 година
родитељ
комит
0ba91a2f8d

+ 1 - 6
examples/js/pmrem/PMREMGenerator.js

@@ -104,12 +104,7 @@ THREE.PMREMGenerator = ( function () {
 			equirectangular.minFilter = THREE.NearestFilter;
 			equirectangular.minFilter = THREE.NearestFilter;
 			equirectangular.generateMipmaps = false;
 			equirectangular.generateMipmaps = false;
 
 
-			var cubeUVRenderTarget = _allocateTargets( equirectangular );
-			_textureToCubeUV( equirectangular, cubeUVRenderTarget );
-			_applyPMREM( cubeUVRenderTarget );
-			_cleanup();
-
-			return cubeUVRenderTarget;
+			return this.fromCubemap( equirectangular );
 
 
 		},
 		},
 
 

+ 1 - 6
examples/jsm/pmrem/PMREMGenerator.js

@@ -130,12 +130,7 @@ var PMREMGenerator = ( function () {
 			equirectangular.minFilter = NearestFilter;
 			equirectangular.minFilter = NearestFilter;
 			equirectangular.generateMipmaps = false;
 			equirectangular.generateMipmaps = false;
 
 
-			var cubeUVRenderTarget = _allocateTargets( equirectangular );
-			_textureToCubeUV( equirectangular, cubeUVRenderTarget );
-			_applyPMREM( cubeUVRenderTarget );
-			_cleanup();
-
-			return cubeUVRenderTarget;
+			return this.fromCubemap( equirectangular );
 
 
 		},
 		},
 
 

+ 5 - 26
examples/webgl_furnace_test.html

@@ -29,7 +29,6 @@
 			import * as THREE from '../build/three.module.js';
 			import * as THREE from '../build/three.module.js';
 
 
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			var scene, camera, renderer, envMap, radianceMap;
 			var scene, camera, renderer, envMap, radianceMap;
 			var right = 8;
 			var right = 8;
@@ -110,34 +109,15 @@
 
 
 			function createEnvironment() {
 			function createEnvironment() {
 
 
-				var envScene = new THREE.Scene();
-				envScene.background = new THREE.Color( 0xcccccc );
-
-				var cubeCamera = new THREE.CubeCamera( 1, 100, 256, 256 );
-				cubeCamera.update( renderer, envScene );
-
-				envMap = cubeCamera.renderTarget.texture;
-
-				scene.background = envScene.background;
-
-			}
-
-			function getRadiance() {
-
 				return new Promise( function ( resolve ) {
 				return new Promise( function ( resolve ) {
 
 
-					var pmremGenerator = new PMREMGenerator( envMap );
-					pmremGenerator.update( renderer );
-
-					var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-					pmremCubeUVPacker.update( renderer );
-
-					var cubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+					var envScene = new THREE.Scene();
+					envScene.background = new THREE.Color( 0xcccccc );
 
 
-					pmremGenerator.dispose();
-					pmremCubeUVPacker.dispose();
+					var pmremGenerator = new PMREMGenerator( renderer );
+					radianceMap = pmremGenerator.fromScene( envScene ).texture;
 
 
-					radianceMap = cubeRenderTarget.texture;
+					scene.background = envScene.background;
 
 
 					resolve();
 					resolve();
 
 
@@ -170,7 +150,6 @@
 			Promise.resolve()
 			Promise.resolve()
 				.then( init )
 				.then( init )
 				.then( createEnvironment )
 				.then( createEnvironment )
-				.then( getRadiance )
 				.then( createObjects )
 				.then( createObjects )
 				.then( animate );
 				.then( animate );
 
 

+ 3 - 14
examples/webgl_materials_cars.html

@@ -43,7 +43,6 @@
 			import { RGBELoader } from './jsm/loaders/RGBELoader.js';
 			import { RGBELoader } from './jsm/loaders/RGBELoader.js';
 
 
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			var camera, scene, renderer;
 			var camera, scene, renderer;
 			var stats, carModel, materialsLib, envMap;
 			var stats, carModel, materialsLib, envMap;
@@ -92,20 +91,10 @@
 							magFilter: texture.magFilter
 							magFilter: texture.magFilter
 						};
 						};
 
 
-						scene.background = new THREE.WebGLRenderTargetCube( 1024, 1024, options ).fromEquirectangularTexture( renderer, texture );
+						var pmremGenerator = new PMREMGenerator( renderer );
+						envMap = pmremGenerator.fromEquirectangular( texture ).texture;
 
 
-						envMap = scene.background;
-
-						var pmremGenerator = new PMREMGenerator( scene.background.texture );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						envMap = pmremCubeUVPacker.CubeUVRenderTarget.texture;
-
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
+						scene.background = envMap;
 
 
 						//
 						//
 
 

+ 6 - 21
examples/webgl_materials_envmaps_exr.html

@@ -21,7 +21,6 @@
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { EXRLoader } from './jsm/loaders/EXRLoader.js';
 			import { EXRLoader } from './jsm/loaders/EXRLoader.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			var params = {
 			var params = {
 				envMap: 'EXR',
 				envMap: 'EXR',
@@ -83,19 +82,12 @@
 							magFilter: THREE.LinearFilter
 							magFilter: THREE.LinearFilter
 						};
 						};
 
 
-						exrBackground = new THREE.WebGLRenderTargetCube( 512, 512, options ).fromEquirectangularTexture( renderer, texture );
+						var pmremGenerator = new PMREMGenerator( renderer );
+						exrCubeRenderTarget = pmremGenerator.fromEquirectangular( texture );
 
 
-						var pmremGenerator = new PMREMGenerator( exrBackground.texture );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						exrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+						exrBackground = exrCubeRenderTarget.texture;
 
 
 						texture.dispose();
 						texture.dispose();
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
 
 
 					} );
 					} );
 
 
@@ -103,19 +95,12 @@
 
 
 					texture.encoding = THREE.sRGBEncoding;
 					texture.encoding = THREE.sRGBEncoding;
 
 
-					pngBackground = new THREE.WebGLRenderTargetCube( 512, 512 ).fromEquirectangularTexture( renderer, texture );
-
-					var pmremGenerator = new PMREMGenerator( pngBackground.texture );
-					pmremGenerator.update( renderer );
-
-					var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-					pmremCubeUVPacker.update( renderer );
+					var pmremGenerator = new PMREMGenerator( renderer );
+					pngCubeRenderTarget = pmremGenerator.fromEquirectangular( texture );
 
 
-					pngCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+					pngBackground = pngCubeRenderTarget.texture;
 
 
 					texture.dispose();
 					texture.dispose();
-					pmremGenerator.dispose();
-					pmremCubeUVPacker.dispose();
 
 
 				} );
 				} );
 
 

+ 7 - 32
examples/webgl_materials_envmaps_hdr.html

@@ -24,7 +24,6 @@
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			var params = {
 			var params = {
 				envMap: 'HDR',
 				envMap: 'HDR',
@@ -85,20 +84,12 @@
 					.setDataType( THREE.UnsignedByteType )
 					.setDataType( THREE.UnsignedByteType )
 					.load( hdrUrls, function () {
 					.load( hdrUrls, function () {
 
 
-						var pmremGenerator = new PMREMGenerator( hdrCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						hdrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+						var pmremGenerator = new PMREMGenerator( renderer );
+						hdrCubeRenderTarget = pmremGenerator.fromCubemap( hdrCubeMap );
 
 
 						hdrCubeMap.magFilter = THREE.LinearFilter;
 						hdrCubeMap.magFilter = THREE.LinearFilter;
 						hdrCubeMap.needsUpdate = true;
 						hdrCubeMap.needsUpdate = true;
 
 
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
-
 					} );
 					} );
 
 
 				var ldrUrls = [ 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png' ];
 				var ldrUrls = [ 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png' ];
@@ -106,18 +97,10 @@
 					.setPath( './textures/cube/pisa/' )
 					.setPath( './textures/cube/pisa/' )
 					.load( ldrUrls, function () {
 					.load( ldrUrls, function () {
 
 
-						ldrCubeMap.encoding = THREE.sRGBEncoding;
-
-						var pmremGenerator = new PMREMGenerator( ldrCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
+						ldrCubeMap.encoding = THREE.GammaEncoding;
 
 
-						ldrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
-
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
+						var pmremGenerator = new PMREMGenerator( renderer );
+						ldrCubeRenderTarget = pmremGenerator.fromCubemap( ldrCubeMap );
 
 
 					} );
 					} );
 
 
@@ -130,20 +113,12 @@
 						rgbmCubeMap.encoding = THREE.RGBM16Encoding;
 						rgbmCubeMap.encoding = THREE.RGBM16Encoding;
 						rgbmCubeMap.format = THREE.RGBAFormat;
 						rgbmCubeMap.format = THREE.RGBAFormat;
 
 
-						var pmremGenerator = new PMREMGenerator( rgbmCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						rgbmCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+						var pmremGenerator = new PMREMGenerator( renderer );
+						rgbmCubeRenderTarget = pmremGenerator.fromCubemap( rgbmCubeMap );
 
 
 						rgbmCubeMap.magFilter = THREE.LinearFilter;
 						rgbmCubeMap.magFilter = THREE.LinearFilter;
 						rgbmCubeMap.needsUpdate = true;
 						rgbmCubeMap.needsUpdate = true;
 
 
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
-
 					} );
 					} );
 
 
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setPixelRatio( window.devicePixelRatio );

+ 6 - 31
examples/webgl_materials_envmaps_hdr_nodes.html

@@ -41,7 +41,6 @@
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 			import { MeshStandardNodeMaterial } from './jsm/nodes/Nodes.js';
 			import { MeshStandardNodeMaterial } from './jsm/nodes/Nodes.js';
 
 
 			var params = {
 			var params = {
@@ -109,20 +108,12 @@
 					.setDataType( THREE.UnsignedByteType )
 					.setDataType( THREE.UnsignedByteType )
 					.load( hdrUrls, function () {
 					.load( hdrUrls, function () {
 
 
-						var pmremGenerator = new PMREMGenerator( hdrCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						hdrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+						var pmremGenerator = new PMREMGenerator( renderer );
+						hdrCubeRenderTarget = pmremGenerator.fromCubemap( hdrCubeMap );
 
 
 						hdrCubeMap.magFilter = THREE.LinearFilter;
 						hdrCubeMap.magFilter = THREE.LinearFilter;
 						hdrCubeMap.needsUpdate = true;
 						hdrCubeMap.needsUpdate = true;
 
 
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
-
 					} );
 					} );
 
 
 				var ldrUrls = [ 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png' ];
 				var ldrUrls = [ 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png' ];
@@ -132,16 +123,8 @@
 
 
 						ldrCubeMap.encoding = THREE.GammaEncoding;
 						ldrCubeMap.encoding = THREE.GammaEncoding;
 
 
-						var pmremGenerator = new PMREMGenerator( ldrCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						ldrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
-
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
+						var pmremGenerator = new PMREMGenerator( renderer );
+						ldrCubeRenderTarget = pmremGenerator.fromCubemap( ldrCubeMap );
 
 
 					} );
 					} );
 
 
@@ -154,20 +137,12 @@
 						rgbmCubeMap.encoding = THREE.RGBM16Encoding;
 						rgbmCubeMap.encoding = THREE.RGBM16Encoding;
 						rgbmCubeMap.format = THREE.RGBAFormat;
 						rgbmCubeMap.format = THREE.RGBAFormat;
 
 
-						var pmremGenerator = new PMREMGenerator( rgbmCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						rgbmCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+						var pmremGenerator = new PMREMGenerator( renderer );
+						rgbmCubeRenderTarget = pmremGenerator.fromCubemap( rgbmCubeMap );
 
 
 						rgbmCubeMap.magFilter = THREE.LinearFilter;
 						rgbmCubeMap.magFilter = THREE.LinearFilter;
 						rgbmCubeMap.needsUpdate = true;
 						rgbmCubeMap.needsUpdate = true;
 
 
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
-
 					} );
 					} );
 
 
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setPixelRatio( window.devicePixelRatio );

+ 2 - 10
examples/webgl_materials_envmaps_pmrem_nodes.html

@@ -41,7 +41,6 @@
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			import {
 			import {
 				StandardNodeMaterial,
 				StandardNodeMaterial,
@@ -74,13 +73,9 @@
 
 
 				nodeTextureSize.value = textureSize;
 				nodeTextureSize.value = textureSize;
 
 
-				var pmremGenerator = new PMREMGenerator( hdrCubeMap, undefined, textureSize / 4 );
-				pmremGenerator.update( renderer );
+				var pmremGenerator = new PMREMGenerator( renderer );
+				hdrCubeRenderTarget = pmremGenerator.fromCubemap( hdrCubeMap );
 
 
-				var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-				pmremCubeUVPacker.update( renderer );
-
-				hdrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
 				nodeTexture.value = hdrCubeRenderTarget.texture;
 				nodeTexture.value = hdrCubeRenderTarget.texture;
 
 
 				hdrCubeMap.magFilter = THREE.LinearFilter;
 				hdrCubeMap.magFilter = THREE.LinearFilter;
@@ -89,9 +84,6 @@
 				planeMesh.material.map = hdrCubeRenderTarget.texture;
 				planeMesh.material.map = hdrCubeRenderTarget.texture;
 				planeMesh.material.needsUpdate = true;
 				planeMesh.material.needsUpdate = true;
 
 
-				pmremGenerator.dispose();
-				pmremCubeUVPacker.dispose();
-
 			}
 			}
 
 
 			function init() {
 			function init() {

+ 3 - 12
examples/webgl_materials_nodes.html

@@ -24,7 +24,6 @@
 			import { TeapotBufferGeometry } from './jsm/geometries/TeapotBufferGeometry.js';
 			import { TeapotBufferGeometry } from './jsm/geometries/TeapotBufferGeometry.js';
 
 
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			import { NodeMaterialLoader, NodeMaterialLoaderUtils } from './jsm/loaders/NodeMaterialLoader.js';
 			import { NodeMaterialLoader, NodeMaterialLoaderUtils } from './jsm/loaders/NodeMaterialLoader.js';
 
 
@@ -70,7 +69,7 @@
 
 
 			}
 			}
 
 
-			var premTexture, pmremCube, pmremGenerator, pmremCubeUVPacker, premSize = 1024;
+			var premTexture, pmremCube, pmremGenerator, premSize = 1024;
 
 
 			function updatePREM( textureCube ) {
 			function updatePREM( textureCube ) {
 
 
@@ -82,24 +81,16 @@
 				var magFilter = pmremCube.magFilter;
 				var magFilter = pmremCube.magFilter;
 				var generateMipmaps = pmremCube.generateMipmaps;
 				var generateMipmaps = pmremCube.generateMipmaps;
 
 
-				pmremGenerator = new PMREMGenerator( pmremCube, undefined, premSize / 4 );
-				pmremGenerator.update( renderer );
-
-				pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-				pmremCubeUVPacker.update( renderer );
+				var pmremGenerator = new PMREMGenerator( renderer );
+				premTexture = pmremGenerator.fromCubemap( pmremCube ).texture;
 
 
 				pmremCube.minFilter = minFilter;
 				pmremCube.minFilter = minFilter;
 				pmremCube.magFilter = magFilter;
 				pmremCube.magFilter = magFilter;
 				pmremCube.generateMipmaps = generateMipmaps;
 				pmremCube.generateMipmaps = generateMipmaps;
 				pmremCube.needsUpdate = true;
 				pmremCube.needsUpdate = true;
 
 
-				premTexture = pmremCubeUVPacker.CubeUVRenderTarget.texture;
-
 				library[ premTexture.uuid ] = premTexture;
 				library[ premTexture.uuid ] = premTexture;
 
 
-				pmremGenerator.dispose();
-				pmremCubeUVPacker.dispose();
-
 			}
 			}
 
 
 			var cubemap = function () {
 			var cubemap = function () {

+ 2 - 11
examples/webgl_materials_physical_clearcoat.html

@@ -22,7 +22,6 @@
 		import { OrbitControls } from './jsm/controls/OrbitControls.js';
 		import { OrbitControls } from './jsm/controls/OrbitControls.js';
 		import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 		import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 		import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 		import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-		import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 		var container, stats;
 		var container, stats;
 
 
@@ -53,13 +52,8 @@
 				.load( [ 'px.hdr', 'nx.hdr', 'py.hdr', 'ny.hdr', 'pz.hdr', 'nz.hdr' ],
 				.load( [ 'px.hdr', 'nx.hdr', 'py.hdr', 'ny.hdr', 'pz.hdr', 'nz.hdr' ],
 					function ( hdrCubeMap ) {
 					function ( hdrCubeMap ) {
 
 
-						var pmremGenerator = new PMREMGenerator( hdrCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						var hdrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+						var pmremGenerator = new PMREMGenerator( renderer );
+						var hdrCubeRenderTarget = pmremGenerator.fromCubemap( hdrCubeMap );
 
 
 						var geometry = new THREE.SphereBufferGeometry( 80, 64, 32 );
 						var geometry = new THREE.SphereBufferGeometry( 80, 64, 32 );
 
 
@@ -160,9 +154,6 @@
 						hdrCubeMap.needsUpdate = true;
 						hdrCubeMap.needsUpdate = true;
 						scene.background = hdrCubeMap;
 						scene.background = hdrCubeMap;
 
 
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
-
 					}
 					}
 
 
 				);
 				);

+ 2 - 11
examples/webgl_materials_physical_transparency.html

@@ -21,7 +21,6 @@
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			var params = {
 			var params = {
 				color: 0xffffff,
 				color: 0xffffff,
@@ -74,20 +73,12 @@
 
 
 				//
 				//
 
 
-				var pmremGenerator = new PMREMGenerator( hdrCubeMap );
-				pmremGenerator.update( renderer );
-
-				var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-				pmremCubeUVPacker.update( renderer );
-
-				hdrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+				var pmremGenerator = new PMREMGenerator( renderer );
+				hdrCubeRenderTarget = pmremGenerator.fromCubemap( hdrCubeMap );
 
 
 				hdrCubeMap.magFilter = THREE.LinearFilter;
 				hdrCubeMap.magFilter = THREE.LinearFilter;
 				hdrCubeMap.needsUpdate = true;
 				hdrCubeMap.needsUpdate = true;
 
 
-				pmremGenerator.dispose();
-				pmremCubeUVPacker.dispose();
-
 				//
 				//
 
 
 				var geometry = new THREE.SphereBufferGeometry( 20, 64, 32 );
 				var geometry = new THREE.SphereBufferGeometry( 20, 64, 32 );

+ 2 - 10
examples/webgl_materials_reflectivity.html

@@ -25,7 +25,6 @@
 			import { OBJLoader } from './jsm/loaders/OBJLoader.js';
 			import { OBJLoader } from './jsm/loaders/OBJLoader.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			var container, stats;
 			var container, stats;
 			var params = {
 			var params = {
@@ -129,20 +128,13 @@
 					.setDataType( THREE.UnsignedByteType )
 					.setDataType( THREE.UnsignedByteType )
 					.load( hdrUrls, function ( hdrCubeMap ) {
 					.load( hdrUrls, function ( hdrCubeMap ) {
 
 
-						var pmremGenerator = new PMREMGenerator( hdrCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						hdrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+						var pmremGenerator = new PMREMGenerator( renderer );
+						hdrCubeRenderTarget = pmremGenerator.fromCubemap( hdrCubeMap );
 
 
 						gemFrontMaterial.envMap = gemBackMaterial.envMap = hdrCubeRenderTarget.texture;
 						gemFrontMaterial.envMap = gemBackMaterial.envMap = hdrCubeRenderTarget.texture;
 						gemFrontMaterial.needsUpdate = gemBackMaterial.needsUpdate = true;
 						gemFrontMaterial.needsUpdate = gemBackMaterial.needsUpdate = true;
 
 
 						hdrCubeMap.dispose();
 						hdrCubeMap.dispose();
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
 
 
 					} );
 					} );
 
 

+ 2 - 11
examples/webgl_materials_standard.html

@@ -22,7 +22,6 @@
 			import { TrackballControls } from './jsm/controls/TrackballControls.js';
 			import { TrackballControls } from './jsm/controls/TrackballControls.js';
 			import { OBJLoader } from './jsm/loaders/OBJLoader.js';
 			import { OBJLoader } from './jsm/loaders/OBJLoader.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			var statsEnabled = true;
 			var statsEnabled = true;
 
 
@@ -107,13 +106,8 @@
 						rgbmCubeMap.encoding = THREE.RGBM16Encoding;
 						rgbmCubeMap.encoding = THREE.RGBM16Encoding;
 						rgbmCubeMap.format = THREE.RGBAFormat;
 						rgbmCubeMap.format = THREE.RGBAFormat;
 
 
-						var pmremGenerator = new PMREMGenerator( rgbmCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						var rgbmCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+						var pmremGenerator = new PMREMGenerator( renderer );
+						var rgbmCubeRenderTarget = pmremGenerator.fromCubemap( rgbmCubeMap );
 
 
 						material.envMap = rgbmCubeRenderTarget.texture;
 						material.envMap = rgbmCubeRenderTarget.texture;
 						material.needsUpdate = true; // is this needed?
 						material.needsUpdate = true; // is this needed?
@@ -122,9 +116,6 @@
 						rgbmCubeMap.needsUpdate = true;
 						rgbmCubeMap.needsUpdate = true;
 						scene.background = rgbmCubeMap;
 						scene.background = rgbmCubeMap;
 
 
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
-
 					} );
 					} );
 
 
 				//
 				//

+ 2 - 11
examples/webgl_materials_variations_physical.html

@@ -21,7 +21,6 @@
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			var container, stats;
 			var container, stats;
 
 
@@ -65,13 +64,8 @@
 					.setDataType( THREE.UnsignedByteType )
 					.setDataType( THREE.UnsignedByteType )
 					.load( hdrUrls, function ( hdrCubeMap ) {
 					.load( hdrUrls, function ( hdrCubeMap ) {
 
 
-						var pmremGenerator = new PMREMGenerator( hdrCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						hdrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+						var pmremGenerator = new PMREMGenerator( renderer );
+						hdrCubeRenderTarget = pmremGenerator.fromCubemap( hdrCubeMap );
 
 
 						// Materials
 						// Materials
 
 
@@ -124,9 +118,6 @@
 						hdrCubeMap.needsUpdate = true;
 						hdrCubeMap.needsUpdate = true;
 						scene.background = hdrCubeMap;
 						scene.background = hdrCubeMap;
 
 
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
-
 					} );
 					} );
 
 
 				function addLabel( name, location ) {
 				function addLabel( name, location ) {

+ 2 - 11
examples/webgl_materials_variations_standard.html

@@ -21,7 +21,6 @@
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			var container, stats;
 			var container, stats;
 
 
@@ -71,13 +70,8 @@
 					.setDataType( THREE.UnsignedByteType )
 					.setDataType( THREE.UnsignedByteType )
 					.load( hdrUrls, function ( hdrCubeMap ) {
 					.load( hdrUrls, function ( hdrCubeMap ) {
 
 
-						var pmremGenerator = new PMREMGenerator( hdrCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						hdrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
+						var pmremGenerator = new PMREMGenerator( renderer );
+						hdrCubeRenderTarget = pmremGenerator.fromCubemap( hdrCubeMap );
 
 
 						var bumpScale = 1;
 						var bumpScale = 1;
 						var cubeWidth = 400;
 						var cubeWidth = 400;
@@ -130,9 +124,6 @@
 						hdrCubeMap.needsUpdate = true;
 						hdrCubeMap.needsUpdate = true;
 						scene.background = hdrCubeMap;
 						scene.background = hdrCubeMap;
 
 
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
-
 					} );
 					} );
 
 
 				function addLabel( name, location ) {
 				function addLabel( name, location ) {

+ 2 - 10
examples/webgl_tonemapping.html

@@ -21,7 +21,6 @@
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { HDRCubeTextureLoader } from './jsm/loaders/HDRCubeTextureLoader.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
-			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
 			import { EffectComposer } from './jsm/postprocessing/EffectComposer.js';
 			import { EffectComposer } from './jsm/postprocessing/EffectComposer.js';
 			import { RenderPass } from './jsm/postprocessing/RenderPass.js';
 			import { RenderPass } from './jsm/postprocessing/RenderPass.js';
@@ -146,18 +145,11 @@
 					.setDataType( THREE.UnsignedByteType )
 					.setDataType( THREE.UnsignedByteType )
 					.load( hdrUrls, function ( hdrCubeMap ) {
 					.load( hdrUrls, function ( hdrCubeMap ) {
 
 
-						var pmremGenerator = new PMREMGenerator( hdrCubeMap );
-						pmremGenerator.update( renderer );
-
-						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
-						pmremCubeUVPacker.update( renderer );
-
-						standardMaterial.envMap = pmremCubeUVPacker.CubeUVRenderTarget.texture;
+						var pmremGenerator = new PMREMGenerator( renderer );
+						standardMaterial.envMap = pmremGenerator.fromCubemap( hdrCubeMap ).texture;
 						standardMaterial.needsUpdate = true;
 						standardMaterial.needsUpdate = true;
 
 
 						hdrCubeMap.dispose();
 						hdrCubeMap.dispose();
-						pmremGenerator.dispose();
-						pmremCubeUVPacker.dispose();
 
 
 					} );
 					} );