|
|
@@ -116,6 +116,12 @@ class PMREMGenerator {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ get _hasInitialized() {
|
|
|
+
|
|
|
+ return this._renderer.hasInitialized();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Generates a PMREM from a supplied Scene, which can be faster than using an
|
|
|
* image if networking bandwidth is low. Optional sigma specifies a blur radius
|
|
|
@@ -125,6 +131,14 @@ class PMREMGenerator {
|
|
|
*/
|
|
|
fromScene( scene, sigma = 0, near = 0.1, far = 100 ) {
|
|
|
|
|
|
+ if ( this._hasInitialized === false ) {
|
|
|
+
|
|
|
+ console.warn( 'THREE.PMREMGenerator: .fromScene() called before the backend is initialized. Try using .fromSceneAsync() instead.' );
|
|
|
+
|
|
|
+ return this.fromSceneAsync( scene, sigma, near, far );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
_oldTarget = this._renderer.getRenderTarget();
|
|
|
_oldActiveCubeFace = this._renderer.getActiveCubeFace();
|
|
|
_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();
|
|
|
@@ -150,6 +164,14 @@ class PMREMGenerator {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ async fromSceneAsync( scene, sigma = 0, near = 0.1, far = 100 ) {
|
|
|
+
|
|
|
+ if ( this._hasInitialized === false ) await this._renderer.init();
|
|
|
+
|
|
|
+ return this.fromScene( scene, sigma, near, far );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Generates a PMREM from an equirectangular texture, which can be either LDR
|
|
|
* or HDR. The ideal input image size is 1k (1024 x 512),
|
|
|
@@ -157,6 +179,22 @@ class PMREMGenerator {
|
|
|
*/
|
|
|
fromEquirectangular( equirectangular, renderTarget = null ) {
|
|
|
|
|
|
+ if ( this._hasInitialized === false ) {
|
|
|
+
|
|
|
+ console.warn( 'THREE.PMREMGenerator: .fromEquirectangular() called before the backend is initialized. Try using .fromEquirectangularAsync() instead.' );
|
|
|
+
|
|
|
+ return this.fromEquirectangularAsync( equirectangular, renderTarget );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return this._fromTexture( equirectangular, renderTarget );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ async fromEquirectangularAsync( equirectangular, renderTarget = null ) {
|
|
|
+
|
|
|
+ if ( this._hasInitialized === false ) await this._renderer.init();
|
|
|
+
|
|
|
return this._fromTexture( equirectangular, renderTarget );
|
|
|
|
|
|
}
|
|
|
@@ -168,6 +206,22 @@ class PMREMGenerator {
|
|
|
*/
|
|
|
fromCubemap( cubemap, renderTarget = null ) {
|
|
|
|
|
|
+ if ( this._hasInitialized === false ) {
|
|
|
+
|
|
|
+ console.warn( 'THREE.PMREMGenerator: .fromCubemap() called before the backend is initialized. Try using .fromCubemapAsync() instead.' );
|
|
|
+
|
|
|
+ return this.fromCubemapAsync( cubemap, renderTarget );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return this._fromTexture( cubemap, renderTarget );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ async fromCubemapAsync( cubemap, renderTarget = null ) {
|
|
|
+
|
|
|
+ if ( this._hasInitialized === false ) await this._renderer.init();
|
|
|
+
|
|
|
return this._fromTexture( cubemap, renderTarget );
|
|
|
|
|
|
}
|