Skip to content

Commit

Permalink
PMREMGenerator: More clean up.
Browse files Browse the repository at this point in the history
  • Loading branch information
mrdoob committed Feb 23, 2022
1 parent 8b38389 commit 1db78b8
Showing 1 changed file with 26 additions and 23 deletions.
49 changes: 26 additions & 23 deletions src/extras/PMREMGenerator.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ class PMREMGenerator {
this._sigmas = [];

this._blurMaterial = null;
this._equirectShader = null;
this._cubemapShader = null;
this._cubemapMaterial = null;
this._equirectMaterial = null;

this._compileMaterial( this._blurMaterial );

Expand All @@ -105,10 +105,12 @@ class PMREMGenerator {
_oldTarget = this._renderer.getRenderTarget();

this._setSize( 256 );

const cubeUVRenderTarget = this._allocateTargets();
cubeUVRenderTarget.depthBuffer = true;

this._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );

if ( sigma > 0 ) {

this._blur( cubeUVRenderTarget, 0, 0, sigma );
Expand Down Expand Up @@ -150,10 +152,10 @@ class PMREMGenerator {
*/
compileCubemapShader() {

if ( this._cubemapShader === null ) {
if ( this._cubemapMaterial === null ) {

this._cubemapShader = _getCubemapShader();
this._compileMaterial( this._cubemapShader );
this._cubemapMaterial = _getCubemapMaterial();
this._compileMaterial( this._cubemapMaterial );

}

Expand All @@ -165,10 +167,10 @@ class PMREMGenerator {
*/
compileEquirectangularShader() {

if ( this._equirectShader === null ) {
if ( this._equirectMaterial === null ) {

this._equirectShader = _getEquirectMaterial();
this._compileMaterial( this._equirectShader );
this._equirectMaterial = _getEquirectMaterial();
this._compileMaterial( this._equirectMaterial );

}

Expand All @@ -183,8 +185,8 @@ class PMREMGenerator {

this._dispose();

if ( this._cubemapShader !== null ) this._cubemapShader.dispose();
if ( this._equirectShader !== null ) this._equirectShader.dispose();
if ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();
if ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();

}

Expand Down Expand Up @@ -232,6 +234,7 @@ class PMREMGenerator {
}

_oldTarget = this._renderer.getRenderTarget();

const cubeUVRenderTarget = renderTarget || this._allocateTargets();
this._textureToCubeUV( texture, cubeUVRenderTarget );
this._applyPMREM( cubeUVRenderTarget );
Expand Down Expand Up @@ -334,6 +337,7 @@ class PMREMGenerator {
for ( let i = 0; i < 6; i ++ ) {

const col = i % 3;

if ( col === 0 ) {

cubeCamera.up.set( 0, upSign[ i ], 0 );
Expand All @@ -352,7 +356,9 @@ class PMREMGenerator {
}

const size = this._cubeSize;

_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );

renderer.setRenderTarget( cubeUVRenderTarget );

if ( useSolidColor ) {
Expand Down Expand Up @@ -382,32 +388,33 @@ class PMREMGenerator {

if ( isCubeTexture ) {

if ( this._cubemapShader === null ) {
if ( this._cubemapMaterial === null ) {

this._cubemapShader = _getCubemapShader();
this._cubemapMaterial = _getCubemapMaterial();

}

this._cubemapShader.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;
this._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;

} else {

if ( this._equirectShader === null ) {
if ( this._equirectMaterial === null ) {

this._equirectShader = _getEquirectMaterial();
this._equirectMaterial = _getEquirectMaterial();

}

}

const material = isCubeTexture ? this._cubemapShader : this._equirectShader;
const material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;
const mesh = new Mesh( this._lodPlanes[ 0 ], material );

const uniforms = material.uniforms;

uniforms[ 'envMap' ].value = texture;

const size = this._cubeSize;

_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );

renderer.setRenderTarget( cubeUVRenderTarget );
Expand Down Expand Up @@ -751,7 +758,7 @@ function _getBlurShader( lodMax, width, height ) {

function _getEquirectMaterial() {

const shaderMaterial = new ShaderMaterial( {
return new ShaderMaterial( {

name: 'EquirectangularToCubeUV',

Expand Down Expand Up @@ -788,13 +795,11 @@ function _getEquirectMaterial() {

} );

return shaderMaterial;

}

function _getCubemapShader() {
function _getCubemapMaterial() {

const shaderMaterial = new ShaderMaterial( {
return new ShaderMaterial( {

name: 'CubemapToCubeUV',

Expand Down Expand Up @@ -829,8 +834,6 @@ function _getCubemapShader() {

} );

return shaderMaterial;

}

function _getCommonVertexShader() {
Expand Down

0 comments on commit 1db78b8

Please sign in to comment.