فهرست منبع

Merge pull request #19607 from WestLangley/dev_pmrem_refactor

PMREMGenerator: Refactoring
Mr.doob 5 سال پیش
والد
کامیت
3bffaf229d
1فایلهای تغییر یافته به همراه17 افزوده شده و 15 حذف شده
  1. 17 15
      src/extras/PMREMGenerator.js

+ 17 - 15
src/extras/PMREMGenerator.js

@@ -136,11 +136,7 @@ PMREMGenerator.prototype = {
 	 */
 	fromEquirectangular: function ( equirectangular ) {
 
-		equirectangular.magFilter = NearestFilter;
-		equirectangular.minFilter = NearestFilter;
-		equirectangular.generateMipmaps = false;
-
-		return this.fromCubemap( equirectangular );
+		return this._fromTexture( equirectangular );
 
 	},
 
@@ -151,13 +147,7 @@ PMREMGenerator.prototype = {
 	 */
 	fromCubemap: function ( cubemap ) {
 
-		_oldTarget = this._renderer.getRenderTarget();
-		const cubeUVRenderTarget = this._allocateTargets( cubemap );
-		this._textureToCubeUV( cubemap, cubeUVRenderTarget );
-		this._applyPMREM( cubeUVRenderTarget );
-		this._cleanup( cubeUVRenderTarget );
-
-		return cubeUVRenderTarget;
+		return this._fromTexture( cubemap );
 
 	},
 
@@ -223,7 +213,19 @@ PMREMGenerator.prototype = {
 
 	},
 
-	_allocateTargets: function ( equirectangular ) {
+	_fromTexture: function ( texture ) {
+
+		_oldTarget = this._renderer.getRenderTarget();
+		const cubeUVRenderTarget = this._allocateTargets( texture );
+		this._textureToCubeUV( texture, cubeUVRenderTarget );
+		this._applyPMREM( cubeUVRenderTarget );
+		this._cleanup( cubeUVRenderTarget );
+
+		return cubeUVRenderTarget;
+
+	},
+
+	_allocateTargets: function ( texture ) { // warning: null texture is valid
 
 		const params = {
 			magFilter: NearestFilter,
@@ -231,13 +233,13 @@ PMREMGenerator.prototype = {
 			generateMipmaps: false,
 			type: UnsignedByteType,
 			format: RGBEFormat,
-			encoding: _isLDR( equirectangular ) ? equirectangular.encoding : RGBEEncoding,
+			encoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,
 			depthBuffer: false,
 			stencilBuffer: false
 		};
 
 		const cubeUVRenderTarget = _createRenderTarget( params );
-		cubeUVRenderTarget.depthBuffer = equirectangular ? false : true;
+		cubeUVRenderTarget.depthBuffer = texture ? false : true;
 		this._pingPongRenderTarget = _createRenderTarget( params );
 		return cubeUVRenderTarget;