Mr.doob 4 anni fa
parent
commit
b4332dc5f8
3 ha cambiato i file con 62 aggiunte e 18 eliminazioni
  1. 27 8
      build/three.js
  2. 0 0
      build/three.min.js
  3. 35 10
      build/three.module.js

+ 27 - 8
build/three.js

@@ -35807,6 +35807,8 @@
 
 	var _clearColor = /*@__PURE__*/new Color();
 
+	var _backgroundColor = /*@__PURE__*/new Color();
+
 	var _oldTarget = null; // Golden Ratio
 
 	var PHI = (1 + Math.sqrt(5)) / 2;
@@ -35826,6 +35828,14 @@
 	 * interpolate diffuse lighting while limiting sampling computation.
 	 */
 
+	function convertLinearToRGBE(color) {
+		var maxComponent = Math.max(color.r, color.g, color.b);
+		var fExp = Math.min(Math.max(Math.ceil(Math.log2(maxComponent)), -128.0), 127.0);
+		color.multiplyScalar(Math.pow(2.0, -fExp));
+		var alpha = (fExp + 128.0) / 255.0;
+		return alpha;
+	}
+
 	var PMREMGenerator = /*#__PURE__*/function () {
 		function PMREMGenerator(renderer) {
 			this._renderer = renderer;
@@ -36001,19 +36011,27 @@
 			var toneMapping = renderer.toneMapping;
 			renderer.getClearColor(_clearColor);
 			var clearAlpha = renderer.getClearAlpha();
+			var originalBackground = scene.background;
 			renderer.toneMapping = NoToneMapping;
 			renderer.outputEncoding = LinearEncoding;
 			var background = scene.background;
 
-			if (background && background.isColor) {
-				background.convertSRGBToLinear(); // Convert linear to RGBE
+			if (background) {
+				if (background.isColor) {
+					_backgroundColor.copy(background).convertSRGBToLinear();
+
+					scene.background = null;
+					var alpha = convertLinearToRGBE(_backgroundColor);
+					renderer.setClearColor(_backgroundColor);
+					renderer.setClearAlpha(alpha);
+				}
+			} else {
+				_backgroundColor.copy(_clearColor).convertSRGBToLinear();
+
+				var _alpha = convertLinearToRGBE(_backgroundColor);
 
-				var maxComponent = Math.max(background.r, background.g, background.b);
-				var fExp = Math.min(Math.max(Math.ceil(Math.log2(maxComponent)), -128.0), 127.0);
-				background = background.multiplyScalar(Math.pow(2.0, -fExp));
-				var alpha = (fExp + 128.0) / 255.0;
-				renderer.setClearColor(background, alpha);
-				scene.background = null;
+				renderer.setClearColor(_backgroundColor);
+				renderer.setClearAlpha(_alpha);
 			}
 
 			for (var i = 0; i < 6; i++) {
@@ -36039,6 +36057,7 @@
 			renderer.toneMapping = toneMapping;
 			renderer.outputEncoding = outputEncoding;
 			renderer.setClearColor(_clearColor, clearAlpha);
+			scene.background = originalBackground;
 		};
 
 		_proto._textureToCubeUV = function _textureToCubeUV(texture, cubeUVRenderTarget) {

File diff suppressed because it is too large
+ 0 - 0
build/three.min.js


+ 35 - 10
build/three.module.js

@@ -48303,6 +48303,7 @@ const ENCODINGS = {
 const _flatCamera = /*@__PURE__*/ new OrthographicCamera();
 const { _lodPlanes, _sizeLods, _sigmas } = /*@__PURE__*/ _createPlanes();
 const _clearColor = /*@__PURE__*/ new Color();
+const _backgroundColor = /*@__PURE__*/ new Color();
 let _oldTarget = null;
 
 // Golden Ratio
@@ -48335,6 +48336,17 @@ const _axisDirections = [
  * interpolate diffuse lighting while limiting sampling computation.
  */
 
+function convertLinearToRGBE( color ) {
+
+	const maxComponent = Math.max( color.r, color.g, color.b );
+	const fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );
+	color.multiplyScalar( Math.pow( 2.0, - fExp ) );
+
+	const alpha = ( fExp + 128.0 ) / 255.0;
+	return alpha;
+
+}
+
 class PMREMGenerator {
 
 	constructor( renderer ) {
@@ -48510,24 +48522,36 @@ class PMREMGenerator {
 		const toneMapping = renderer.toneMapping;
 		renderer.getClearColor( _clearColor );
 		const clearAlpha = renderer.getClearAlpha();
+		const originalBackground = scene.background;
 
 		renderer.toneMapping = NoToneMapping;
 		renderer.outputEncoding = LinearEncoding;
 
-		let background = scene.background;
-		if ( background && background.isColor ) {
+		const background = scene.background;
+		if ( background ) {
+
+			if ( background.isColor ) {
+
+				_backgroundColor.copy( background ).convertSRGBToLinear();
+				scene.background = null;
 
-			background.convertSRGBToLinear();
-			// Convert linear to RGBE
-			const maxComponent = Math.max( background.r, background.g, background.b );
-			const fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );
-			background = background.multiplyScalar( Math.pow( 2.0, - fExp ) );
-			const alpha = ( fExp + 128.0 ) / 255.0;
-			renderer.setClearColor( background, alpha );
-			scene.background = null;
+				const alpha = convertLinearToRGBE( _backgroundColor );
+				renderer.setClearColor( _backgroundColor );
+				renderer.setClearAlpha( alpha );
+
+			}
+
+		} else {
+
+			_backgroundColor.copy( _clearColor ).convertSRGBToLinear();
+
+			const alpha = convertLinearToRGBE( _backgroundColor );
+			renderer.setClearColor( _backgroundColor );
+			renderer.setClearAlpha( alpha );
 
 		}
 
+
 		for ( let i = 0; i < 6; i ++ ) {
 
 			const col = i % 3;
@@ -48558,6 +48582,7 @@ class PMREMGenerator {
 		renderer.toneMapping = toneMapping;
 		renderer.outputEncoding = outputEncoding;
 		renderer.setClearColor( _clearColor, clearAlpha );
+		scene.background = originalBackground;
 
 	}
 

Some files were not shown because too many files changed in this diff