|
@@ -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;
|
|
|
|
|
|
}
|
|
|
|